Web89(preg_match和intval)
- <?php
- include("flag.php");
- highlight_file(__FILE__);
- if(isset($_GET['num'])){
- $num = $_GET['num'];
- if(preg_match("/[0-9]/", $num)){
- die("no no no!");
- }
- if(intval($num)){
- echo $flag;
- }
- }
- //?num[]=1
复制代码 md5()函数如果传入数组,返回值将是NULL,NULL===NULL,所以可以用数组绕过。
Web98(&引用)
- [/code]&表示引用,比如$b=&$a表示变量b是变量a的一个引用,相当于同一个变量两个名字,一个变化另一个也会跟着变化。
- [code]<?php
- show_source(__FILE__);
- include('flag.php');
- $a=$_GET['cmd'];
- if(preg_match('/^php$/im', $a)){
- if(preg_match('/^php$/i', $a)){
- echo 'hacker';
- }
- else{
- echo $flag;
- }
- }
- else{
- echo 'nonononono';
- }
复制代码
Web99(in_array)
- [/code]in_array() 是否存在strict参数,如果不设置默认为False则为宽松比较,True需要检查搜索的数据与数组的值类型是否相同自动转换为1
- 题中为宽松比较。当n=1.php时 "1.php"==1,成功绕过
- [align=center]
[/align] - [code]<?php
- include("flag.php");
- highlight_file(__FILE__);
- if(isset($_GET['num'])){
- $num = $_GET['num'];
- if($num==4476){
- die("no no no!");
- }
- if(preg_match("/[a-z]/i", $num)){
- die("no no no!");
- }
- if(intval($num,0)==4476){
- echo $flag;
- }else{
- echo intval($num,0);
- }
- }
- //?num=010574
- //?num=4476.1
复制代码 Web100(逻辑运算符优先级)
[code] |