babyROP--ret2libc
记录一下构造ROP链的思路
ctf_wiki_basic-rop
ret2libc1 文件下载
填充padding到ebp,返回到plt表中system地址,exit()为padding,’/bin/sh‘为system函数参数
‘system_addr:gdb中的plt表
b'/bin/sh':ROPgadget 中对string搜索 OR IDA shift+f12
exit():填充4字节即可
ret2libc2 文件下载
相比ret2libc1这道题没有‘/bin/sh’字符,所以调用gets函数读入‘/bin/sh’字符
buf_addr的选取:gdb中vmmap,.rodata数据中有写权限,用x/40wx $addr 查看到内存中内容为0(若写入到内存中有意义的地方可能导致出错)
若要连续执行多个函数(两个以上),需要以此种方式构建ROP链
ret2libc3 下载
相比2,没有直接的system系统调用。这里需要泄露libc地址,以此来得到system地址