青少年CTF训练平台 CheckMe1-8
个人博客:https://www.st1ck4r.top/
CheckMe01
考点:php代码审计

给了一个输入框,先随便输点东西进去。

直接就给出了源码,分析该源码。
<title>CheckMe-01</title>
<?php
print("<h1>欢迎来到CheckMe-01,快来寻找你的Flag并提交吧。</h1>");
?>
<form action="index.php" method="POST">
your key: <input type="text" name="key" />
<input type="submit" value="Submit" />
</form>
<?php
if(!empty($_POST['key'])){ //判断post参数key是否存在
$keys = $_POST['key']; //赋值
show_source("index.php");
$keys = base64_decode(urldecode($keys));//将keys值url解码然后base64解码
if(strlen($keys)==6){ //判断长度是否为6
if($keys=="qsnctf"){ //判断值是否等于qsnctf
print("<p>You win!</p>");
include("flag.php");
print($flag);
}
}
else{
print("末心:大漏特漏!此乃九年义务教育漏网之鱼。");
}
}
?>
现在情况很明了了,我们需要传入字符串"qsnctf"的base64加密字符串。
利用在线网站进行加密。

传入参数。

Tips:
使用hackbar插件要方便一点哦。

CheckMe02
考点:文件包含

只给了简单的一段,看到include函数,自然而然地想到文件包含。
先测试一下,可以包含。

查看根目录下的flag。

CheckMe03
考点:文件包含
依旧是熟悉的文件包含,但是相比上一题应该增加了不许使用伪协议的限制(虽然跟没加一样)。

依旧是先测试。

成功回显,接着改成根目录下的flag。

CheckMe04
考点:MD5弱类型比较

比较两个传入参数的md5值是否相同,两个等于号代表弱比较。

PHP:
ctype_alpha()是一个检测函数,用来检测所给参数是不是字母的函数。
is_numeric() 函数用于检测变量是否为数字或数字字符串。
无法通过数组绕过,使用科学计数法类特性进行弱类型绕过。
a=QLTHNDT
b=240610708

CheckMe05
考点:MD5强类型比较

这次换成了三个等号,意为强类型比较,但是没有对传入数据进行类型判断,所以我们使用数组绕过即可。
a[]=1&b[]=11

CheckMe06
考点:密码爆破

打开网页是一个登陆界面,在题目下方还给了一个字典。

使用Burp抓包,猜测用户名为admin,利用字典爆破密码。

CheckMe07
考点:万能密码
和6一样的界面。

随便输入账号和密码,这次弹出了账号或密码错误的提示。

使用万能密码测试。

弹出flag。

CheckMe08
考点:sql注入
依旧是那个登录页面,先抓个包重发一下。

给出了登陆失败的弹窗,尝试万能密码和密码爆破无果后,果断掏出神器sqlmap.
由于是post请求,所以我们需要把请求包复制并保存到一个txt文档里。

使用命令python sqlmap.py -r 1.txt --dbs -batch开始爆破数据库。

接着查看sql库里的表:python sqlmap.py -r 1.txt -D sql --tables --batch。

查看字段:python sqlmap.py -r 1.txt -D sql -T user --columns --batch。

dump内容:python sqlmap.py -r 1.txt -D sql -T user -C password --dump --batch。

本文解析了CheckMe1-8青少年CTF训练平台的挑战题,涉及代码审计、文件包含、弱类型比较等安全技术,并提供了详细的解决步骤。
229

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



