SHCTF2024 WriteUp
Web
Week 1
1. 1zflask
解题思路:
首先打开容器发现出现404网页,刚开始很懵,后来明白了原来是出题人没做主页nishen太懒。根据题目描述,
我们访问robots.txt,发现一个/s3recttt路由,访问下载源码如下:
1 | import os |
我们可以看到/api路由,默认传参SSHCTFF=ls /,执行结果通过os.open读取,访问该路由则会列出:
我们把参数值改一下变成SSHCTFF=cat /flag就能成功得到flag了。
2. ez_gittt
解题思路:
开启题目查看源码看到注释里有“你说这个Rxuxin会不会喜欢把自己的秘密写到git之类什么的”,可能存在git泄露,拿dirsearch扫一下确实存在,再用GitHack克隆目录,然后使用cd命令进入dist文件中新生成的文件,再使用git log命令查看历史提交记录,如下
3.jvav
解题思路:
开启题目发现如图输入框,而且可以执行
再根据题目描述“如果你已经会用java写hello world了,那么可以试试java怎么执行system command”,题目意思很明确,我们只需要用java写实现命令执行的代码就行了,不会写直接AI一把梭就行了,需要注意的是我们定义的类需要是demo(public class demo),然后按部就班ls /再cat /flag就行了。flag: SHCTF{1cd97424-7553-4571-a6cc-c9d7a2cc8237}
4. 蛐蛐? 蛐蛐!
解题思路:
首先查看源码发现有个重要的source.txt,访问一下得到如下代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if($_GET['ququ'] == 114514 && strrev($_GET['ququ'])!= 415411){
if($_POST['ququ']!=null){
$eval_param = $_POST['ququ'];
if(strncmp($eval_param,'ququk1',6)===0){
eval($_POST['ququ']);
}else{
echo("不知道为啥变乱码了");
}
}
ehco("不知道为啥变乱码了");
}
else{
echo("不知道为啥变乱码了");
}
第一个条件get传参ququ=114514,但其反转字符串不等于415411,ququ=114514a就能绕过,然后post传参,并且当前六个字段是ququk1时,eval函数会将ququ的值作为php代码执行(注意代码闭合不要漏了;),简单的rce,直接常规ls 和cat得到flag。
5.单身十八年的手速
解题思路:
点击就送flag(偷个懒)。
Week 2
1. guess_the_number
解题思路:
打开容器要求我们输入一个数字,先审计源码,发现一个新的路由/s0urce ,访问一下,得到一个.py文件,文件中包含以下代码。
审一下代码再根据题目描述易知这是一道伪随机数生成的题目,我们只需要找到seed,就能得到对应生成的num1,num2,编写一个脚本来帮助我们完成这项工作。审一下代码再根据题目描述易知这是一道伪随机数生成的题目,我们只需要找到seed,就能得到对应生成的num1,num2,编写一个脚本来帮助我们完成这项工作。回到题目将5188946490打进输入框,就能成功得到flag。
flag为SHCTF{7his_NUm6ER_i5_e45y_huEs5_1cdb9cf5f25e}
2. 登陆验证
解题思路:
一个登录框,要提交Username和Passaword,可以爆破密码试一下,两个都输入admin,回显你不是admin,说明密码应该是对的结合题目,应该只有jwt验证,抓到拿到响应包中的jwt,解密,把’role’:”user”改成’role’:”admin”,签名无效,结合题目存在密钥加密,在kali中使用jwt_tool把密钥爆出来,我们用kali自带的rockyou.txt字典(使用前要解压缩)进行爆破得到密钥为222333。用修改好的jwt重新发包得到flag。
也可以直接在网页修改token,把修改好的jwt贴进去,刷新一下页面就会能得到flag了。
3.自助查询
解题思路:
很明显是一个sql注入,输入1查询,回显的语句是SELECT username,password FROM users WHERE id=(“1
很明显是字符型注入需要我们用”)闭合,然后常规操作,联合查询注入,爆库爆表爆字段,查到字段内容后我们发现出题人把东西藏到注释里了,我们查看注释得到flag。
Week 3
1. 小小cms
解题思路:
扫目录发现管理员入口,访问,有验证码不好爆破先不考虑,查了以下这是yzmcms的后台登陆入口,有默认账号密码,且都是yzmcms,登进去sql语句执行被ban了,搞不了,
看一下数据管理的内容发现flag,备份后下载打开,fake难绷,返返回网站首页可以看到yzmcms是7.0版本的,去搜一下该版本存在的历史漏洞,该版本存在rce漏洞这就和题目描述相吻合了,我找了一个漏洞复现做参考YzmCMS 7.0任意函数调用RCE 漏洞研究分析。
有现成payload,修改一下法宝得到flag。