(此为课堂笔记整理,方便日后学习)
一. SQL注入攻击原理
原因分析:
由于程序中对用户输入检查不严格,导致用户提交的非法数据被当作SQL语句的一部分来执行(即改变了系统后台原有的SQL语句结构),从而使攻击者获得某些他想得知的数据。
目标:
借Web应用的”刀“来攻击服务器数据库或操作系统
二. SQL注入攻击类型
A. 字符串内联注入
B. 数字值内联注入
C. 终止式注入:利用注释符
D. 搜索型注入:利用搜索关键字
A. 字符串内联注入:
程序员考虑的场景:
Username: admin
Password: p@$$w0rd
SELECT COUNT(*) FROM Users WHERE username='admin' and password= 'p@$$w0rd'
程序员未考虑的场景:
Username: admin' and 1=1 OR ‘1’=‘1
Password: 1
SELECT COUNT(*)FROM Users WHERE username=‘admin' and 1=1 OR 1’=‘1 and password='1'
B. 数字值内联注入:
常用的判断SQL注入攻击方法:在数字型的参数后跟上假条件或真条件
http://.../list.php?uid=45 and 1=1 页面返回正确
http://.../list.php?uid=45 and 1=X 页面返回错误
C. 终止时注入:
终止式SQL语句注入是指攻击者在注入SQL代码时,通过注释剩下的查询来成功结束该语句。
常用的向数据库添加注释的语法如下:
1、--:用于单行注释,该符号后的SQL语句将不再被执行
2、/* */用于多行注释,处于该符号中间的SQL语句不会被执行
三. SQL注入攻击常见的方法:
SQL注入工具:(SQLMAP、BurpSuite等)
手工注入:
a. 联合查询
b. SQL盲注
四. SQL注入流程:
(1)找到带参的URL或表单
(2)判断是否存在注入
(3)通过SQL注入语句实施注入攻击:
猜解表名;猜解列名;猜解内容