** LitCTF PWN部分 ATM题解**
打开vm进行文件类型查看。
打开ida看反汇编代码。
HIWORD是High Word的缩写,作用是取得某个4字节变量(即32位的值)在内存中处于高位的两个字节,即一个word长的数据
LOWORD是Low Word的缩写,作用是取得某个4字节变量(即32位的值)在内存中处于低位的两个字节,即一个word长的数据
无后门,推测使用ret2libc。选项5可以泄露printf的地址,可以直接利用。
本地运行程序后,进入选项3输入后进入选项1发现balance值为乱序。
1 | 原因: |
进入3选项加钱,钱相当于下面选项5的输入长度,使可输入值尽可能大来进行栈溢出。
offse=0x160+0x08
利用ropgadget寻找对应的pop rdi,ret的地址
之后进行64的ROP模板
payload=offset*b‘a’+p64(pop rdi)+p64(binsh)+p64(ret)+p64(system)