网站续费怎么做,wordpress 增加js,h5个人博客网站模板,中国城乡和住房建设部网站首页机器在语言编码转换的时候#xff0c;经常会出现各种各样的异常#xff0c;这些神奇的字符串就有可能组合成一堆乱码出来#xff0c;也有可能直接把程序搞崩溃掉#xff0c;不过总有那么一些字符#xff0c;可以帮助我们在利用漏洞的时候变得更简单一些#xff0c;下面我…机器在语言编码转换的时候经常会出现各种各样的异常这些神奇的字符串就有可能组合成一堆乱码出来也有可能直接把程序搞崩溃掉不过总有那么一些字符可以帮助我们在利用漏洞的时候变得更简单一些下面我们就来看看是哪些函数这么调皮。字符处理函数报错信息泄露页面的报错信息通常能泄露文件绝对路径、代码、变量以及函数等信息页面报错有很多情况比如参数少了或者多了、参数类型不对、数组下标越界、页面超时等不过并不是所有情况下页面都会出现错误信息要显示错误信息需要打开在PHP配置文件php.ini中设置display_errorson或者在代码中加入error_reporting函数error_reporting函数有几个选项来配置显示错误的等级列表如下E_WARNING
其中最常用的是E_ALL、E_WARNING、E_NOTICEE_ALL代表提示所有问题E_WARNING代表显示错误信息E_NOTICE则是显示基础提示信息。大多数错误提示都会显示文件路径在渗透测试中经常遇到webshell的场景要用到文件绝对路径所以这个利用页面报错来获取Web路径的方式也比较实在了用户提交上去的数据后端大多是以字符串方式处理所以利用字符串处理函数报错成了必不可少的方法对于利用参数来报错的方式给函数传入不同类型的变量是最实用的方式。大多数程序会使用trim函数对用户名等值去掉两边的空格这时候如果我们传入的用户名参数是一个数组则程序就会报错测试代码如下?当我们请求/1.php?a[]test时程序报错如下如图所示类似的函数还有很多很多比如addcslashes字符串截断如果你以前做过渗透测试那字符串截断应该是我们比较熟悉的一个利用方式在利用文件上传漏洞的时候经常会用到抓包然后修改POST文件上传数据包里面的文件在文件名里面加一个00用来绕过文件扩展名的检查又能把脚本文件写入到服务器中下面我们就来了解下其中的原理吧。00空字符截断字符串截断被利用最多的是在文件操作上面通常用来利用文件包含漏洞和文件上传漏洞00即NULL是会被GPC和addslashes函数过滤掉所以要想用00截断需要GPC关闭以及不被addslashes函数过滤另外在PHP5.3之后的版本全面修复了文件名00截断的问题这个版本以后也是不能用这种方式截断。为什么PHP在文件操作的时候用00会截断字符PHP基于C语言开发00在URL解码后为00在C语言中是字符串结束符遇到0的时候以为到了字符串结尾不再读取后面的字符串自然而然的就理解成了截断。做一个简单的测试测试代码1.php?在同目录下面新建文件2.txt内容为输出phpinfo信息代码当我们请求/实际上包含了2.txt这个文件正常执行phpinfo代码。iconv函数字符编码转换截断iconv()函数用来做字符编码转换比如从UTF-8转换到GBK字符集的编码转换总会存在一定的差异性导致部分编码不能被成功转换也就是出现常说的乱码。在使用iconv函数转码的时候当遇到不能处理的字符串则后续字符串会不被处理。我们来做一个简单的测试测试代码如下?我们执行这段代码的行结果如图所示。可以看到第一次输出$a变量1和2都被正常输出当使用iconv函数转换编码后从chr130字符开始之后的字符串都没有输出已经被成功截断。经过笔者fuzz测试当我们文件名中有chr128到chr255之间都可以截断字符。建站之星模糊测试实战之任意文件上传漏洞漏洞发生在/module/mod_tool.php文件第89行起img_create函数代码如下public 这是一个文件上传的代码其中此漏洞的关键代码在if 在这里调用_savelinkimg函数保存文件跟进该函数函数代码如下private 代码中$struct_file对文件名进行转码之后move_uploaded_file写入文件这里就出现了我们上面说到的编码转换最终导致可以上传任意文件。