有system无binsh字符串处理
无聊打打题,又是我最爱的简单栈溢出
经典32位栈溢出,首先打算使用常规办法试一试
32bit:
system_addr + return_addr + bin_sh_str_addr
64bit:
ret_addr + pop_rdi_ret + bin_sh_str_addr + system_addr
看看程序里面是否存在可调用的函数和字符串
(如果没有也没关系,劫持got表和泄露libc都行,不知道这是啥也没关系,后面有机会的话讲两句)
有system函数但无binsh字符串,看来这题想给我们制造一点小麻烦
翻翻bss段总会有些小惊喜,发现一个变量,那么就好办了
可以利用gets函数来把/bin/sh字符串传入变量buf2,然后system后面接返回地址后再接上buf2的地址
payload 构造如下:
payliad = [填充字符] + [gets] +[buff2] + [system] + [_start] + [buff2] # 构造好后养成一个好习惯,返回地址填充为 _start的地址
如果是64位程序可以: