标签:脚本 使用 php函数 生成 数字 false git 提交 dig
今天大哥丢了一道题过来. <?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()函数从用户输入字符串获得参数,如果所传送的值为数组而不是字符串就会生成警告,警告消息中包含有当前运行脚本的完整路径。
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‘; ?>
标签:脚本 使用 php函数 生成 数字 false git 提交 dig
原文地址:http://www.cnblogs.com/test404/p/6091108.html