ROP 2

发布日期:2019年02月12日 类别:pwn 题目来源:picoctf-2013 题目链接:https://github.com/picoCTF/picoCTF-2013-problems/tree/master/ROP%202

这是 ROP 1 的进阶版。not_called 不再直执行 /bin/bash

点击此处显示 Writeup
点击此处隐藏 Writeup

由于 not_called 不再直接调用 system("/bin/bash"),我们需要修改传入 system 的参数。system 只接受一个参数,对于 32 位程序来说,当我们调用 system 时,栈顶的数据就会被传入 system

考虑到 vulnerable_function 没有参数,那么在函数返回后,esp 就会变为当前 ebp + 4,也就是返回地址再下面 4 个字节。所以只要我们把 not_used 的地址写到返回地址的下方,再直接调用 call system 就可以了。

首先看一下 not_usedcall system 一句的地址:

我们就直接返回到 0x080484b1 即可;再看一下 not_used 字符串的地址:

[0x080483f0]> iz
000 0x00000610 0x08048610   9  10 (.rodata) ascii /bin/bash
001 0x0000061a 0x0804861a   9  10 (.rodata) ascii /bin/date
002 0x00000624 0x08048624  13  14 (.rodata) ascii Hello, World\n

地址是 0x08048610。因此构造一下输入:

就可以了。

dontpan1c 的 CTF 笔记
南阳一出即相,淮阴一出即将。

知识共享许可协议

本站所有作品均采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本站不包含明令禁止公开解题过程的题目。

本站由 Jekyll 强力驱动。