代做网站公司有哪些,曾舜晞网站是哪个公司做的,php网站建设案例教程视频,wordpress 局域网访问漏洞简述
CVE-2024-1112 是 Resource Hacker 软件的一个缓冲区溢出漏洞。该漏洞存在于版本 3.6.0.92 中。由于软件在处理命令行中的文件路径时未对文件字符串长度进行限制#xff0c;过长的字符串参数导致内存被过度写入#xff0c;从而引发缓冲区溢出。
漏洞复现
构造长度…漏洞简述
CVE-2024-1112 是 Resource Hacker 软件的一个缓冲区溢出漏洞。该漏洞存在于版本 3.6.0.92 中。由于软件在处理命令行中的文件路径时未对文件字符串长度进行限制过长的字符串参数导致内存被过度写入从而引发缓冲区溢出。
漏洞复现
构造长度300的字符串当做参数传入Resource Hacker Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9 Resource Hacker崩溃
异常偏移为0x316a4130也就是对应的0Aj1。由此看出通过构造的字符串参数是可以造成程序溢出并劫持执行流。
漏洞分析
由于字符串作为参数使用漏洞产生和处理字符串参数有关先在GetCommandLine函数下断点一步步找到溢出点。 通过下图得知传入的参数溢出覆盖了SHE的处理函数在程序出现异常后会调用异常处理函数的地址
分析溢出函数 这个函数主要是对传入的字符串参数进行处理并将处理后的字符串赋给v6变量由于未对传入的参数做长度限制导致栈溢出。
从上图可知函数内部设置处理接收参数的的数组大小为264个字节对此进行测试。 如果传入268个字节参数淹没了函数返回值地址在函数返回时发现返回值地址不存在进入异常处理找到对应的异常处理函数并抛出异常。
如果传入272个字节参数指向下个SEH链的指针被覆盖无法找到对应的异常处理函数程序崩溃。
如果传入292个字节参数SEH链的指针及处理函数都被传入的参数淹没并且在函数返回前就出现访问异常调用异常处理函数时出现崩溃。
通过上述测试可以发现有2种利用方式 1.传入构造的272字节参数利用跳转指令跳转到前面的268字节执行shellcode 2.传入构造的大于292个字节参数利用jmp esp跳板指令跳转到292字节后的执行shellcode
利用限制
虽然传入的字符串参数能导致栈溢出但是基本不可能达到稳定利用成功。 1.由于是在命令行中传入的很多不可见字符被复制到命令行中时字符发生改变。 2.想要执行我们的shellcode需要找到存在jmp esp,“call ebp”,“pop pop ret等汇编指令的地址但是这个溢出函数对字符做了很多限制很难利用当前模块的地址。 在这个循环中首先判断传入参数的每个字符如果小于0x20就结束循环。虽然能构造参数第三个字符为0x22(”)进入里层循环不对小于0x20的字符限制但是不能存在0字符。
while ( 1 ){v4 *a1;if ( (unsigned __int8)*a1 0x20u )break;if ( v4 0x22 ){a1;while ( 1 ){v3 *a1;if ( !*a1 || v3 0x22 )break;v6[v2] v3;a1;}if ( *a1 )a1;}else{v6[v2] v4;a1;}}也就是说在这个以0x00400000为基址的程序当前模块地址写入shellcode时由于出现0x00后面的字符被截断只能利用前面200多个字节的空间做shellcode。 理论上有200多字节的空间但是需要找跳板指令只能找到call/jmp dword ptr ss:[ebp-()18]在当前模块能找到比较好的也就是call dword ptr ss:[ebp-75]了这样又进一步压缩了shellcode的使用空间很难去利用。
参考
https://enessakircolak.netlify.app/posts/2024/exploit-101/