SQL注入:MySql探子回报函数
探子相关函数基本使用
查看当前链接数据库用户
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
mysql> select current_user();
+----------------+
| current_user() |
+----------------+
| root@localhost |
+----------------+
mysql> select session_user();
+----------------+
| session_user() |
+----------------+
| root@localhost |
+----------------+
获取当前数据库版本信息
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.26 |
+-----------+
获取当前数据库名称
mysql> select database();
+------------+
| database() |
+------------+
| NULL |
+------------+
获取当前数据库名称长度
mysql> use test;
Database changed
mysql> select length(database());
+--------------------+
| length(database()) |
+--------------------+
| 4 |
+--------------------+
#判断字符长度
#原理:网页是否能够正常显示
mysql> select length(database()) > 4;
+------------------------+
| length(database()) > 4 |
+------------------------+
| 0 |
+------------------------+
mysql> select length(database()) > 3;
+------------------------+
| length(database()) > 3 |
+------------------------+
| 1 |
+------------------------+
因此证明数据库为四个字符
获取左边的第一个字符
#依次尝试,直到网页显示正常为止
mysql> select left(database(),1)='t';
+------------------------+
| left(database(),1)='t' |
+------------------------+
| 1 |
+------------------------+
#left函数
mysql> select left(database(),1);
+--------------------+
| left(database(),1) |
+--------------------+
| t |
+--------------------+
mysql> select left(database(),2);
+--------------------+
| left(database(),2) |
+--------------------+
| te |
+--------------------+
mysql> select left(database(),3);
+--------------------+
| left(database(),3) |
+--------------------+
| tes |
+--------------------+
mysql> select left(database(),4);
+--------------------+
| left(database(),4) |
+--------------------+
| test |
+--------------------+
切割函数substring
#指定截取范围
mysql> select substring(database(),1,1)='t';
+-------------------------------+
| substring(database(),1,1)='t' |
+-------------------------------+
| 1 |
+-------------------------------+
定位函数
#函数1 position()
#可用于确定user()函数显示后,@的位置
mysql> select position('@' in user());
+-------------------------+
| position('@' in user()) |
+-------------------------+
| 5 |
+-------------------------+
#函数2 locate()
mysql> select locate('@',user());
+--------------------+
| locate('@',user()) |
+--------------------+
| 5 |
+--------------------+
什么是探子回报
user(),cersion()
探子:测试程序是否同时对函数,子查询,括号等存在过滤。
执行成功,则说明存在注入的可能性,可能执行复杂的逻辑子查询。
执行失败,基本上说明注入困难或者注入可能性很小
盲注中如何猜测用户名密码
1)猜测用户名有多少个字符
2)确认@的位置
3)逐个猜测每个字符的准确信息

浙公网安备 33010602011771号