这道题是format string。步骤还是那样:
- 输入一连串A,跟上一连串%x,由41的位置发现输入字符串是从第6个参数开始
- 把shellcode导入环境变量,打印EBP地址进而得到返回地址
- 将返回地址byte by byte作为输入字符串的起始,然后用%mx来填充调整已输出字符个数,用%m$hhn改写相应的byte,使返回地址最终指向shellcode
这道题有两个注意的地方
- 用的shellcode还是读文件的,invoke sh后什么都没发生,invoke bash会直接seg fault
- $在perl是特殊字符,所以用perl输入时要将其转义为\$