设置cookie: from=ISCTF
访问/get_contents_qwerghjkl.php
这里有个file_get_content函数 用data://伪协议绕过
file_get_contents($_POST[‘name’]) 会尝试读取一个文件 名为name 而不是文件的内容
所以这里要让 file_get_contents() 读取的是一个“伪造的文件”,它的内容正好是 "ISCTF"。
而data:// 是 PHP 的 数据流(Stream Wrapper),允许直接创建“虚拟文件”。
所以这里传 name=data://text/plain,ISCTF即可
访问/well_down_mlpnkobji.php
这里看不清 自己找个文本写入看
waf($poc);对poc过滤了 “/http|php|file|:|=|/|?/i”
我们需要通过php://filter伪协议 ...
get传参b=a[0]=QLTHNDT
md5弱比较 这里是0e绕过 QNKCDZO与QLTHNDT经过md5编码后都是0e开头
因为PHP 试图解析它们为数值,发现它们符合 0eX(科学计数法),都被解释为 0 * 10^X = 0。
结果是 0 == 0,所以 返回 true。
然后post num
num=2024 不能有字母 intval($num,0)=2024
小数点绕过即可
post传参num=2024.1
intval() 转换小数类型时,只返回个位数,不遵循四舍五入的原则。
接下来是一个switch循环
get传参 which=flag
在 PHP 中,switch 语句的比较是通过 严格比较(==) 来进行的。当你传递一个非数字字符串(例如 "flag")时,PHP 会尝试将其转换为数字。这个转换过程有些特殊,通常会把任何非数字字符串转换为 0。
也就是
PHP 会自动尝试将 "flag" 转换为数字。在 PHP ...
NSSRound#28 Team ez_php
先看代码呗
post传参 a b get传参 pssword
password不能是纯数字 又要等于123456
is_numeric检验password是不是数字 如果是数字就会执行第一个die
password!=123456 是非严格比较
PHP 进行 非严格比较 (!=) 时,会尝试将字符串转换成数字。如果字符串以数字开头,PHP 会尽可能解析成数字,"123456abc" 会被当作 123456 来比较
所以这里我们可以通过传password=123456abc进行绕过
1if ($a != $b && md5($a) === md5($b))
a!=b a的md5还要等于b的md5
因为md5对数组加密结果为NULL 所以这里直接用数组绕过
post传参 a[]=1&b[]=2即可绕过
接下来就是文件包含inclue
直接利用php://filte文件读取流读取level2.php
file ...
通过 __toString() 方法输出数据,从而被滥用于信息泄露。
1. ExceptionException 的 __toString() 方法会输出 message,可以用来泄露敏感信息:
1?v1=Exception&v2=file_get_contents&arg=/etc/passwd
相当于:
1echo new Exception(file_get_contents('/etc/passwd'));
如果 file_get_contents('/etc/passwd') 成功读取到了内容,它就会直接输出异常,导致信息泄露。
2. ErrorPHP 7+ 之后,Error 继承自 Throwable,其行为和 Exception 类似:
1?v1=Error&v2=file_get_contents&arg=/etc/passwd
它会输出:
1Error: /etc/passwd in script.php:3
3. ReflectionClassReflectionClass 的 __to ...