ctf.show web 9-12 writeup
目录
web9
题目:ctf.show平台上的

解题过程
打开是个登录界面,没什么头绪

在index.phps中,源码泄露
<?php
$flag="";
$password=$_POST['password'];
if(strlen($password)>10){
die("password error");
}
$sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
$result=mysqli_query($con,$sql);
if(mysqli_num_rows($result)>0){
while($row=mysqli_fetch_assoc($result)){
echo "登陆成功<br>";
echo $flag;
}
}
?>
看到md5($password,true),想起了之前做的一道题目,也是这个知识点。
将password的值定为ffifdyop,登录,得到flag.

原因如下:
content: ffifdyop
hex: 276f722736c95d99e921722cf9ed621c
raw: 'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c
string: 'or'6]!r,b在mysql里面,在用作布尔型判断时,以1开头的字符串会被当做整型数。要注意的是这种情况是必须要有单引号括起来的,比如password=‘xxx’ or ‘1xxxxxxxxx’,那么就相当于password=‘xxx’ or 1 ,也就相当于password=‘xxx’ or true,所以返回值就是true。当然在我后来测试中发现,不只是1开头,只要是数字开头都是可以的。
ffifdyop的原始二进制字段中含有'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c, 恰构成了SQL注入漏洞,password=‘xxx’ or 1,那么返回值也是true。(xxx指代任意字符)
web10
题目:

本文介绍了CTFShow平台上一系列Web安全挑战的解题过程,涉及SQL注入、字符过滤绕过及命令执行漏洞。通过分析源码,利用groupby和withrollup组合技巧,以及glob()函数查找文件,成功获取flag。同时,文章讨论了如何通过删除session中的password字段来规避验证。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



