主页> seo教程> 【北京seo实战】一步一步学ROP之gadgets和2free篇 蒸米
ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术,可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。上次我们主要讨论了linux_x64的ROP攻击。
一步一步学ROP之linux_x86篇
一步一步学ROP之linux_x64篇
在这次的教程中我们会带来通用gadgets和堆漏洞利用的技巧,欢迎大家继续学习。
另外文中涉及代码可在我的github下载:https://github.com/zhengmin1989/ROP_STEP_BY_STEP
0x01 通用 gadgets part2上次讲到了__libc_csu_init()的一条万能gadgets,其实不光__libc_csu_init()里的代码可以利用,默认gcc还会有如下自动编译进去的函数可以用来查找gadgets。
_init _start call_gmon_start deregister_tm_clones register_tm_clones __do_global_dtors_aux frame_dummy __libc_csu_init __libc_csu_fini _fini除此之外在程序执行的过程中,CPU只会关注于PC指针的地址,并不会关注是否执行了编程者想要达到的效果。因此,通过控制PC跳转到某些经过稍微偏移过的地址会得到意想不到的效果。
比如说说我们反编译一下__libc_csu_init()这个函数的尾部:
gdb-peda$ disas __libc_csu_init Dump of assembler code for function __libc_csu_init: …… 0x0000000000400606 <+102>: movrbx,QWORD PTR [rsp+0x8] 0x000000000040060b <+107>: movrbp,QWORD PTR [rsp+0x10] 0x0000000000400610 <+112>: mov r12,QWORD PTR [rsp+0x18] 0x0000000000400615 <+117>: mov r13,QWORD PTR [rsp+0x20] 0x000000000040061a <+122>: mov r14,QWORD PTR [rsp+0x28] 0x000000000040061f <+127>: mov r15,QWORD PTR [rsp+0x30] 0x0000000000400624 <+132>: add rsp,0x38 0x0000000000400628 <+136>: ret可以发现我们可以通过rsp控制r12-r15的值,但我们知道x64下常用的参数寄存器是rdi和rsi,控制r12-r15并没有什么太大的用处。不要慌,虽然原程序本身用是为了控制r14和r15寄存器的值。如下面的反编译所示:
gdb-peda$ x/5i 0x000000000040061a 0x40061a <__libc_csu_init+122>: mov r14,QWORD PTR [rsp+0x28] 0x40061f <__libc_csu_init+127>: mov r15,QWORD PTR [rsp+0x30] 0x400624 <__libc_csu_init+132>: add rsp,0x38 0x400628 <__libc_csu_init+136>: ret但是我们如果简单的对pc做个位移再反编译,我们就会发现esi和edi的值可以被我们控制了!如下面的反编译所示:
gdb-peda$ x/5i 0x000000000040061b 0x40061b <__libc_csu_init+123>: movesi,DWORD PTR [rsp+0x28] 0x40061f <__libc_csu_init+127>: mov r15,QWORD PTR [rsp+0x30] 0x400624 <__libc_csu_init+132>: add rsp,0x38 0x400628 <__libc_csu_init+136>: ret 0x400629: nop DWORD PTR [rax+0x0] gdb-peda$ x/5i 0x0000000000400620 0x400620 <__libc_csu_init+128>: movedi,DWORD PTR [rsp+0x30] 0x400624 <__libc_csu_init+132>: add rsp,0x38 0x400628 <__libc_csu_init+136>: ret 0x400629: nop DWORD PTR [rax+0x0] 0x400630 <__libc_csu_fini>: repz ret虽然edi和esi只能控制低32位的数值,但已经可以满足我们的很多的rop需求了。
除了程序默认编译进去的函数,如果我们能得到libc.so或者其他库在内存中的地址,就可以获得到大量的可用的gadgets。比如上一篇文章中提到的通用gadget只能控制三个参数寄存器的值并且某些值只能控制32位,如果我们想要控制多个参数寄存器的值的话只能去寻找其他的gadgets了。这里就介绍一个_dl_runtime_resolve()中的gadget,通过这个gadget可以控制六个64位参数寄存器的值,当我们使用参数比较多的函数的时候(比如mmap和mprotect)就可以派上用场了。
我们把_dl_runtime_resolve反编译可以得到:
0x7ffff7def200 <_dl_runtime_resolve>: sub rsp,0x38 0x7ffff7def204 <_dl_runtime_resolve+4>: mov QWORD PTR [rsp],rax 0x7ffff7def208 <_dl_runtime_resolve+8>: mov QWORD PTR [rsp+0x8],rcx 0x7ffff7def20d <_dl_runtime_resolve+13>: mov QWORD PTR [rsp+0x10],rdx 0x7ffff7def212 <_dl_runtime_resolve+18>: mov QWORD PTR [rsp+0x18],rsi 0x7ffff7def217 <_dl_runtime_resolve+23>: mov QWORD PTR [rsp+0x20],rdi 0x7ffff7def21c <_dl_runtime_resolve+28>: mov QWORD PTR [rsp+0x28],r8 0x7ffff7def221 <_dl_runtime_resolve+33>: mov QWORD PTR [rsp+0x30],r9 0x7ffff7def226 <_dl_runtime_resolve+38>: movrsi,QWORD PTR [rsp+0x40] 0x7ffff7def22b <_dl_runtime_resolve+43>: movrdi,QWORD PTR [rsp+0x38] 0x7ffff7def230 <_dl_runtime_resolve+48>: call 0x7ffff7de8680 <_dl_fixup> 0x7ffff7def235 <_dl_runtime_resolve+53>: mov r11,rax 0x7ffff7def238 <_dl_runtime_resolve+56>: mov r9,QWORD PTR [rsp+0x30] 0x7ffff7def23d <_dl_runtime_resolve+61>: mov r8,QWORD PTR [rsp+0x28] 0x7ffff7def242 <_dl_runtime_resolve+66>: movrdi,QWORD PTR [rsp+0x20] 0x7ffff7def247 <_dl_runtime_resolve+71>: movrsi,QWORD PTR [rsp+0x18] 0x7ffff7def24c <_dl_runtime_resolve+76>: movrdx,QWORD PTR [rsp+0x10] 0x7ffff7def251 <_dl_runtime_resolve+81>: movrcx,QWORD PTR [rsp+0x8] 0x7ffff7def256 <_dl_runtime_resolve+86>: movrax,QWORD PTR [rsp] 0x7ffff7def25a <_dl_runtime_resolve+90>: add rsp,0x48 0x7ffff7def25e <_dl_runtime_resolve+94>: jmp r11- 2019-12-10 【seo教程】哈尔滨啤酒:量身定制
- 2020-02-06 【seo培训】淘宝颠覆潮流玩杂志
- 2019-11-21 【北京seo网】【虎林网】网站降权
- 2019-11-11 【搜索引擎优化】网络销售技巧分
- 2020-08-11 【北京seo教程】【不二之选】天津
- 2020-01-30 【北京seo】成年人的童话品牌——
- 2020-05-18 【北京seo】SEO核心技术纯白帽快速
- 2019-06-19 企业如何提升网站质量,吸引有效
- 2019-12-04 【北京seo实战】百度seo优化,怎样
- 2019-12-27 【北京seo教程】 如何给手机网站
- 2020-07-20 【北京seo营销】seo教程搜索引擎优
- 2020-03-24 【seo教程】seo实战,网站营销se
- 2019-11-28 【北京seo网】北京网络营销平台
- 2020-05-13 【seo营销】喜来健cms:网站主页、
- 2020-04-22 【北京seo】郑州网络营销:做网站
- 2019-11-11 【搜索引擎优化】朋友圈营销?小
- 2020-05-09 【北京seo实战】黑帽SEO培训:详解
- 2020-01-07 【seo技术】【南宁seo】南宁seo,网
- 2020-03-18 【搜索引擎优化】常见的SEO作弊手
- 2019-12-04 【seo教程】无锡seo,SEO优化一定要
- 2020-06-11 【北京seo网】《资阳seo》别信这些
- 2020-02-28 【seo是什么】【网站优化】移动互
- 2019-12-13 【北京seo营销】 淄博网站换服务
- 2019-05-16 影响网站SEO优化的因素有哪些?
- 2019-11-22 【seo营销】一点资讯:记述×技术
- 2019-11-30 【北京网站优化】美容O2O如何抓住
- 2019-11-15 【seo工具】轻松掌握seo技术,让网
- 2019-12-21 【seo工具】【济宁SEO】怎么用软文
- 2019-11-25 【北京seo网】从“跑2”到“跑3”
- 2019-05-14 seo经验分享:网站突然降权怎么办
- 2019-05-18 【SEO教程】SEO优化入门基础知识点
- 2019-06-07 SEO优化研究搜索引擎底层的人越来
- 2019-10-09 【seo工具】「百度seo排名软件」静
- 2019-10-17 【seo营销】「seo云优化」镇江网站
- 2019-10-21 【seo优化】「柴叔seo」官网营销之
- 2019-10-22 【搜索引擎优化】「seo案例分析」
- 2019-11-04 【seo营销】「seo培训班」推广小软
- 2019-11-10 【seo培训】手机跑分软件哪个好?
- 2019-11-13 【北京seo实战】卡巴斯基免费版好
- 2019-11-19 【seo教程】五四青年节活动实施方
- 2019-11-19 【搜索引擎优化】本年度最会借势
- 2019-11-19 【北京seo平台】百度糯米代金券怎
- 2019-11-19 【seo培训】投资一定要懂得权衡取
- 2019-11-20 【seo教程】简略的SEO大神卡位式走
- 2019-11-20 【seo教程】有些运营得很差的网站
- 2019-11-22 【北京seo教程】北京网络营销课程
- 2019-11-22 【搜索引擎优化】【网站seo】其实
- 2019-11-23 【北京seo教程】AI是屠龙宝刀,所
- 2019-11-25 【北京网站优化】“虎翼”计划尚
- 2019-11-25 【怎么做seo】电商行业都会用的营
- 2019-11-28 【怎么做seo】【搜索引擎大全】搜
- 2019-11-29 【北京seo营销】易到用车为4S店创
- 2019-12-01 【怎么做seo】微信VS微博:商业化
- 2019-12-05 【seo技术】 江门如何提高网站的
- 2019-12-06 【seo营销】百度seo优化排名小技巧
- 2019-12-07 【seo工具】浅谈商城网站该如何优
- 2019-12-07 【北京seo教程】 中山为什么网站
- 2019-12-08 【北京seo实战】传统企业如何迈向
- 2019-12-10 【seo工具】中粮病毒式营销背后隐
- 2019-12-10 【北京seo】 昆明如何设置网站的
- 2021-02-15 【seo教程】其他服务商网络推广有
- 2021-02-04 【北京seo教程】重庆市引擎优化
- 2021-02-03 【北京seo实战】2016年第六届中国
- 2021-01-26 【搜索引擎优化】内蒙古呼和浩特
- 2021-01-13 【北京seo实战】大连网络推广解析
- 2021-01-06 【seo培训】if语句基础知识【每日
- 2020-12-13 【seo技术】大连如何优化网络排名
- 2020-11-22 【北京seo实战】[新车实拍]上汽荣
- 2020-11-18 【seo培训】郑州UI设计培训价格
- 2020-10-01 【北京seo营销】李海港:东风标致
- 2020-09-22 【seo是什么】SEO.CN何心解读百度近
- 2020-09-21 【seo教程】【优秀】海南网站优化
- 2020-09-20 【北京seo网】数据周报之南方洪水
- 2020-09-18 【seo培训】太原seo引擎推广包年多
- 2020-09-02 【北京seo】【优质服务】seo网络排
- 2020-08-27 【seo培训】认准!天津哪家做网站
- 2020-08-27 【seo培训】推荐之二:滁州网站的
- 2020-08-23 【seo培训】【好口碑】天津公司网
- 2020-08-20 【seo优化】认准!天津如何网络营
- 2020-08-19 【seo教程】缉毒先锋 第8集
- 2020-08-14 【seo是什么】俄居民楼燃气爆炸离
- 2020-08-14 【seo工具】上市公司网站新技术应
- 2020-08-14 【怎么做seo】HIBOR检讨提五大机制
- 2020-08-11 【seo培训】【好口碑】网络全网营
- 2020-08-10 【北京seo平台】推荐之二:北京公
- 2020-08-07 【seo营销】揭秘!魏则西之死背后
- 2020-08-05 【seo是什么】梦百合与阿里巴巴
- 2020-08-03 【北京网站优化】云网教你网站本
- 2020-08-02 【北京seo实战】上海在线学习新媒
- 2020-08-01 【北京seo实战】外汇蜡烛图如何快
- 标签列表
-