目录
[SWPUCTF 2022 新生赛]奇妙的MD5
[GDOUCTF 2023]受不了一点
[LitCTF 2023]作业管理系统
注入点一:文件上传
注入点二:创建文件直接写一句话木马
注入点三:获取数据库备份文件
[LitCTF 2023]1zjs
[SWPUCTF 2022 新生赛]奇妙的MD5
or 对应的16进制:276f7227
ffifdyop字符串,MD5加密之后会变成276f7227 36c95d99e921722cf9ed621c
字符串前几位刚好是 ‘ or ‘6
输入ffifdyop,进入下一关 查看源代码
GET传参x,y二者值不相等,但MD5加密后相等
==弱比较,使用0e、[]数组绕过都可以
?x=QNKCDZO&y=240610708
?x[]=1&y[]=2
进入下一关,POST传参wqh、dsy
二者值不相等,但MD5加密后相等,===强比较 使用[]绕过
[GDOUCTF 2023]受不了一点
<?php
// 设置错误报告级别为0,即关闭错误报告
error_reporting(0);
// 设置HTTP头部信息,指定内容类型为HTML,字符编码为UTF-8
header("Content-type:text/html;charset=utf-8");
// 检查是否存在POST请求中的'gdou'和'ctf'参数
if(isset($_POST['gdou'])&&isset($_POST['ctf'])){// 获取POST请求中的'ctf'参数值并存储到变量$b中$b=$_POST['ctf'];// 获取POST请求中的'gdou'参数值并存储到变量$a中$a=$_POST['gdou'];// 检查'gdou'和'ctf'参数值是否不相等,并且它们的MD5哈希值相等if($_POST['gdou']!=$_POST['ctf'] && md5($a)===md5($b)){// 检查是否设置了名为'cookie'的Cookieif(isset($_COOKIE['cookie'])){// 检查Cookie的值是否等于'j0k3r'if ($_COOKIE['cookie']=='j0k3r'){// 检查是否存在GET请求中的'aaa'和'bbb'参数if(isset($_GET['aaa']) && isset($_GET['bbb'])){// 获取GET请求中的'aaa'和'bbb'参数值$aaa=$_GET['aaa'];$bbb=$_GET['bbb'];// 检查'aaa'和'bbb'是否都等于114514,但不相等if($aaa==114514 && $bbb==114514 && $aaa!=$bbb){// 设置两个变量,用于后续的条件判断$give = 'cancanwordflag';$get ='hacker!';// 检查是否存在GET请求中的'flag'参数和POST请求中的'flag'参数if(isset($_GET['flag']) && isset($_POST['flag'])){// 如果存在,则输出'cancanwordflag'并终止脚本执行die($give);}// 如果POST或GET请求中的'flag'参数等于'flag',则输出'hacker!'并终止脚本执行if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){die($get);}// 遍历所有的POST参数,并将它们作为变量赋值foreach ($_POST as $key => $value) {$$key = $value;}// 遍历所有的GET参数,并将它们作为变量赋值foreach ($_GET as $key => $value) {$$key = $$value;}// 尝试输出变量$flag的值echo $flag;}else{// 如果不满足条件,输出"洗洗睡吧"echo "洗洗睡吧";}}else{// 如果不满足Cookie的条件,输出"行不行啊细狗"echo "行不行啊细狗";}}
}
else {// 如果不满足MD5哈希值相等的条件,输出"菜菜"echo '菜菜';
}
}else{// 如果不存在POST请求中的'gdou'和'ctf'参数,输出"就这?"echo "就这?";
}
}else{// 如果不存在POST请求中的'gdou'和'ctf'参数,输出"别来沾边"echo "别来沾边";
}
?>
第一层:POST传参 gdou[]=1&ctf[]=2,(===强比较,[]数组绕过)
第二层:传入cookie cookie=j0k3r
第三层:GET传参 ?aaa=114514&bbb=114514a 返回flag
字符串的弱比较,可以用114514a(字符串)来绕过,解析后仍为114514(整型)
字符串弱类型比较时只会截取前面的部分
第四层:flag传入空值 flag= ,返回$give = 'cancanwordflag';
[LitCTF 2023]作业管理系统
查看源代码发现提示 默认账户admin admin
登录进来发现有很多注入点
注入点一:文件上传
直接上传成功了,连接蚁剑在根目录下找到flag
注意路径
注入点二:创建文件直接写一句话木马
创建文件2.php保存后,同样的连接蚁剑在根目录下找到flag
注入点三:获取数据库备份文件
输入想要获取的数据库名称,使用万能密码1’ or ‘1’=’1爆破
正常情况下 点击备份,然后在网站根目录访问 mysql.zip 就可以下载
此处不知道为什么报错了
注入点四:ftp 远程文件上传
[LitCTF 2023]1zjs
F12查看源码,在/dist/index.umd.js中发现一个关于flag的路径
访问,发现JSfuck编码
解码得flag(自己去一下[])
因为Sfuck也是一种JS代码,F12打开的控制台里可以直接运行js代码