本系列文集:实验吧-Write up --将持续更新 觉得还不错请给个喜欢,感谢!
打开题目查看源码,发现如下提示,考察PHP弱类型
详情查看:PHP弱类型总结
这里要为用户名传入一个字符串,并且它经过md5加密后要等于0。
在用户名处输入QNKCDZO,得到如下提示
代码审计一波
$unserialize_str = $_POST['password']; #post方式提交password值
$data_unserialize = unserialize($unserialize_str);#将password值经过"反序列化"得到一个数组
if ($data_unserialize['user'] == '???' && $data_unserialize['pass'] == '???') {
print_r($flag);#数组里的user和pass都等于某个值时就打印flag。
}
要得到flag需满足:
1.post方式提交password值
2.将password值经过"反序列化"得到一个数组
3.要求数组里的user和pass都等于某个值时就打印flag。
不知道???到底是什么,因此无法考虑用php函数构造这样的值。
但是还有一个提示: "伟大的科学家php方言道:成也布尔,败也布尔"
,bool类型的true跟任意字符串可以弱类型相等。因此我们可以构造bool类型的序列化数据 ,无论比较的值是什么,结果都为true。
详细介绍点击:PHP序列化和反序列化
构造password值为: a:2:{s:4:"user";b:1;s:4:"pass";b:1;}