一、关于概念

sql 盲注是对于那些页面没有回显的错误,只能依靠自己的经验去一点一点猜测,这就比较耗费时间了,

具体的一些原理可以参考https://blog.csdn.net/qq_36706878/article/details/79530211

注:以下例子都是关于实验吧,简单的sql注入3,大家可以自行实验

二、开始实验

(1)、首先我们还是一样判断他是字符型还是数字型,我们发现 他还是有显错的,但是这不妨碍我们用盲注的套路解题

     那么当我们知道这是一个字符型的注入的时候,那我们再来看看它既然要用到盲注肯定有一个正确结果和错误结果返回的页面情况,那么我们来试试

那么在这里我用了两个payload id=1‘ and 1=1 --+(其中--+为注释后面单引号)和id=1’ and 1=2 --+

你同样可以使用其他的payload来尝试,这个结论是当我们输入正确的时候页面返回一个hello,输入错误的时候页面什么都没有,那只要有不同我们就可以通过sql盲注干翻他

(2)认识length()

length函数是可以返回查询结果的长度,那么我们通过盲注就可以来缩小范围,那么我们使用

id=1‘ and (length (database()))>3--+

咱们先解释一下下这条sql语句,后面的length()返回括号内database()函数的长度,database()函数执行之后会返回数据库名称,那么得到数据库名称的长度是否大于3,如果大于3的话后面判断为真,整个逻辑表达式为真,你如果小于3,则and后面表达式为假,返回页面也就是假,那么通过这样不断的判断得到数据库名称长度为4

在这里我们发现返回结果为正确,那么我们可以继续猜测看看> 4 的结果如何

我们会发现返回错误,那么此时我们就可以推测,数据库的名称的总长度为4,既然我们知道总长度为4,那么如何知道名称是什么呢?

(3)认识if(),ascii(),substring(),mid()函数

if()函数我感觉很多人会比较迷糊,但是翻过MySQL手册你会发现,他里面有三个参数if(表达式1,表达式2,表达式3)那么在执行if()函数的时候会首先判断表达式1,如果表达式1为真,则执行表达式2,否则执行表达式3,那大家可以看看这是不是很像我们C语言的三目运算符  表达式1?表达式2 :表达式3。

那么我们接着来看第二个ascii()函数这个没什么好说的就是把字符转化为ASCII码

接下来的substring()和mid()函数其实是一个类型函数,叫做字符串截取函数,那么他们有三个参数substring(?,?,?)那么第一个参数是你想要截取的字符串,第二个参数是截取字符串的起始位置,第三个参数是你想要截取字符串的位数,也就是你想截几位

那么好我们接下来构造一个payload :id=1' and if(ascii(substring((select database()),1,1))=65,0,1)--+那么我们现在来解释一下这个payload,首先构造if(表达式1,0,1), 那么在表达式1中如果为真那就执行0,也就是返回页面错误,为假就执行1,也就是返回页面正确,那么现在问题在这个表达式1中,他到底是一个怎样的逻辑,也就是ascii(substring((select database()),1,1))=65 那么ascii(字符)=65 也就是这个就是表达式1,我们需要判断括号中的字符是不是65 也就是是不是A,如果是页面返回错误,如何不是页面返回正确(也就是返回hello)

那么接下来的ascii(字符)这个字符又是何方神圣?也就是这一段substring((select database()),1,1)那么在这个函数中我们看看substring函数中的三个参数,第一个(select database())注意这里需要用括号括起来sql语句执行返回的结果,以避免意想不到的错误,那么当然我们执行select database() 就是返回数据库名称这个字符串,后面两个参数就是从第一个字符开始截取,截取一位。

现在让我们联合起来看看这个payload,意思就是说截取数据库名称中的第一位,然后判断是否是字符A,如果是的话返回错误页面,如果不是的话返回正确页面,也就是hello,现在咱们看看这个截图

返回页面为hello,那就说明我们的猜测是错误的,这也就是sql盲注的主要思想,猜测,但是如果真要去一个一个猜测那可就真考验耐心了,所以大家注意我上面payload的标红的地方,我们完全可以通过修改ASCII码值来自动化,毕竟字符有127个,而且这还只是第一个字符,那么这时候我们可以用到burpsuite批量完成

那么现在地看第一张图,注意看画框框的地方,我们将其中两个作为变量,画框的阴影部分第一个变量是字符的第几位,第二个变量是字符的ASCII码值,那么现在看第二个张图,他有我们设置第一个参数为Numbers,从1到4,(那么这也就解释了为什么一开始我们要测试数据库长度,就是在这里用到)step每次加1,第三张图片类似,只不过将ASCII码值从0自增到127,现在让我们看看结果

这时我们发现1 119,2 101,3  98,4  49 查阅ASCII表得到数据库名称为web1至此我们就算是得到了他的数据库名称,根据上面的步骤我们就可以陆续得到相应的表名,列名,字段名,下面我就不取截图,大家可自行体会

可以参考https://blog.csdn.net/sinat_41380394/article/details/81544700

得到你的答案,祝你好运!!!

sql盲注的一些小心得相关推荐

  1. 让你轻松学会PHP版自动化SQL盲注工具-全库-全表-全字段-全字段值查询

    前言 由于一些个人原因,很久没有研究WEB安全方面的一些问题了(废话四个月前月还发了帖),正好炎炎夏日暑假的生活到来,这个时候我需要的是恶补,恶补,恶补.兜兜转转到了SQL盲注部分,然后在SQL盲注上 ...

  2. Dvwa之SQL盲注全级别学习笔记

    SQL盲注 盲注是SQL注入的一种,相比于常规的SQL注入,盲注一般不会返回数据库的数据信息或者语句提示.只会返回管理员设定的特定信息. SQL盲注-测试流程 同样的,和之前DVWA的普通SQL In ...

  3. SQL盲注工具BBQSQL

    SQL盲注工具BBQSQL SQL注入是将SQL命令插入到表单.域名或者页面请求的内容中.在进行注入的时候,渗透测试人员可以根据网站反馈的信息,判断注入操作的结果,以决定后续操作.如果网站不反馈具体的 ...

  4. sql注入攻击与防御第二版读书笔记二——SQL盲注利用

    寻找并确认SQL盲注 强制产生通用错误 注入带副作用的查询 如 mssql waitfor delay '0:0:5' mysql sleep() 拆分与平衡 5 -> 7-2 常见SQL盲注场 ...

  5. python sql注入漏洞 ctf_CTF-WEB 一个登录框SQL盲注

    一些师兄给了个平台,最近学了很多SQL注入和编写脚本的知识,跃跃欲试,结果这一做就是漫漫长路,还是很多东西不熟悉啊. 首先找注入点: 发现用户名错误和密码错误会分开提示,可以用布尔盲注,(*^▽^*) ...

  6. python脚本自动化盲注_三、基于报错型注入和sql盲注的自动化实现

    通过前面payload的构造,不难发现,对于报错型注入和布尔注入(sql盲注)纯手工注入的效率是非常慢的.这些payload语句虽然复杂,但大部分内容都是相同的,因此,一言不合就写了个脚本自动化注入, ...

  7. SQL注入:5、SQL盲注

    5.SQL盲注 SQL注入与SQL盲注的区别 逻辑判断注入漏洞是否存在 SQL盲注之无权读取information_schema库和拒绝union.orderby语句 一次SQL盲注: SQL注入与S ...

  8. sql盲注二分法注入脚本

    sql盲注二分法注入脚本 次脚本可以用来检测sql靶场第五关 http://caichuanqi.cn/lab/sqli-labs-master/Less-5/?id=1 #-*-coding:utf ...

  9. sql 盲注 (web渗透)

    sql 盲注 (web渗透) sql 盲注 主要是应对页面对wed错误应对的比较好的情况下使用(即,错误不回显) 布尔盲注 利用页面 返回 还是 不返回 这样两种状态的改变来判断我们想要的结果(布尔为 ...

最新文章

  1. Conv1D和Conv2D的区别
  2. 『原创』再谈用 php 实现域名 whois 信息查询
  3. xss防御方法base64_XSS 防御方法总结
  4. 中如何使用echart_jQueryEasyUI中的拖拽事件如何使用
  5. how is navigation list item click event handled - actually no logic done
  6. 前端框架Vue——vue-i18n ,vue项目中如何实现国际化,$t的用法
  7. 五个温度带的分界线_女神建筑师在拿破仑故乡打造的海景别墅,超美!超有温度!【环球设计2225期】...
  8. WGS84坐标和UTM坐标的转换
  9. python10进制转2进制掩码_Python简单实现子网掩码转换的方法
  10. Magento2创建自定义Widget 并通过添加图片选择器插入图片
  11. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File 之 —— SharedPreferences...
  12. 30岁学python有前途吗-为什么做大数据一定要学Python?
  13. VB模拟键盘输入的N种方法
  14. Apache Flink Meetup 8.7 深圳站改为线上
  15. C++ Segmentation fault 一般原因
  16. 更改我的网页默认的暴风影音播放器
  17. matlab插值与拟合例题_[转载]MATLAB插值与拟合(1)
  18. 小卡机器人积木教程_这个会动的智能积木机器人分分钟让孩子爱不释手!秒杀家中99%的益智玩具!| 团...
  19. C和C++文本读写速度对比
  20. 微信应用签名配置方法

热门文章

  1. A股市场的市场分类(股票市场简介及历史)
  2. 如何将论文中的公式直接转成word可编辑
  3. java 数组 初始化 个数_Java中数组的初始化
  4. Java解析XML文件的方式
  5. MSSQL注入手工注入mssql提权
  6. codeblocks不支持16位,“64位Windows不兼容”的问题
  7. SparkSQL 开窗函数
  8. docker-compose:搭建酷炫私有云相册photoprism
  9. Linux常用软件安装
  10. 华为锁屏久了就显示无法连接服务器,ios 锁屏后网络连接服务器