Pwnable.kr simple login

Pwnable.kr simple login程序的逻辑是,首先输入s,最大三十个字节(这里没有溢出),然后base64解密,解密后的明文存在v4,长度存在v6,
后面判断v6不能大于12,判断成功后将v4复制到input变量,,之后进入auth函数

Pwnable.kr simple login
auth函数第一句的memcpy感觉就很突兀,把input复制给v4(这是autn里的v4),后面根本没有用到v4,从这个角度看这句话应该也有点问题,,,
因为前面判断了,所以input里面的内容长度不会大于12,最多十二,而v4在栈里面的位置也是,十二字节以后就是auth函数返回地址

Pwnable.kr simple login
这是v4的12个字节,我输入了123456的base64编码,他是这么存放的


之前没有遇到过这样的,都是控制返回地址,这次没法覆盖返回地址,可以控制esp和ebp

首先之前没有很好理解leave和ret两个汇编代码

leave:
mov esp,ebp
pop ebp

ret: pop eip

Pwnable.kr simple login

这样布置栈的话,就会跳到system函数,
但是对方机器肯定开启了aslr,所以堆栈地址是随机的,就把上面画的指针指向input就行了,input和v4是一样的

Pwnable.kr simple login