20144303石宇森《网络对抗》PC平台逆向破解

实验1:shellcode注入

实验基础

1、Linux下有两种基本构造攻击buf的方法:retaddr+nop+shellcodenop+shellcode+retaddr。我们采用anything+retaddr+nops+shellcode的方法。

2、实验的目标是找到返回地址的位置和shellcode的地址。然后通过修改返回地址使其自动执行shellcode

3、实验前通过命令:apt-get install exestack安装exestack

4、修改一些设置:

root@KaliYL:~# execstack -s pwn1//设置堆栈可执行
root@KaliYL:~# execstack -q pwn1//查询文件的堆栈是否可执行
X pwn1
root@KaliYL:~# more /proc/sys/kernel/randomize_va_space
2
root@KaliYL:~# echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
root@KaliYL:~# more /proc/sys/kernel/randomize_va_space
0

实验步骤

1、先用cp复制一个新的pwn1文件

2、修改设置

3、构造一个shellcode作为输入

4、打开一个新的端口,用命令:(cat input_shellcode; cat) > ./20145221pwn1注入这段攻击并执行文件

5、开启另一个终端,输入ps -ef | grep ./20144303,查看进程的UID

6、进入gdb模式,然后输入attach UID与进程进行连接

7、输入命令disassemble foo对foo函数进行反汇编

8、在ret处设置一个断点

9、在端口下按回车执行一下程序,在gdb中输入c

10、查看此时寄存器esp中的值,这个地址就是函数的返回地址

11、输入quit退出gdb模式

12、重新构造shellcode,将01020304修改为shellcode的首地址0xffffd340

13、用xxd input_shellcode查看输入

14、再次执行程序,完成攻击

实验2:Return-to-libc攻击

实验步骤:

1、输入sudo apt-get update来更新软件源

2、使用命令sudo apt-get install lib32z1 libc6-dev-i386安装软件

3、进入linux32位环境,然后将地址随机化关闭

4、进入bin目录下,通过命令ln -s zsh sh将zsh指向sh

5、在tmp目录下,编译20144303retlib.c。retlib是一个漏洞程序,在fread函数中把40字节的badfile中的数据读取到了buffer里。但buffer只有12字节。所以会造成缓冲区溢出。

在编译retlib.c时,把这个程序设置为 SET-ROOT-UID 程序,程序的所有者就拥有了root权限

6、编译20144303getenvaddr.c。这个程序是用来读取环境变量的

7、编译20144303exploit.c。该程序用来进行攻击

8、用读取环境变量的函数20144303getenvaddr来获得BIN_SH的地址

9、在gdb中获取system和exit的地址分别为0xf7e2eb300xf7e227e0

10、修改攻击函数20144303exploit.c中的三个地址的值。然后将之前编译生成的文件和运行生成的badfile文件删掉。重新编译执行。

11、先执行程序20144303exploit,再执行20144303retlib。完成攻击,获得了root权限。

实验过程中遇到的问题:

1、在安装lib32readline-gplv2-dev时,出现了错误。但是对后面的实验没有什么影响....

2、第一遍做实验时,通过getenvaddr函数获取BIN_SH的地址时出现了错误。得到的BIN_SH的地址为0x8,所以最后实验失败。

后来重新检查了代码,发现漏洞程序retlib中出现了错误,修改后再次编译,查看BIN_SH的值就正确了。

感想反思

本次两个实验都是在关闭了地址随机化的前提下完成的,比较好奇假如不能关闭计算机的地址随机化,又该怎样进行攻击呢?另外,虽然完成了实验,得到了实验结果,但是对三个程序的代码还不是很理解。接下来会对这些东西进行研究。路漫漫求修远兮吾将上下而求索

20144303石宇森《网络对抗》注入shellcode和Return-to-libc攻击的更多相关文章

  1. 20144303石宇森《网络对抗》Web安全基础实践

    20144303石宇森<网络对抗>Web安全基础实践 实验后问题回答 SQL注入攻击原理,如何防御: SQL攻击时通过在输入框中输入语句,构造出SQL命令,把这段命令注入到表单中,让后台的 ...

  2. 20144303石宇森 《网络对抗》 WEB基础实践

    20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...

  3. 20144303石宇森《网络对抗》MSF基础应用

    20144303石宇森<网络对抗>MSF基础应用 实验后回答问题 一.解释什么是exploit,payload,encode: 我认为exploit就是一个简单的攻击指令,就是对配置所有设 ...

  4. 20144303石宇森《网络对抗》逆向及Bof基础

    20144303石宇森<网络对抗>逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...

  5. 20144303石宇森 《Java程序设计》第2周学习总结

    ---恢复内容开始--- 20144303 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型: 1.Java可以区分为基本类型和类类型.类类型也称作参考类型. 2.Java中 ...

  6. 20145215《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145215<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻 ...

  7. 20145227鄢曼君《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145227鄢曼君<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode注入实践 shellcode基础知识 Shellcode实际是一段 ...

  8. 20145317《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145317<网络对抗>shellcode注入&Return-to-libc攻击深入 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻 ...

  9. 20145208 蔡野《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145208 蔡野<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode的获取代码 我使用了许心远同学博客中的代码 ...

随机推荐

  1. 通过qemu复现路由器漏洞

    目录 简介 环境搭建 固件解包 复现漏洞,IDA调试 参考资料 简介 qemu和vmware一样,一种虚拟机软件,只不过qemu能够虚拟的平台更加丰富一些.能够虚拟很多嵌入式平台的设备. 工作上需要向 ...

  2. es新增字段,并设置默认值

    重新设置mapping 添加新的字段. 设置es允许脚本执行:elasticsearch.yml script.inline: true 然后执行脚本 POST linewell_assets_mgt ...

  3. pycharm 使用激活补丁永久激活+汉化

    提供激活补丁激活方式(推荐使用-使用期到2100年,基本永久啦) 破解补丁激活 1.下载 https://pan.baidu.com/s/1GehNMTXagUxUEted1DT-Pg 密码:6689 ...

  4. kubernetes实战(十四):k8s持久化部署gitlab集成openLDAP登录

    1.基本概念 使用k8s安装gitlab-ce,采用GlusterFS实现持久化(注意PG使用的是NFS存储,使用动态存储重启postgresql的pod后无法成功启动pg,待解决),并集成了open ...

  5. 【其他】csv文件打开是乱码,怎么办?

    csv文件打开是乱码,怎么办?管用的方法,一个就够 工作中,将python生成的中间结果文件写入CSV,经常这么干是不是?文件保存下来后用excel打开,出现了乱码情况,真心烦.为什么? CSV是用U ...

  6. android侧滑删除,模仿qq跟进item显示删除按钮

    今天所写的代码只是为了个人以后查询方便,如果你参考了并且在使用中遇到问题也可以在这里直接回复我 SwipeDelMenuLayout: 效果图: item布局: <?xml version=&q ...

  7. Spark Shuffle Write阶段磁盘文件分析

    这篇文章会详细介绍,Sort Based Shuffle Write 阶段是如何进行落磁盘的 流程分析 入口处: org.apache.spark.scheduler.ShuffleMapTask.r ...

  8. SQLAlchemy技术文档(中文版)(全)

    原文链接:http://www.cnblogs.com/iwangzc/p/4112078.html(感谢作者的分享) sqlalchemy 官方文档:http://docs.sqlalchemy.o ...

  9. hdu1864最大报销额(01背包)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=187#problem/G 该题要注意的就是每张单子A种类的总和不能大与600,同 ...

  10. [转]Tesseract-OCR (Tesseract的OCR引擎最先由HP实验室于1985年开始研发)

    光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印行 ...