CTF-WEB
文件上传
1. 前端校验
- 校验方法:JavaScript判断后缀,类型等
- 绕过:Burpsuite抓包,禁用js
2. Content-Type校验
- 检测image/gif $ _ FILES[‘userfile’] [‘type’] != “image/gif”
- http头可以随意修改,不可信
- 绕过:Burpsuite抓包
3. 黑名单 过滤绕过
- 可能过滤不全
- .php3 .php5 .phtml
- .htaccess
- 大小写绕过
- 简单替换 str_ireplace(file_name);
- windows特性
- 空格 和 点 在文件末尾会被忽略
- ::$DATA 忽略
4. 特殊文件
- .htaccess全称是Hypertext Access(超文本入口),控制目录文件行为
- 配置
- AllowOverride All
- LoadModule rewrite_module /user/lib/apache2/modules/mod_rewrite.so
- 功能:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定地址IP的用户、禁止目录列表
- 利用:
- 上传.htaccess 让给定目录下所有文件被视为php解析
SetHandler appllcation/x-httpd-php - 将所有xxx结尾的文件视为php解析
AddType appllcation/x-httpd-php xxx
- 上传.htaccess 让给定目录下所有文件被视为php解析
5. 漏洞解析
- Apache
- 陌生后缀解析:从后往前解析,碰到陌生后缀跳过,直到碰到认识的后缀
- apache 1.x,2.x :1.php.xxx ----> 先解析xxx 之后php…
- 换行解析(CVE-2017-15715):将换行符作为后缀解析
- apache 2.4.0-2.4.29:1.php%0A
- nginx:cgi方式支持php解析,正则判断
- 条件:cgi.fix_pathinfo=1:phpinfo.jpg /1.php
- 陌生后缀解析:从后往前解析,碰到陌生后缀跳过,直到碰到认识的后缀
6. %00(url编码) 和 0x00 (16进制)截断
- 场景:$img_path = $ _ GET[‘save_path’]."/".rand(10,99).date(“YmdHls”).’’.’’.$file_ext;
- 利用
- GET传参:save_path = …/upload/info.php%00
- POST传参:save_path = …/upload/info.php\x00
SQL注入
1. 典型攻击手段:
- 判断应用程序是否存在注入漏洞
- 收集信息、并判断数据库类型
- 根据注入参数类型,重构SQL语句原貌
- 猜表名、字段名
- 获取账户信息、攻击WEB或为下一步攻击做准备
2. 出题人套路:
- 屏蔽关键词
- 加无意义符号:空格,回车,tab键
- 编码
- 替换关键词
- 拼接
- 大小写混写、双写
- 内联注释
- 隐藏注入点
- 增加页面数
- 使逻辑结构复杂化
- 伪装不是注入点
- 改变注入参数(http头文件)
- 加密
- 加密后在进入数据库 ffifdyop
- 手注 + 盲注
- sqlmap等工具等绕狗脚本
- 代码审计和综合考察
- 扫描目录
- robots.txt
- tar、zip、bak、rar等
- 代码审计:
- 通读代码(结构、功能、关键信息)
- 细审上传、数据存取、命令执行等页面
- 追踪函数
- 寻找疑似漏洞功能
- 扫描目录
XSS漏洞
1. 反射型
- 一般不会进入服务器
- 特点:非持久性型,参数跨站脚本
- 作用:调用用户cookie或者进行钓鱼
2. dom型
- 新型的xss漏洞,基于js,可以归属于反射型xss
3. 存储型
- 进入服务器
- 特点:持久型、更具有危害性
- 作用:渗透、挂马、蠕虫病毒、钓鱼