目录
一、maodun
项目场景:
问题描述:
题目中get传入一个参数赋值给num,然后通过is_numeric()函数判断是不是数字,如果是,那么输出这个参数;接着继续判断,如果num等于1,那么输出flag
问题分析:
首先分析is_numeric()函数,菜鸟教程描述如下
https://www.runoob.com/php/php-is_numeric-function.html
要求传参num不能是数字,而且num=1,is_numeric()函数有一个缺点,当数字后面加上%00截断,is_numeric()函数就不能识别为数字了,因此我们payload
解决方案:
在原原网址后面传入/?num=1%00 即可
二、maodun2
项目场景:
问题描述:
首先传入两个参数赋值给num1和num2;如果num1不等于num2,那么进入if语句:如果num1和num2的MD5值恒等(强类型比较),那么输出flag
原因分析:
=== 三个等于号,是强类型比较。没法使用加密后为0E的绕过,但是PHP自身的特性使得可以提交一个数组,而md5函数传入数组的返回值都是NULL,这样就可以绕过强类型比较了。所以这里用GET分别给两个参数传入数组就行了
解决方案:
payload: /?num1[]=1&num2[]=2
三、post
项目场景:
问题描述:
post传参,当what=flag的时候,输入flag
解决方案:
配置好了burpsuite后,拦截包
然后把GET改成POST
POST请求务必要加媒体类型信息:Content-Type: application/x-www-form-urlencoded
再传入参数 what=flag
最后得到flag~