任意文件上传CTF20关

upload-labs

一个帮你总结所有类型的上传漏洞的靶场

文件上传靶机下载地址:https://github.com/c0ny1/upload-labs?

服务端检查内容 2、? ? 3、 4 、需要结合文件包含漏洞。

黑名单基本都可绕过。最不安全。

pass-01? 客户端绕过

pass-02? ?把以.php结尾的小马改为以.jpg|.png|.gif结尾,用burpsuite抓包,在把.jpg|.png|.gif改回.php即可上传成功

pass-03 :

设置了黑名单和删除两边空格。

$deny_ext=array('.asp','.aspx','.php','.jsp');? 这里是黑名单验证 可以试下php3 php5后缀名? 但是Apache默认是不允许解析 如果运维人员修改配置文件是可以解析的

如果中间件是IIS6.0 2003服务器的话 可以利用IIS的解析漏洞绕过

直接上传名为xx.asp:.jpg的文件


pass 04:

先看源码,集合可以绕过的都设置了黑名单,删除文末的点和收尾去空

利用Windows的命名特性 ,先把马的名字改成xx.jpg抓包 改扩展名 改成xx.php:.jpg 上传。? ?Windows系统会自动去掉:.jpg? ? 上传之后变为xx.php。

但是文件是空的然后再上传一遍? ?然后将文件名改为x.<或x.<<<或x.>>>或x.>><后再次上传,重写x.php文件内容,Webshell代码就会写入原来的x.php空文件中。

pass-05:

先看源码。

分析代码,发现以.htaccess为后缀的文件已经不允许上传,但是??$file_ext =?strtolower($file_ext);?//转换为小写??这一句没有了,我们就可以使用文件名后缀大小写混合绕过,把1.php改为1.phP...来上传

黑名单后缀名:$deny_ext=array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".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",".htaccess");

先将要上传的木马改为jpg格式? ,在抓包 改为 x.phP? ?(windows操作系统不区分大小写所以可以执行)

pass-06:

先看源码:没有收尾去空。

利用Windows系统的文件名特性。文件名最后增加空格和点,写成1.php .,这个需要用burpsuite抓包修改,上传后保存在Windows系统上的文件名最后的一个.会被去掉,实际上保存的文件名就是1.php

滤代码会删除文件名后面的点但是过滤时只过滤.php? 没过滤.php点

利用Windows字体文件命名特性? 在xx.php后面加空格点? . 直接切掉 .? 只留xx.php

pass-07:
看源码:

原理同Pass-06,文件名后加点和空格

pass-08:

分析代码,少了????$file_ext =?str_ireplace(‘::$DATA‘, ‘‘,?$file_ext);//去除字符串::$DATA ???这一句,我们可以采用Windows文件流特性绕过,文件名改成

1.php::$DATA , 上传成功后保存的文件名其实是1.php

pass-09:

原理同Pass-06,上传文件名后加上+空格+,改为1.php. .? ? ?(点 空格? 去了 还有一个点)

pass-10:

pass-11:
白名单绕过,跟PHP版本有关。

重点:白名单绕过PHP版本要小于5.3.4? 魔术符号要关闭。

修复建设:?php版本要小于5.3.4,5.3.4及以上已经修复该问题;magic_quotes_gpc需要为OFF状态)(有可能会上传失败,将版本改为5.3.4以下版本后,开启魔术符号,在关闭,在重启就好啦)

分析代码,这是以时间戳的方式对上传文件进行命名,使用上传路径名%00截断绕过,不过这需要对文件有足够的权限,比如说创建文件夹,上传的文件名写成1.jpg, save_path改成../upload/1.php%00(1.php%00.jpg经过url转码后会变为1.php\000.jpg),最后保存下来的文件就是1.php

pass-12:

原理同Pass-11,上传路径0x00绕过。利用Burpsuite的Hex功能将save_path改成../upload/1.php【二进制00】形式??

.

pass-13:? (需要在看一遍)
先上传jpg,抓包改为PHP,空格? 绕过文件头检查,添加GIF图片的文件头GIF89a,绕过GIF图片检查。

或者我们使用命令copy 1.jpg /b + shell.php /awebshell.jpg,将php一句话追加到jpg图片末尾,代码不全的话,人工补充完整。形成一个包含Webshell代码的新jpg图片,然后直接上传即可。但是我们没有办法拿到shell,应为我们上传的图片马无法被解析成php形式,通常图片马配合%00或者0x00截断上传,或者配合解析漏洞

pass-14:
源码:

getimagesize()?函数用于获取图像尺寸?,索引 2 给出的是图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM

这里有详解:https://blog.csdn.net/sanbingyutuoniao123/article/details/52166617

image_type_to_extension()?函数用于获取图片后缀

做法同上。? (很多函数都可用图片头绕过)

pass-15:

源码:

exif_imagetype()? 此函数是php内置函数,用来获取图片类型。

做法同上。用图片头绕过。

pass-16:

1、生成新的图片(相当于直接干掉图片里的木马)2、给图片重命名,这是最安全的一种方式。

? ? ? ? 原理:将一个正常显示的图片,上传到服务器。寻找图片被渲染后与原始图片部分对比仍然相同的数据块部分,将Webshell代码插在该部分,然后上传。具体实现需要自己编写Python程序,人工尝试基本是不可能构造出能绕过渲染函数的图片webshell的。

这里提供一个包含一句话webshell代码并可以绕过PHP的imagecreatefromgif函数的GIF图片示例。

php图像二次渲染:

https://blog.csdn.net/hitwangpeng/article/details/48661433

https://blog.csdn.net/hitwangpeng/article/details/46548849????

https://xz.aliyun.com/t/2657

这两个讲的还可以

(试哪个木马经过二次渲染之后还在,留下那个木马。在 上传文件夹里有可留下来的webshell木马)

pass-17:

原理(自己理解):其实图片是有到过对方服务器的,只是以处理速度极快的方式被处理掉了,我么需要在被处理之前让他不被处理,这就是时间竞争。

官方解释:这关利用的是竞争条件,服务器先允许你上传文件,然后检测是否合法,不合法再删除,我们要利用的就是在服务器删除前,访问到我们上传的php。

举个例子:

第一步:

选择准备好的tj.php。

tj.php作用,创建一个文件,再往这个文件里写入一句话木马(代码) 。

只针对上传的文件进行检测,重新写入的文件是不会被删的。

抓包:

开始上传,抓包,发到测试器里,做如下设置:

有效载荷数设为,没有负载,生成3000有效负载

线程数设为100。

最后开始攻击。

我们可以在upload里看到,文件可以上传只是在很短的时间内被删除。

第二步:

在创建一个包,访问tj.php,在被删除之前访问到,就会重新写入一句话木马(代码),时间竞争。访问tj.php,再开一个brup suite,抓包

进行同上设置,两个测试器同时开始攻击,

,在被删除之前访问到,就会重新写入一句话木马(代码),时间竞争。

pass-18:

看源码:7z没有加入黑名单,所以讲下面文件命名为7z。

刚开始没有找到绕过方法,最后下载作者Github提供的打包环境,利用上传重命名竞争+Apache解析漏洞,成功绕过。

上传名字为1.php.7Z的文件,快速重复提交该数据包,会提示文件已经被上传,但没有被重命名。

(阿帕奇从右往左解析,当遇到不认识的扩展名就会往前解析,所以会当成php解析。)

快速提交上面的数据包,可以让文件名字不被重命名上传成功。

然后利用Apache的解析漏洞,即可获得shell

pass-19 :同上。

pass-20:

上传1.jpg

抓包做如下更改。发送。

双文件上传,后者jpg起到一个欺骗的作用,实际上传的是前面的111.php。

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351