青少年CTF训练平台 CheckMe1-8
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){//判断长度是否为6if($keys=="qsnctf"){//判断值是否等于qsnctfprint("<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
。
版权归原作者 ZhouMo. 所有, 如有侵权,请联系我们删除。