#做点简单的
-
web 89
在 PHP 中,intval()函数是用来获取变量的整数值。这个函数通过指定的进制来转换变量的值,默认是十进制。如果变量是对象,使用 intval()会产生一个 E_NOTICE 错误,并返回 1
本题需要被preg_match函数检查是否包含数字,又要被intval函数转换后不为0
实际上,preg_match当检测的变量是数组的时候会报错并返回0。而intval函数当传入的变量也是数组的时候,会返回1
所以可以构造payload:
?num[]=1 -
web 90
int intval($var, $base) $var: 需要转换成整数的变量 $base: 转换所使用的进制$base默认值为 0, 会根据$var的格式来调整转换的进制如果
$var以 0 开头, 使用 8 进制,如果$var以 0x 开头, 使用 16 进制,否则, 使用 10 进制本题可以用进制绕过:
?num=010574 ?num=0x117c可以用小数绕过:
?num=4476.1也可以用算式绕过:
?num=4476+1-1还可以用字符串绕过:
?num=4476a -
web 91
第一个正则
/^php$/im匹配必须保证:$a 中某一行完全是 “php”(忽略大小写)不能有其他字符在这一行第二个正则 /^php$/i 不匹配,说明整个字符串不是 “php”
可以用%0a换行,例如构造:
?cmd=php%0a111 -
web 92
与web90类似,但本题只能用进制绕过和小数绕过
-
web 93
与web92类似,但由于字母被过滤,不能使用十六进制绕过
-
web 94
strpos 是 PHP 中用于查找字符串首次出现位置的函数,区分大小写,并从字符串的起始位置(索引 0)开始计算
所以说构造的payload中必须包含0但0不能在开头(即第0位)
可以用小数绕过:
?num=4476.01也可以用换行符绕过:
?num=4476%0a0还可以用八进制绕过的变种:
?num=%0a010574 ?num=+010574 ?num=%09010574 ?num= 010574 -
web 95
与web94类似,但小数点被过滤了,且为弱比较,不能用小数绕过和换行符绕过
-
web 96
可以用
?u=./flag.php ?u=/var/www/html/flag.php或者
?u=php://filter/convert.base64-encode/resource=flag.php -
web 97
md5强绕过,可以用数组绕过
a[]=1&b[]=2

2620

被折叠的 条评论
为什么被折叠?



