20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行
2017-03-12 21:10
357 查看
20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行
实验原理
关于ShellCode:ShellCode是一段代码,作为数据发送给受攻击服务器,是溢出程序和蠕虫病毒的核心,一般可以获取权限。我们将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出漏洞,覆盖成为指向ShellCode的地址。Linux中两种基本构造攻击buf:
retaddr+nop+shellcode,
nop+shellcode+retaddr,缓冲区小就把shellcode放后面,若缓冲区较大把缓冲区放置前边。
实验目的与要求
本次实践对象是一个名为pwn1的可执行文件。对可执行文件pwn1进行操作,注入并运行任意代码。
实验过程及结果
写一段shellcode代码(本次实验采用老师的代码)设置环境,手动安装execstack
拷贝并运行pwn1文件确保可以使用
设置堆栈可执行
关闭地址随机化,more/proc/sys/kernel/randomizevaspace用来查询地址随机化是否开启或者关闭的状态,2表示开启,0表示关闭。
构造payload,采用nop+shellcode+retaddr方式(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)
打开一个新的terminal,注入攻击注入攻击buf(注意回车要在设置断点后进行,否则无法确认进程号,并且要在gdb执行c前回车)
-用GDB调试20145335hh1进程,找到进程3400,用attach追踪
启动gdb调试进程,设置断点,查看注入 buf的内存地址
此时发现0x080484ae ret 就跳到我们覆盖的retaddr那个地方了
设置断点后,在另一个终端按下回车,并寻找返回地址,看到01020304表示返回地址的位置是0xffffd31c,shellcode就紧挨着这个地址,加四字节为0xffffd320
退出gdb,按照anything+retaddr+nops+shellcode修改input_shellcode如下打印字母'H',完成实验。
心得体会
本次实验老师在课堂上也有讲到过,但是在自己实验过程中还是遇到问题,比如在最后一步输入命令的时候遇到了问题,在命令perl -e 'print "H" x 32;print "\x20\xd3\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode和命令
(cat input_shellcode;cat) | ./20145335hh1时候两个shellcode输入错误,导致修改的是一段代码,注入又是另一段代码导致最后结果出现了问题,及时更正了过来完成了实验
相关文章推荐
- 逆向与BOF基础——注入shellcode并执行&Return-to-libc
- 20145335郝昊《网络对抗》逆向及Bof基础实践
- 20145335郝昊《网络攻防》Exp4 Msf基础
- 20145214《网络攻防》逆向及Bof基础实践
- 20155306 白皎 《网络攻防》Exp1 PC平台逆向破解——逆向与Bof基础
- 20145335郝昊《网络攻防》Exp9 Web安全基础实践
- 20145311王亦徐《网络对抗技术》MAL_逆向与Bof基础
- 20145238-荆玉茗 《网络对抗》-逆向及Bof基础实践
- 20145319 《网络对抗》逆向与Bof基础
- 20145330 《网络对抗》逆向及BOF基础实践
- 20145320《网络对抗》逆向及Bof基础实践
- 20145328 《网络对抗技术》逆向及Bof基础实践
- 20145211《网络对抗》逆向及BOF基础实践
- 20145204《网络对抗》逆向及bof基础实践
- 20145226夏艺华 逆向及Bof基础实践
- 20145215卢肖明《网络对抗》逆向及Bof基础
- 20145334赵文豪《网络对抗》-逆向及Bof基础实践
- 20145208蔡野 《网络对抗》逆向及BOF基础实践
- 《网络对抗》——逆向及Bof基础实践
- 20145206邹京儒《网络对抗》逆向及Bof基础实践