zoukankan      html  css  js  c++  java
  • iscc-pwn1

    可以看到输入的字符被存储在0x804a060,然后程序跳转到0x804a160 的位置,所以通过输入覆盖0x804a160,在这个地方插入执行shellcode

    查看文件的安全机制

    不存在栈不可执行,就可以通过上面的思路进行——将shellcode放在栈上,然后执行shellcode

    思路一:
    通过上面的两个地址的间隔为0x100——先要构造随便的256个字符进行填充,然后执行shellcode

    然后随便选一个写在256个字符的后面,那么当跳转的时候就自动运行,可以得到一个shell
    注意:如果是这种思路要把shellcode执行的开始地点作为return时pop出来的值,在填充的0x100个填充字符之后,要先将返回地址(shellcode的首地址给出),然后再加上shellcode



    思路二:
    将随意填充字符“A”和shellcode一起组成256个字符
    因为后面调用的时候就是转到dword_804a160()的位置来进行执行的,如果能让函数在调用这个函数的时候转到shellcode的地方执行,就可以拿到shell

    因为调用这个函数的时候,先要把ds:dword_804a160地址的数据转到eax,然后执行,所以覆盖这个地址可以控制程序转到我们想要的位置,这里我们想要程序转到0x804060的位置,然后可以执行刚刚写好的shellcode

    这种思路的好处是:通过改写程序中规定存在,可写的部分来执行shellcode,充分利用已有的空间





    PS:
    注意机器码和正常代码的顺序问题
    在exp程序中


    使用ljust函数填充‘a’,实际上的代码效果是

    即机器码的左和通常意义上的左是不一样的



  • 相关阅读:
    根据当前日期转目的国地区时间戳
    时间戳转换作用域问题
    字符串拼接问题
    input全选和取消全选
    循环遍历渲染模块
    jQuery实现获取选中复选框的值
    React组件
    underscore.js依赖库函数分析二(查找)
    underscore.js依赖库函数分析一(遍历)
    React入门
  • 原文地址:https://www.cnblogs.com/volva/p/11813849.html
Copyright © 2011-2022 走看看