• upload-labs1-17思路


    1

    直接写一个php文件测试一下,发现弹窗不让上传

    原理很简单,就是把后缀名拿出来过滤一遍,而白名单就是弹窗的这三个

    解决方法:

    因为这是在前端防御的一个手段,所以直接在浏览器设置上禁用js就行了:

    也可以用bp抓包然后直接改后缀

    2

    这关检测的是文件类型,也就是content-Type

    那就直接抓包改文件类型content-Type:image/jpeg就搞定了

    3

    这关过滤了.asp,.aspx,.php,.jsp后缀名

    根据这道题的httpd.conf文件的AddType application/x-httpd-php .php .php3.phtml,php3自动解析成php,所以后缀名改成php3就行了,这关方法仅限这道题

    4

    利用.htaccess文件,一般适用于伪静态的,也可以控制网站根目录下的文件解析,所以我们创建一个htaccess文件,然后写入规则:AddType application/x-httpd-php .jpg,作用就是将这个.jpg后缀当成php解析。

    所以我们先上传这个htaccess文件,然后再上传图片马,就成功了

    图片马的创建:

    一个图片,一个php文件,然后在命令行下copy xxx.jpg/b + xxx.php/a mmm.jpg,这个mmm.jpg就是图片马

    5

    这关没有大小写过滤,直接后缀名改成PHP就行了

    6

    没有过滤空格,用bp抓包在php后面加个空格变成'.php '就成功上传了

    注:这个特性是windows下的,linux是不行的

    7

    没有删除文件后缀的点,又因为windows会自动去除点,那就抓包改成xxx.php.直接绕过,然后windows自动去除点后执行php

    8

    这关没有过滤::$DATA

    像这样写:xxx.php::$DATA,这个::¥DATA写了就相当于没写,但是可以绕过上传成功

    9

    尝试下冒号截断:冒号可以将web.php:jpg截断,用jpg绕过后再把jpg丢掉,php上传成功,但是文件内容也被清空了。

    解决方法:在windows+php+iis(部分apache也可以),<等于*。

    那么我们这样写:web.<<<,会转换成???然后会匹配三个任意字符,就匹配上web.php了。

    所以这道题抓包改后缀名即可:

    10

    这关直接抓包双写绕过xxx.phphpp

    11

    看源码得知上传一个图片放到临时文件夹,然后通过move函数把这个临时文件覆盖到upload目录,正常情况下会是upload/temp.jpg

    问题在于这个路径是get,我们可以控制,所以抓包改路径构造成upload/shell.php%00temp.jpg

    这样就会把后面的jpg截断,因为php底层是c语言,00在c语言中是停止的意思

    所以相当于把shell.php传到upload目录了

    (这是php5.2的漏洞)

    12

    还是00截断,只是改成post了,%是urlcode编码的,这里不能用%了

    可以随便写一个内容,这里写了一个点,然后再post的16进制里改成00

    13

    检测文件内容的前两个字节

    先创建一个shell.gif文件,然后在一句话木马之前写一个GIF89a,这是伪造的图片头,上传成功,但是不能用,用文件包含才能用,先复制图片路径,然后打开一个include的文件,再添加参数为图片路径

    include就是一个把包含的文件当成php执行的函数

    14

    用图片马,然后加上一个include包含就行了

    .jpg .png后缀的时候不用加GIF89a

    15

    增加了一个类型判断:

    跟上一关操作一样

    16

    过滤图片马了,也就是会打乱图片顺序,所以图片马就会被打乱了,不能用。

    先随便传个上传个图片马,然后再把这个图片下载下来看看发现里面的一句话木马乱了

    思路就是在没有混淆的地方插入一句话木马,所以我们用010editor找可以放一句话木马的地方(只要能放下就行):

    然后把一句话木马插入这个不会改动的地方就能上了(可能找的地方会把图片格式弄乱,那就换一个地方写一句话木马):

    再把文件复制下来用文件包含打开即可(GIF好改一点,jpg、png格式比较复杂,改动容易出错,会被判定为不是jpg、png格式)

    jpg、png的话可以用脚本来弄,思路跟gif一样

    顺便提一句:比较好的防御方法是吧上传图片文件夹的执行权限去掉

    17

    这是在上传成功以后才判断的后缀,所以直接写php文件

    这关用一个竞争型的思路,因为这源码看得出来,先上传后再判断是否要删除

    我们写这样一个php文件:

    ')>;

    这个文件执行的话会在上一级目录创建一个php文件,当然,这个文件会被马上删除,但是在上传到删除之间是有一定时间的,我们正是要利用这一点。

    手工操作不现实,所以用bp的爆破的方式,相当于多次上传,然后我们就访问xxx/shell.php,一直手动刷新。也可以用bp再开一个进程,一个上传,一个访问就可以访问到了

    想避免这种条件竞争的漏洞就先过滤再上传

  • 相关阅读:
    LeetCode刷题复盘笔记—一文搞懂0 - 1背包之494. 目标和问题(动态规划系列第九篇)
    Typora 基本使用操作
    九、iOS原生应用(宿主App)与uni小程序间的通讯
    WPF 使用Image控件显示图片
    C语言之预处理
    传统制造业如何进行数据分析?_光点科技
    OneNote 教程,如何在 OneNote 中检查拼写?
    一台电脑生成两个ssh,绑定两个GitHub账号
    六、redis安装和配置
    upload-labs靶场通关指南(9-11关)
  • 原文地址:https://blog.csdn.net/vt_yjx/article/details/132778252