对于一个刚入门的三个月的菜鸡pwn手打算按照难度慢慢复现qwb的题目
先simpleinterpreter吧
simpleinterpreter libc 2.27
逆向
解释器相关用到的陌生函数
法1
方法1参考链接
程序实现了一个 C 语言解释器,可用的关键字如下:
char else enum if int return sizeof while read close printf malloc free memset memcmp exit void main
read close printf malloc free memset memcmp exit 和原生C 函数效果一样
可以尝试一下&和*操作是否存在,存在利用那么更方便
漏洞就是越界,首先用 malloc 一个超大堆块分配到 mmap 内存,然后越界写 libc,将 free_hook 覆盖为 system 地址,然后释放”/bin/sh”即可 getshell(libc 版本是 2.27)
本地好像不行,得到的地址由mmap的第几次得到没有确定下来,导致与基地址偏移无法确定,但是第几次mmap的范围有限,所以如果不断尝试可能成功
该法对应的输入代码如下
main(){
int size;
char* freehook;
char* system;
char* v;
char *binsh;
size = 204800;
binsh="/bin/sh";
v=malloc(size);
freehook