preg_match()漏洞
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了preg_match()漏洞相关的知识,希望对你有一定的参考价值。
今天大哥丢了一道题过来. <?php $str = intval($_GET[‘id‘]); $reg = preg_match(‘/\\d/is‘, $_GET[‘id‘]); //有0-9的数字 和.在内的符号 if(!is_numeric($_GET[‘id‘]) and $reg !== 1 and $str === 1){ echo ‘Flag‘; }else{ echo "<img src=‘./1.jpg‘>"; } ?>本来自信的以为是阶段或者十六进制 结果搞不定就往php函数漏洞上来研究了
PHP所使用的preg_match()函数从用户输入字符串获得参数,如果所传送的值为数组而不是字符串就会生成警告,警告消息中包含有当前运行脚本的完整路径。
暴力过题。。。 当提交id[]=1时
intval($_GET[‘id‘]); 输出 1
is_numeric($_GET[‘id‘]) 不存在
preg_match(‘/\\d/is‘, $_GET[‘id‘]); !=1
以前在南京邮电做了一道题 如出一辙 <?php function noother_says_correct($number) { $one = ord(‘1‘); $nine = ord(‘9‘); for ($i = 0; $i < strlen($number); $i++) { $digit = ord($number{$i}); if ( ($digit >= $one) && ($digit <= $nine) ) { return false; } } return $number == ‘54975581388‘; } $flag=‘*******‘; if(noother_says_correct($_GET[‘key‘])) echo $flag; else echo ‘access denied‘; ?>
以上是关于preg_match()漏洞的主要内容,如果未能解决你的问题,请参考以下文章
安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段