UPLOAD-LABS靶场(2)

第四题

可以看到禁止上传文件类型很多
源码黑名单

$deny_ext = array(".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf");

图来自博文Upload-labs 1-21关 靶场通关笔记(含代码审计)_addhandler sethandler upload 19关-优快云博客

.htaccess文件不在给名单之内,可以写一个文件规则绕过,上传一个.htaccess,这个文件内容的意思是告诉apache当遇到webshell.jpg文件时,按照php去解析:

运行图片木马

第五题  大小写绕过黑名单

这道题,不允许上传ini文件盒htaccess文件

没有禁止phP 、Php 所以将文件名字大小写就绕过了限制

第六题  空格绕过

在PHP中,trim() 函数用于去除字符串两端的空白字符(或者由参数指定的其他字符)。如果需要去除字符串中间的空格,可以使用 str_replace() 函数。

基本语法:

php

string trim ( string $string [, string $character_mask ] )
  • $string 是需要去除空白字符的原始字符串。
  • $character_mask 是可选参数,用于指定需要去除的字符集合,默认为去除空白字符。

示例:

php

$str = "  Hello, world!  ";
echo trim($str);  // 输出 "Hello, world!"

// 使用自定义的字符集合
$str = "###Hello, world!###";
echo trim($str, "#");  // 输出 "Hello, world!"

trim() 函数默认去除字符串两端的空格、制表符、换行符等空白字符。如果需要去除字符串两端的特定字符,可以通过第二个参数指定这些字符。

此外,PHP还提供了几个类似的函数,如 ltrim()rtrim(),分别用于去除字符串左端或右端的空白字符。这些函数的使用方式与 trim() 类似。

本题的源码当中没有写trim函数对空格进行控制,但是在Windows系统中会自动去掉空格,因此我们需要抓包来进行操作

第七题  点绕过

在PHP中,deldot() 函数通常是一个自定义函数,它的作用是从字符串的尾部开始,从后向前删除点.,直到该字符串的末尾字符不是.为止。这个函数在文件上传利用中比较常见,尤其是在处理文件名时,用来删除文件名末尾的点,以防止某些文件上传漏洞的利用。

以下是deldot()函数的一个可能的实现方式:

php

function deldot($s){
    for($i = strlen($s)-1; $i>0; $i--){
        $c = substr($s,$i,1);
        if($i == strlen($s)-1 and $c != '.'){
            return $s;
        }
        if($c != '.'){
            return substr($s,0,$i+1);
        }
    }
}

这个函数通过从字符串的末尾开始检查每个字符,如果遇到不是点.的字符,就返回去掉末尾所有点.后的结果。如果整个字符串都是点.,则返回原字符串。

例如,对于以下输入:

php

echo deldot("hello world")."\n";
echo deldot("hello world.")."\n";
echo deldot("hello world....")."\n";
echo deldot("hello.world.")."\n";

输出为:

hello world
hello world
hello world
hello.world

可以看到,只有当点.前有其他字符时,点才会被删除。如果字符串以点.结尾,则这些点不会被删除。这个函数在处理上传文件的文件名时非常有用,可以防止一些基于文件名的攻击。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

antique toy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值