返回介绍

8.2.1 字符处理函数报错信息泄露

发布于 2024-10-11 22:07:45 字数 2213 浏览 0 评论 0 收藏 0

页面的报错信息通常能泄露文件绝对路径、代码、变量以及函数等信息,页面报错有很多情况,比如参数少了或者多了、参数类型不对、数组下标越界、页面超时,等,不过并不是所有情况下页面都会出现错误信息,要显示错误信息需要打开在 PHP 配置文件 php.ini 中设置 display_errors=on 或者在代码中加入 error_reporting() 函数,error_reporting() 函数有几个选项来配置显示错误的等级,列表如下:

E_WARNING

E_PARSE

E_NOTICE

E_CORE_ERROR

E_CORE_WARNING

E_COMPILE_ERROR

E_COMPILE_WARNING

E_USER_ERROR

E_USER_WARNING

E_USER_NOTICE

E_STRICT

E_RECOVERABLE_ERROR

E_ALL

其中最常用的是 E_ALL、E_WARNING、E_NOTICE、E_ALL 代表提示所有问题,E_WARNING 代表显示错误信息,E_NOTICE 则是显示基础提示信息。

大多数错误提示都会显示文件路径,在渗透测试中,经常遇到 webshell 的场景要用到文件绝对路径,所以这个利用页面报错来获取 Web 路径的方式也比较实在了,用户提交上去的数据后端大多是以字符串方式处理,所以利用字符串处理函数报错成了必不可少的方法,对于利用参数来报错的方式,给函数传入不同类型的变量是最实用的方式。

大多数程序会使用 trim() 函数对用户名等值去掉两边的空格,这时候如果我们传入的用户名参数是一个数组,则程序就会报错,测试代码如下:

<?php

echo trim ( $_GET['a'] );

当我们请求/1.php?a[]=test 时,程序报错如下,如图 8-2 所示。

图 8-2

类似的函数还有很多很多,比如

addcslashes()、addslashes()、bin2hex()、chop()、chr()、chunk_split()、convert_cyr_string()、convert_uudecode()、convert_uuencode()、count_chars()、crc32()、crypt()、echo()、explode()、fprintf()、get_html_translation_table()、hebrev()、hebrevc()、html_entity_decode()、htmlentities()、htmlspecialchars_decode()、htmlspecialchars()、implode()、join()、levenshtein()、localeconv()、ltrim()、md5_file()、md5()、metaphone()、money_format()、nl_langinfo()、nl2br()、number_format()、ord()、parse_str()、print()、printf()、quoted_printable_decode()、quotemeta()、rtrim()、setlocale()、sha1_file()、sha1()、similar_text()、soundex()、sprintf()、sscanf()、str_ireplace()、str_pad()、str_repeat()、str_replace()、str_rot13()、str_shuffle()、str_split()、str_word_count()、strcasecmp()、strchr()、strcmp()、strcoll()、strcspn()、strip_tags()、stripcslashes()、stripos()、stripslashes()、stristr()、strlen()、strnatcasecmp()、strnatcmp()、strncasecmp()、strncmp()、strpbrk()、strpos()、strrchr()、strrev()、strripos()、strrpos()、strspn()、strstr()、strtok()、strtolower()、strtoupper()、strtr()、substr_compare()、substr_count()、substr_replace()、substr()、trim()、ucfirst()、ucwords()、vfprintf()、vprintf()、vsprintf()、wordwrap()、strtolower()、strtoupper()、ucfirst()、ucwords()、ucfirst()、ucwords(),等等函数。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文