SKSEC 2019 pwn1
# pwn11、将程序拖入IDA,找到主函数,按F5查看伪代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191117221156742.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw==,size_16,color_FFFFFF,t_70)
2、程序的执行流程是通过gets()函数输入变量v4,如果变量v5等于440039336819(这是一个字符串,可以选中后,按r键,查看反向的字符串),则执行backdoor()函数
3、进入backdoor()函数,可以发现函数返回了system("/bin/sh")
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191117221724843.png)
4、我们想到可以通过覆盖变量的方式来达到控制程序执行流程的目的,首先计算出变量v4和变量v5的地址差,即0x20-0x08=0x18(==注意是十六进制的!!!==),0x18转换成十进制也就是24。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191117222231488.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw==,size_16,color_FFFFFF,t_70)
5、payload就是计算出的两个变量的地址之差乘以任意字符,再加上字符串skctf
```python
payload = 'a'*24+'skctf'
```
6、漏洞利用脚本如下:
```python
from pwn import *
p=process('./pwn1')
payload='a'*24+'skctf'
p.sendline(payload)
p.interactive()
``` 非常感谢楼主的分享
能分享程序不? :lol学长出的入门好题。 学习学习! 学习,感谢楼主分享 厉害,支持一下 感谢分享 楼主还有其他的题目吗?想多学一点
感谢分享!
页:
[1]
2