简学-SQL注入(时间盲注)

本文详细介绍了SQL注入中的时间盲注,包括原理、常用函数和实际应用示例。时间盲注用于判断注入语句是否执行,通过页面响应时间变化获取信息,即使页面不返回错误或数据。此外,还探讨了HTTP头盲注的相关场景。
摘要由CSDN通过智能技术生成


0x06 SQL注入的主要类型(从漏洞类型的角度)

  • SQL注入主要分为以下几种类型:
    • 1、Boolean-based blind SQL injection(布尔型注入)

      http://test.com/view?id=1 and substring(version,1,1)=5

      • 如果服务端 Mysql 版本是5.X的话,那么页面返回的内容就会和正常的请求一样。
    • 2、UNION query SQL injection(可联合查询注入)

      http://test.com/view?id=1 UNION ALL SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA

      • 最快捷的方法,通过 UNION 查询获取所有想要的数据,但容易被网页本身的内容显示方式所限制(如只显示查询到的第一条数据等)。
    • 3、Time-based blind SQL injection(基于时间延迟注入)

      select * from table where id = ‘1’ and sleep(3)

      • 当页面不会返回错误信息,不会输出通过 UNION 所查询到的泄露的信息。类似搜索这类请求,boolean注入也无能为力,因为搜索返回空值也属于正常。这时就得借助 time-based 注入,但这类型注入获取信息速度慢,请求次数较多,纯手工方式非常复杂。
      • 由于利用了 and 连接,因此可以通过页面是否延迟相应来判断注入语句是否执行
    • 4、Error-based SQL injection(报错类型的注入)
      • 如果页面能够输出 SQL 报错信息,则可以从报错信息中获取想要的信息。如:利用 group by 的 duplicate entry 错误。
    • 5、Stacked queries (可多语句查询注入)

      http://test.com/view?id=1;update table set name = ‘a’ where id = 1

      • 能够执行多条查询语句,意味着能够对数据库直接进行更新操作。

0x07 时间盲注(基于时间延迟注入)

  • 通过注入特定语句,根据对页面请求的物理反馈,来判断是否注入成功,如:在 SQL 语句中使用 sleep() 函数看加载网页的时间来判断注入点

  • 适用场景:
    • 无法从显示页面上获取结果,且连注入语句是否被执行都不知道。

0x07.1 原理及示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值