我正在尝试通过CTF(捕获标志)分配进行学习,出于记录,这不是一个活跃的ctf,但是我正在使用它来学习在成为真正的ctf之前可以学到的东西
在此特定任务中,我需要从基于堆栈的自定义虚拟机的bin文件中获得的汇编代码中获取标记
但是无论我尝试输入什么内容或尝试从哪里开始,我都无法获得任何看起来像标志的东西
我觉得我对一切工作原理有了很好的了解,但仍然坐在上面一会儿,并没有真正找到像这样的任务来尝试看看我所缺少的东西,所以也许有人会能够帮助我看到我错过的东西,或者告诉我应该学习什么以及在哪里了解为了了解这里发生的事情
这是用于操作码和说明的,如果不需要说明,请向下滚动到操作码: https://pastebin.com/hgKKkDzC
这是汇编代码:
0x00: push 0x15
0x01: push 0x68
0x02: push 0x0f
0x03: push 0x61
0x04: push 0x08
0x05: push 0x64
0x06: push 0x08
0x07: push 0x67
0x08: push 0x35
0x09: push 0x52
0x0a: push 0x3c
0x0b: push 0x55
0x0c: push 0x39
0x0d: push 0x55
0x0e: push 0x3a
0x0f: push 0x68
0x10: push 0x0f
0x11: push 0x61
0x12: push 0x08
0x13: push 0x64
0x14: push 0x08
0x15: push 0x67
0x16: push 0x35
0x17: push 0x52
0x18: push 0x3c
0x19: push 0x55
0x1a: push 0x39
0x1b: push 0x55
0x1c: push 0x3a
0x1d: push 0x68
0x1e: push 0x3a
0x1f: push 0x55
0x20: push 0x0d
0x21: push 0x76
0x22: push 0x11
0x23: push 0x70
0x24: push 0x1c
0x25: push 0x7a
0x26: push 0x0b
0x27: jse
0x28: read
0x29: push 0x0c
0x2a: call
0x2b: load 0x01
0x2c: push 0x0a
0x2d: push 0x00
0x2e: sub
0x2f: cje
0x30: push 0x30
0x31: push 0x01
0x32: jmp
0x33: push 0x31
0x34: write
0x35: push 0x2f
0x36: jmp
0x37: load 0x02
0x38: load 0x02
0x39: push 0x00
0x3a: push 0x25
0x3b: cje
0x3c: load 0x02
0x3d: swap 0x01
0x3e: push 0x00
0x3f: push 0x20
0x40: cje
0x41: push 0x00
0x42: swap 0x01
0x43: load 0x04
0x44: push 0x1b
0x45: cje
0x46: pop
0x47: push 0x02
0x48: load 0x02
0x49: div
0x4a: push 0x02
0x4b: load 0x05
0x4c: div
0x4d: swap 0x01
0x4e: swap 0x02
0x4f: add
0x50: push 0x02
0x51: swap 0x01
0x52: div
0x53: swap 0x01
0x54: pop
0x55: load 0x02
0x56: load 0x02
0x57: push 0x24
0x58: push 0x00
0x59: sub
0x5a: call
0x5b: push 0x02
0x5c: mul
0x5d: add
0x5e: swap 0x02
0x5f: pop
0x60: pop
0x61: swap 0x03
0x62: pop
0x63: swap 0x01
0x64: pop
0x65: ret