Loading

[极客大挑战 2019]BuyFlag

[极客大挑战 2019]BuyFlag

在页面中找到了 buyflag 的菜单,点进去,给了一部分的提示。

image-20220511102100081

image-20220511102322500

image-20220511102119553

根据上面给出的提示,想要获得 flag 需要使用 post 方法提交 money 和 password 参数,而且需要是 Cuit 的学生才行。两个参数容易提交,但是这个Cuit的学生怎么判断呢,实在想不出来就抓下包,就有发现了。

image-20220511102557864

这里的 cookie 字段有个 user 的值,猜测这里就是需要修改的地方了,虽然不知道修改成啥,但是肯定不是0,因为如果是0就不对了。

image-20220511102742995

随便修改个值,user=1 ,测试了下,user这里只能等于1,其他的也都是错误。

image-20220511102827694

cuit 的学生限制做好了,下一步就是绕过校验代码

	~~~post money and password~~~
if (isset($_POST['password'])) {
	$password = $_POST['password'];
	if (is_numeric($password)) {		# 判断是不是数字或数字型字符串,123、'123'
		echo "password can't be number</br>";
	}elseif ($password == 404) {		# 判断是不是等于 404
		echo "Password Right!</br>";
	}
}

上面的 php比较使用的 == 可以利用php弱类型进行绕过。

image-20220511103210397

但是又发现虽然绕过比较,但还有长度限制,可能是对 money 参数的限制(看到有大佬说是 strcmp() 函数,可以用 money[]=1 绕过),毕竟 password 才四位,使用科学计数法绕过 1000000000 = 10e8

image-20220511103806319

参考文章:

菜鸟教程

[大佬文章](

posted @ 2022-08-13 10:38  knsec  阅读(85)  评论(0编辑  收藏  举报