一、本质
用户输入的数据当做代码执行
条件:
用户能控制输入
原本程序要执行的代码,拼接了用户输入的数据后执行
应用场景:任何和数据库交互的传参
二、分析
1、判断
(1)and
and 1=1 正确
and 1=2 错误
有几率有SQL注入
(2)加减乘除符号
但输入id=2-1,返回id=1的页面的时候,类似,加减乘除运算生效,一定存在SQL注入漏洞
ps:url栏里内容经过url编码,会把空格编码成+,所以要输入+,则需要转编码为%2b,在站长工具URL编码中转换
(3)sleep()
and sleep(),and 1>0
三、SQL注入流程
1、猜字段
(1)联合查询
UNION =>联合查询 把两条SQL语句一起输出(不显示重复值,UNION ALL会显示重复值)
两个语句必须相同列数,相同字段
(2)排序
order by 1 默认第一个字段排序,默认升序
通过order by 数字查询数据表有几个字段
2、查找回显点
让id=1无法正常显示,也就是id=多少是不存在的,然后url中嵌入union select找到输出点(用户需要看到的东西)
select 1,2,3 加入显示3,则第三个字段是回显点,则前两个在第五步查找数据表时需要占位
3、系统自带库查找表名,字段名
(1)查找数据表
知道有什么库:dat