SQL注入
当客户端提交的数据未作处理或转义直接带入数据库就造成了SQL注入
web框架
在这里插入图片描述
SQL环境搭建
使用GitHub上开源的sqli-labs https://github.com/Audi-1/sqli-labs
1安装php +Mysql+Apache
下载WAMP,安装
下载Sqli-labs配置运行
2安装Docker版本
下载docker
下载Sqli-labs配置运行
SQL注入原理
灵活的SQL查询语句+用户输入的数据带入了SQL语句=用户直接操作数据库->SQL注入漏洞
思路
php后端的SQL语句:
SELECT * FROM users WHERE id=’ ’ LIMIT 0,1
正常请求时:
127.0.0.1/less-1/?id=1
对应的SQL语句:
SELECT * FROM users WHERE id=’ 1 ’ LIMIT 0,1
查询结果是三列
id username password
构造的select语句,在id=1后面加构造的东西,使用联合查询,加两个占位符
SQL注入构造的url
127.0.0.1/less-1/?id=-1’ union select 1,2,version() #
对应的SQL语句
SELECT * FROM users WHERE id=’ -1’ union select 1,2,version() # ’ LIMIT 0,1
得出:
数据库的版本
MySql
常用函数
https://dev.mysql.com/doc/refman/5.7/en/dynindex-function.html
Mysql运算符
SQL注入流程
1寻找SQL注入点
目标搜集:
无特定目标
inurl:php?id=
有特定目标:
inurl:php?id=site:target.com
工具爬取
spider,对搜索引擎和目标的链接进行爬取
2注入识别:
1)手工简单识别:
’
and 1=1/ and 1=2
and ‘1’='1 /and ‘1’=2
and 1 like 1/ and 1 like 2
2)工具识别:
sqlmap -m filename(filename中保存检测目标)
sqlmap --crawl(sqlmap对目标网站进行爬取,然后进行测试)
3)高级识别
扩展识别广度和深度:
SqlMap --level 增加测试级别,对header中相关参数也进行测试
sqlmap -r filename(filename中为网站请求数据)
利用工具提高识别效率
BurSuite +SqlMap
BurSuite拦截所有浏览器访问提交的数据
BurpSuite扩展插件,直接调用SqlMap进行测试
一些Tips
可以在参数后键入 “+”来确定想要测试的参数
可能出现注入的点:新闻,登录,搜索,留言…
站在开发的角度去寻找
4)代码审计
搜索代码和函数
梳理业务流程