GWHT_pwn
2017-11-01 本文已影响25人
cceb9d5a8577
第一题:
先把下载好的文件扔到ida
![](https://img.haomeiwen.com/i1731834/1820759cdead6f5b.png)
然后F5
![](https://img.haomeiwen.com/i1731834/53dcd240d79b5de2.png)
![](https://img.haomeiwen.com/i1731834/185aae77c84d5752.png)
![](https://img.haomeiwen.com/i1731834/1b1dffdbb854ca2b.png)
从反汇编的代码来看,read函数读取100个字节的内容给buf,而buf的大小只有10h(16个字节),所以应该是可以利用进行溢出的,然后又发现bingo函数可以实现读取flag,但是main中没有对bingo函数进行调用,因此我的思路就是利用栈溢出,去覆盖vuln函数的返回地址,让他跳转到去执行bingo函数从而取出flag
![](https://img.haomeiwen.com/i1731834/9f7094ea770acf2a.png)
![](https://img.haomeiwen.com/i1731834/916816f8324549c7.png)
然后通过分析需要用于覆盖的payload和bingo函数的地址,输入到linux的命令界面去
(python -c 'print "A" *(0x10+8) +"x\36x\06\40"')
注意函数的地址要采用小端输入
![](https://img.haomeiwen.com/i1731834/0fedf705c45e92b6.png)