首先扫目录,然后从功能点中找漏洞,找不到试试bp的scan或者kali的whatweb。
页面多的时候不要忽略每一个页面的前端源码!
尝试触发报错,可能爆出路径/debug页面/版本信息
SQL注入
场景:登录,查询,cookie中
简单:闭合、注释、联合注入、报错注入,insert/update注入
综合:堆叠注入(prepare)、二次注入(select/update),无字段名查询,盲注(逻辑运算、正则匹配)、文件读取与写入、日志写入shell
绕过过滤:
- 空格->括号,
/**/
,%a0
- information_schema->猜flag表flag列;mysql.innodb
- substr->regexp/left/right/mid
- 逗号->from [offset] for [step]
- 等号->like
- 闭合符号+注释->反斜杠转义,需要两个参数互相配合
- 单引号->找数值型注入点
- 一些关键词过滤:
/**/
分隔- concat连接+预处理
- 注释符->
%00
结果处理:left/right/reverse/substr
文件上传
(有时候文件上传可能只是为了告诉你一个具有写权限的路径,并不能绕过)
与文件包含结合
.htaccess:FilesMatch,AddType,auto_append
.user.ini:auto_append_file
条件竞争
php短标签绕过php检测
phtml绕过<?检测
php7 segment fault特性(CVE-2018-14884)
文件包含
可以尝试读取:/flag,网站源码,/proc/self/下的文件
include把导入的字符串当成当前文件的代码结构,而file_get_contents只是返回字符串。
目录穿越
file://
命令执行
php代码注入
危险函数:eval,preg_match,create_function,extract,call_user_func,call_user_func_array,反引号
%09是空格
%0a换行,可以执行多条命令
$$变量覆盖
单引号过滤绕过:chr(102).chr(108).chr(108)
无参数代码执行
escapeshellarg+escapeshellcmd
json_encode_decode:Unicode编码绕过waf
Linux命令特性
文件内容读取函数:cat/tac/nl/more/less/head/tail/
文件查找:find+grep
分号分割多条命令;
问号?可作为占位符使用,可绕过关键词过滤
空格可替换为${IFS},$IFS$9
#可替换为%0a,忽略后面的内容;
关键词绕过:反斜杠代表分行,不影响命令执行;空变量$@
nmap用法
SSRF
(有时候url参数可能不是ssrf,只是单纯的文件包含
gopher协议:gopher://IP:port/_TCP/IP数据流
代码审计
获取源码的方式:扫后台备份;文件包含;show_source
php(反序列化和各种绕过
见代码注入
弱类型比较绕过:md5,intval,”字符串”==0为真,True==任意非False值为真,preg_match,整数与字符串类型比较时,会先将字符串转化为整数然后比较。
通过url编码可绕过:$_SERVER['QUERY_STRING']
,$_REQUEST
$_REQUEST取值POST优先级更高
preg_match:无字母数字rce(异或+取反);PCRE回溯次数;
参数解析特性:删除空白符(%20/%00);将某些字符([,+,.)等等转换为下划线(包括空格)
require_once:hash匹配失效
mt_rand:爆破seed
create_function:可闭合
原生类特性:Error(绕md5),SoapClient(_call存在SSRF)
魔术方法:toString, sleep, wakeup(绕过), get, set, call,invoke
php单引号中的内容不会被解析为特殊字符
phar反序列化
php反序列化字符逃逸
模板注入
jinja2
找到可利用的包,实现命令执行
- 绕过
class
等关键词过滤- 字符串拼接
- request.args
- 下划线过滤->十六进制\x5f
- 单引号<->双引号
- 点号<->中括号
twig
smarty:直接执行php代码
敏感信息泄露
WEB_INF
通过扫目录观察可得
.git/
GitHack提取源码
GitHacker提取git相关配置信息,用于恢复git环境
常用git命令
1 | git log --all |
编码解码
Django:编码爆出debug界面
Mysql:宽字节
JSON:decode会自动解Unicode为utf-8
逻辑漏洞
身份验证绕过:jwt
支付0元购
其他
nodejs
- vm沙箱逃逸
- 原型链污染
- js大小写绕过
C
- include文件头报错
python
- flask session伪造
- django 字符集报错
- format漏洞
- os.path.join路径穿越
- Unicode编码字符等价绕过:unicodedata.numeric(‘万’)=10000
- idna编码+utf8解码导致字符绕过
- pickle反序列化
CRLF注入
XSS
- CSP绕过