0%

LitCTFPWN部分ATM题解

** LitCTF PWN部分 ATM题解**

打开vm进行文件类型查看。

打开ida看反汇编代码。

HIWORD是High Word的缩写,作用是取得某个4字节变量(即32位的值)在内存中处于高位的两个字节,即一个word长的数据
LOWORD是Low Word的缩写,作用是取得某个4字节变量(即32位的值)在内存中处于低位的两个字节,即一个word长的数据

无后门,推测使用ret2libc。选项5可以泄露printf的地址,可以直接利用。

本地运行程序后,进入选项3输入后进入选项1发现balance值为乱序。

1
2
3
4
原因:

v5 = (unsigned int)nptr;
此操作将nptr数组的地址转换为无符号整数类型并存储在v5变量中。而正确应该是将用户输入的字符串转换为数字类型才合理。

进入3选项加钱,钱相当于下面选项5的输入长度,使可输入值尽可能大来进行栈溢出。

offse=0x160+0x08

利用ropgadget寻找对应的pop rdi,ret的地址

之后进行64的ROP模板

payload=offset*b‘a’+p64(pop rdi)+p64(binsh)+p64(ret)+p64(system)