WHUCTF新生赛WP,总结与废话
打完新生赛,贴一下第一次写的wp什么的
web
[0-Div3]User0Agent
先看看题目和提示
可以得知本题应该要考察使用抓包工具修改User-Agent为php语言的linux指令
url后面添加参数可以查看源码:
看不懂源码就扔给ai分析一下可以得知:
字符黑名单:”pattern_blacklist” => [‘primary’ => ‘/cat|flag|env/‘,’secondary’ => [‘../../‘,’/etc/‘,’//passwd/‘]]
白名单:”allowed_chars” => ‘/^[a-zA-Z0-9_-$=<>.”%s't+*\\\/]+$/‘
接下来先看看目录
User-Agent: system(‘ls /‘);
接着抓取flag,因为cat和flag在黑名单里所以使用转义拼接
User-Agent: system(“t”.”ac /fla”.”g”);
于是得到flag
[1-Div3]井字棋小游戏]
题目提示说F12没什么用但是交互小游戏不开F12怎么看js代码,于是看到一串超级长混淆过的js代码(忘记截图了)。
看不懂没关系可以扔给AI,然后AI帮我们分析得到
于是抓包修改为目标所需的POST请求
GET!!!
[1-Div1.5]apacherrr
这个题目我只能说对新手没那么友好,Blank重开了很多次容器然后有些细节询问了Kuri才做出来了,并且有一些奇怪的点很容易卡住!!!
题目描述了三个apache的配置,然后同样是看不懂就扔给AI分析吧
AI还是比较聪明的然后我们就可以得到一个大概思路了:通过上传.htaccess文件使得其他形式的上传文件可以执行php
下午补了提示说可以用.txt那我们就用.txt(然而谁能想到我各种形式都试过了呢)
然后可以用bp请求一下uploaderrr.com发现响应出一个upload.php,这个就是可以上传的点了。
然后上传一个.htaccess一个shell.txt可以交给AI那我们就交给AI写算了
这里要注意的是不要上传到根目录虽然AI分析完会说第三个配置里不限制.htaccess会推荐传到根目录但是实际上传到当前目录就行了
这是因为uploaderrr.com和whuctf2025.com的目录都在html下面,而既然最终根目录不限制其实就是整个目录都不限制了()并且上传也是存储在uploads下面hhh
1 | |
因为我是气急败坏跑了一个功能完整的上传了,所以实际上可能不需要这么长。
然后shell.txt的话我现在还不太会写一句话木马,所以也是在提示下写了这个弹出环境变量的。
1 | |
好的然后我们进行一个访问文件,非常要注意的是不要访问uploaderrr.com!!!
否则你就会跟Blank一样抓狂半天怀疑是不是传错了然后回去重传根目录(什么竟然连起来了)
我们可以回顾一下AI分析的配置,可以发现whuctf2025.com下面是有一个名为uploads的文件夹的。
这个地方也是稍微要分析一下,逻辑捋顺了不会兜圈子很久
于是用bp请求这个会弹出环境变量,然后搜索flag往下找找可以找到
[3-Div2]Guild
kuri师傅紧急上新题目,下载题目中的server.jar和群里上传的jadx-gui,查看jadx-gui的反编译出来的源码
反编译的代码看不懂扔给AI可以得知这个题目的用户名固定为admin
密码经过哈希加密但在/secret_r0uter中泄露了
访问这个路径可以看见加密后的数字
简单让AI跑个java代码然后解密出原密码
1 | |
登录以后F12查看源码即可
要注意的是要用java代码进行哈希破解不用python进行哈希
Blank在提示下用python跑哈希解码失败了,我只能说竟然还有误导真是太坏了。
[1-Div1]ZakoLogin
生死时速局,多谢kuri大人手速援助()看看题目
看出来这个token的提示已经非常多了就差把wp贴上来了,看起来很怕爆零了,我初步推测是token变化是有规律的可以预测然后趁着下次token变化之前提前发包。
至于怎么看token的变化规律就先发一百次包吧hhh()于是半小时内速下yakit然后发包提取一百次token
提取完token然后重开一个容器yakit拦截对照提取出来的表,在下一次token更新前进行拦截
手速局孩子们。然后复现的时候发现并不能完全靠手速这个地方要先算准10s的刷新时机然后再发包才行,重复100次发包可以增加概率。
成功以后查看响应可以看见我们要找的token,但是有了token还不够,所以我们需要找到正确的url请求flag,想想登录成功会发生什么于是看看js代码
js代码应该在app里面,找到登录成功字段后面的path
发送目标url的请求带上找到的token值就可以找到了。(哎其实我不是大哥哥这是可以说的吗)
misc
[0-Div3]猫咪日记01
B1ank啥也不知道哦但是随波逐流一把梭()
[0-Div3]梅林午餐肉
题目提示为:
【雪不雪花任君选择can crash bacon 不要再玩你那个雪了flag全小写,加上花括号,单词之间用下划线拼接如果玩雪的话密钥为snow】
(忘记截图了…)
猜测为培根密码和snow隐写,也可以不用snow
下载完查看文件发现
这里把c换成A依旧是随波逐流一把梭,单词之间加上下划线就行。
如果好奇snow的话可以
1 | |
(这里meat.txt使用实际路径地址)
解密完是C=A所以可以不玩雪。
最后想说一些话
总算忙完了,复现成功,wp也写完了,程序设计改完了,sqlmap也调好了。就很想写点什么纪念一下。
其实感觉还挺迷幻的,因为9.4号才拿到电脑,然后九月上旬开始零基础打ctf,打web的时间可能也就一个多月吧,能打到这个地步我确实是没想到的,差一题就ak了。比赛打完了以后就被邀请加入乐队了,真的挺迷幻的,虽然学长们都在夸我,但总是不踏实。因为我跟队里其他人的差距还是有点多的,也在想如果别的选手跟我一样死轴web会不会比我做的更好。但是,可能就是在那个点进web的瞬间,在好玩与打不出的爱恨交织下倔强下去,不会就打到会,于是就这样一直打下来了。
很累,特别累。
什么都不会,从零开始摸索,没看过csdn也没看过github,看文档能看半天。工具一点点下,一点点调,超级社恐和内耗,问学长的时候感觉自己啥也不会,就特别清晰地知道自己的能力不足,压力很大。想起来我两个星期前发post包还能发错,然后php水平烂的不行,前端三件套也只知道个大概,java更是一点没学。
忐忑,不安,整个人在秋季逐渐寒冷的空气里蒸发掉水分,变成搁浅在岸边不知所措的鱼。
就这样就开始打新生赛了。
纯坐牢,压力很大,夹在ct两位大佬之间,周围吸引了一堆学长,压力更爆了,简直无法思考,捋不清一条完整的逻辑链。其实没人的时候我反而更冷静,唉。div2一个题能坐三四个小时,apache踩坑闭环坐了六个小时,java现学先卖打了三个小时,zako生死时速甚至最后半小时bp不行开始下yakit,卡在最后一分半交了flag。
一直开玩笑自嘲说边哭边打边打边哭,有的时候是真的很想哭的,但最终还是笑一笑打下来了。
现在想一想新生赛确实还有很多要优化的地方,很多逻辑上再冷静一点捋一捋会更快,能优化出时间去打unser,但是最终——最终还是止步于此了。
好像也没什么别的说的了,只好接着push自己接着打接着学了,校赛再战。
校赛再战。