Upload-labs 1-20关靶场通关攻略(全网最全最完整)

12、Pass-12(post 00截断)

看源码:

我们可以看到和上一关的不同是上一关是get传参,而这一关是post传参

那么在这关受罚就要有点小小的不同了

因为上一关%00是经过url的编码,而post不会,所以在这一关我们就需要现在web.php后面加一个占位符,将其16进制改为00,这样孔子杰就出现了,最后在移动文件的时候就会触发\00截断

说也说了,我们直接试试,还是抓包进行修改

可以看到上传成功

13、Pass-13(图片马unpack)

这一关要让我们使用图片码来进行上传解析

那什么是图片吗呢?图片码就是在一张图片中写上我们的一句话,然后利用php的文件包含特性,可以将我们的图片以php进行解析

看源码:

function getReailFileType($filename){
f i l e = f o p e n ( file = fopen( file=fopen(filename, “rb”);
b i n = f r e a d ( bin = fread( bin=fread(file, 2); //只读2字节
fclose($file);
$strInfo = @unpack(“C2chars”, $bin);
t y p e C o d e = i n t v a l ( typeCode = intval( typeCode=intval(strInfo[‘chars1’].$strInfo[‘chars2’]);
f i l e T y p e = ′ ′ ; s w i t c h ( fileType = ''; switch( fileType=′′;switch(typeCode){
case 255216:
$fileType = ‘jpg’;
break;
case 13780:
$fileType = ‘png’;
break;
case 7173:
$fileType = ‘gif’;
break;
default:
$fileType = ‘unknown’;
}
return $fileType;
}

$is_upload = false;
m s g = n u l l ; i f ( i s s e t ( msg = null; if(isset( msg=null;if(isset(_POST[‘submit’])){
$temp_file = $_FILES[‘upload_file’][‘tmp_name’];
f i l e t y p e = g e t R e a i l F i l e T y p e ( file_type = getReailFileType( filetype=getReailFileType(temp_file);

if($file_type == ‘unknown’){
$msg = “文件未知,上传失败!”;
}else{
i m g p a t h = U P L O A D P A T H . " / " . r a n d ( 10 , 99 ) . d a t e ( " Y m d H i s " ) . " . " . img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".". imgpath=UPLOADPATH."/".rand(10,99).date("YmdHis").".".file_type;
if(move_uploaded_file( t e m p f i l e , temp_file, tempfile,img_path)){
$is_upload = true;
} else {
$msg = “上传出错!”;
}
}
}

在getReailFileType()函数中,对图片的头部进行了判断,图片的头部对定义特定的图片类型,所以我们在制作图片码的时候不能再头部进行改动,

图片马的制作:首先找一张jpg图片和一句话木马,打开cmd,输入以下代码

copy web.jpg/b + web.php/a web1.jpg


web.jpg
web.php
已复制 1 个文件。

然后我们进行上传

上传成功,我们使用靶机给我们的文件包含漏洞进行解析

这个文件包含的特性是会将我们所有包含进来的文件都以php进行解析

14、Pass-14(getimagesize图片马)

源码:

这一关同理,将获取文件类型进行判断,直接上传上一关 的图马记性

15、Pass-15(exif_imagetype图片马)

知识补充: exif_imagetype()读取一个图像的第一个字节并检查其后缀名。
返回值与getimage()函数返回的索引2相同,但是速度比getimage快得多。需要开启php_exif模块。

所以还是可以用第十四关的图片马绕过,并使用文件包含漏洞解析图片马

16、Pass-16

源码:

$is_upload = false;
m s g = n u l l ; i f ( i s s e t ( msg = null; if (isset( msg=null;if(isset(_POST[‘submit’])){
// 获得上传文件的基本信息,文件名,类型,大小,临时文件路径
$filename = $_FILES[‘upload_file’][‘name’];
$filetype = $_FILES[‘upload_file’][‘type’];
$tmpname = $_FILES[‘upload_file’][‘tmp_name’];

t a r g e t p a t h = U P L O A D P A T H . ′ / ′ . b a s e n a m e ( target_path=UPLOAD_PATH.'/'.basename( targetpath=UPLOAD

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值