这篇记录的是后10关,基本上都是白名单绕过,完结撒花。
第十一关
通过上传发现是白名单限定了上传文件格式,后缀名必须是规定好的jpg,png,gif。
我们可以尝试采用00截断的方式来绕过上传。(将上传的php后缀改为png,在目录后添加文件名利用0x00截断。)
放包,查看上传后的页面,报错。
实际上上传的文件名不是这个,经过截断后正确的应该是phpinfo.php
第十二关
通过上传测试还是白名单限制,尝试00截断,无果。查看源码,采用的是POST上传,不会对%00进行解码。因此我们要添加已经解码的%00。
放包,上传成功
第十三关
提示上传图片马。所以先做一个图片马。
1 | 准备好一句话木马1.php,准备好一张图片1.png,cmd里面输入 |
上传图片马,成功。
文件包含到图片马
这一题还可以直接修改文件幻术头绕过文件检测,常见的文件幻术头。
常见文件头:
(1) .JPEG;.JPE;.JPG,”JPGGraphic File”
(2) .gif,”GIF 89A”
(3) .zip,”Zip Compressed”
(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”(5).JPEG/JPG: FF D8
(6).PNG:89 50
(7).GIF:47 49
比如这题,可以抓包将php头部两字节改成JPG的幻术头绕过检测。
第十四关
这题同样是上传图片马。但是这次我们直接上传小马,改成PNG的89 50来绕过试试。老规矩先抓包(上传的小马后缀也改成png)
这题直接改头部没有,但是十三关可以,具体原因暂时不知道,以后再补,特此记录
传个十三关用的图片马,绕过。
第十五关
这里用到了php_exif模块来判断文件类型,所以单纯依靠改幻数头是过不了的,上传之前用过的图片马。
第十六关
查看源码,上传的图片会被二次渲染,png,jpg,gif渲染后改变的部分不一样。这里先准备一张gif图,往里面插数据(先不插数据上传再对比原图可以知道哪些数据被污染)。
别的格式图片上传可参考https://xz.aliyun.com/t/2657
这里要注意并不是所有gif图片都可以插数据,可以多试几张图片
第十七关
通过代码审计注意到有unlink函数,对不符合的文件进行删除。也就是说服务器确实是储存了上传的小马,用bp大量发包形成条件竞争在服务器删除一个时又有一个保留在服务器内。
1 | '1.php','w'),'<?php @eval($_POST["bu1"]);?>'); fputs(fopen( |
在本机测试时小心点,电脑不好线程别调太高…
第十八关
通过对源码进行审计发现有上传白名单,并且上传后会对图片进行处理。这里我们也是可以利用条件竞争来绕过上传。这里还有一个点就是利用到了apache的解析漏洞,把shell文件名改为shell.php.7z。apache会把它当做php文件进行解析。
第十九关
查看与审计代码,这里可以自定义名字,但是我们发现可以构造特殊名字绕过上传。这里的php_并不能被解析,我只是做一个尝试,成功绕过实际上我们可以用php.代替
这题可以自定义保存,考点应该是CVE-2015-2348中move_uploaded_file()的00截断 ,但是上面用过了,这里就不演示了。
第二十关
这关是个综合题,通过审计代码发现先有个MIME限制。如果名字留空会对文件名字进行分割,我们可以利用这个构造特殊的名字。
*