目录
[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'的Cookie
if(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代码