首页 > 其他 > 详细

逆向进阶

时间:2020-03-11 22:33:21      阅读:61      评论:0      收藏:0      [点我收藏+]

20175314 2020-2 《网络对抗技术》Exp1+ 逆向进阶 Week4

一、实验内容

Task1 (5-10分)

  • 自己编写一个64位shellcode。参考shellcode指导。
  • 自己编写一个有漏洞的64位C程序,功能类似我们实验1中的样例pwn1。使用自己编写的shellcode进行注入。

Task 2 (5-10分)

  • 进一步学习并做ret2lib及rop的实践,以绕过“堆栈执行保护”(参考ROP)。

Task 3 (5-25分)

  • 可研究实践任何绕过前面预设条件的攻击方法;可研究Windows平台的类似技术实践。
  • 或任何自己想弄明白的相关问题。包括非编程实践,如:我们当前的程序还有这样的漏洞吗?

二、基础知识

安装必要软件包

  • root用户权限下
apt-get install gcc-multilib//安装gcc-multilib(生成多平台代码)
apt-get install wxhexeditor//安装wxhexeditor(16进制文本编辑器)

预备知识

gcc -o shellcode_generator shellcode_generator.c
./shellcode_generator /bin/bash```
  • Linux下ELF格式
    技术分享图片

二、实验步骤

1、Task1

  • 1、使用vim编写shellcode.c
    技术分享图片

  • 2、编译生成可执行文件,执行查看效果
    技术分享图片

  • 3、objdump -d shellcode | more //反汇编查看代码找到main函数:
    技术分享图片

  • 4、使用vim编写newshellcode.asm
    技术分享图片
nasm -f newshellcode.nasm -o newshellcode.o      //编译
ld -melf_i386 newshellcode.o -o newshellcode.bin //汇编与链接
./newshellcode.bin                               //运行
  • 5、查看反汇编代码
    技术分享图片
    使用Shellcode工具获取X64 50Bytes的Shellcode
gcc -o getshellcode getshellcode.c
./getshellcode /bin/bash```

技术分享图片

  • 6、在C语言程序中进行调试
    技术分享图片

  • 7、测试成功
    技术分享图片

  • 8、使用实验一的第三个步骤的方法进行注入,结果如下

三、遇到的问题

  • 问题:汇编报错nasm:fatal:unable to open output file
  • 解决方案:路径中包含_/+/-等符号,重新设置路径即可编译通过

  • 问题:C语言程序测试Shellcode段错误
    技术分享图片
  • 解决方案:GDB调试看main函数的调用,Shellcode是以全局字符数组变量的形式存储在进程堆栈中的数据段中,数据段是没有可执行权限的,所以一旦PC寄存器进入到这里面,那么程序就会报错。用命令将要运行的程序用execstack解除可执行栈的保护

四、参考资料

逆向进阶

原文:https://www.cnblogs.com/SANFENs/p/12452195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!