对于一个刚入门的三个月的菜鸡pwn手打算按照难度慢慢复现qwb的题目

先simpleinterpreter吧
第七届强网杯-PWN-【simpleinterpreter】-LMLPHP

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
03-21 11:43