[题目信息]:
题目名称 | 题目难度 |
---|---|
PHP弱比较-SESSION | 1 |
[题目考点]:
PHP是弱类型语言,不需要明确的定义变量的类型,变量的类型根据使用时的上下文所决定,也就是变量会根据不同表达式所需要的类型自动转换,比如求和,PHP会将两个相加的值转为long、double再进行加和。每种类型转为另外一种类型都有固定的规则,当某个操作发现类型不符时就会按照这个规则进行转换,这个规则正是弱类型实现的基础。
[Flag格式]:
SangFor{D6yYcRuH05nJMNPpXxvV8mUoExX5soMw}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
http://分配ip:2018
[题目writeup]:
信息搜集,右键查看网页源代码可查看到题目源码
<!--
session_start();
if (isset ($_POST['pwd'])){
if ($_POST['pwd'] == $_SESSION['pwd'])
die('Flag:'.$flag);
else{
print '<p>不对哦,再猜.</p>';
$_SESSION['pwd']=time().time();
}
}else{
$_SESSION['pwd']=time().time();
}
-->
分析代码逻辑,提交的密码 pwd 和 session 中存储的pwd 的值相等即可出 flag 。当 sessionid 为服务器中不存在的sessionid 时,获取的相应数据也为 NULL ,如果我们传入的 pwd 为 null ,则成功绕过比较。
使用burpsuite截取数据包,修改 PHPSESSID 的值为空,并令 pwd 也为空