• sql注入基础(原理)


    一、注入的分类

    按数据库分类:1.整形

                         2.字符型(需要考虑单引号闭合的问题,还有注释不必要的语句  #  )

                            eag:  id='admin'  id='admin and1=1'这样会报错  所以需要 id='admin' and '1'='1 ' 这样来进行闭合

                            注意:字符型适合弱类型语言 php asp ,不支持jsp  aspx

    按注入点分类:1.GET

                        2.POTS

                        3.COOKIE

                        4.搜索形注入

                        5.http头注入

    按注入的显示方式:1.显错注入

                              2.盲注(主要是根据返回数据的快慢判断)

    根据sql语句的不同:1.union 2.select 3.update

    二、简单的access以ASCII的方式 注入

    1.判断注入点

     1) and 1=1 返回正常  and 1=2 返回错误 存在注入点

     2) or 1=1 返回错误    or 1=2 返回正常   存在注入点

    2.判断数据库的类型

    and (select count(*)from msysobjects )>0  返回的如果是权限不够的话是access

    and (select count(*)from sysobjects )>0 返回正常的话是sqlserver

    F12审查元素  看network看中间件  根据中间件的黄金组合来大概判断

    3.猜测表名

    and (select count(*) from admin)>=0   返回正常则证明存在admin表 (是根据取admin所有列的数目,如果大于等于0的话证明有admin这个表,大于0的话证明admin存在数据不是空表)

    3.猜测列数(字段数)

    and (select count(*) from adnmin)>  通过不断变化数字1,2,3,4,5...来判断列数

    3.猜测列名(字段名)

    and(select couunt(username) from admin)>=0  返回正常则证明 存在username列

    4.获取数据位数     * mid函数用于从文本字段中提取字符 mid(字段名,取第几位,取几个字符) top2  表示的是前两行,不是第二行

    and (select top 1 ascii(mid(username,1,1))from admin)>0 通过不断改变数字1,2,3,4...  原理: 一直变换数字知道取不出字符时,ascii就不会在大于0

    5.获取数据

    and (select top 1 ascii(mid(username,1,1))from admin)>20  通过1来控制位数  通过变换20来控制ascii对应的具体的值 最终得出ASCII在转化为明文

    三 、access快速获取数据

    1. order by 1 通过不断改变1来判断字段数  假如字段数为5

    2.union select 1,2,3,4,5 from admin返回正常 则证明存在admin表  假如数字2在网页爆出(若果没有爆出数字 解决方法1.报错显示2.审查元素中找)

    3.union select 1,username,3,4,5 from admin  正常则证明存在username列 并且username的数据也会在相应的2的位置爆出来

  • 相关阅读:
    接口分类
    HTTPS和HTTP的主要区别
    协议类
    小程序
    Polyfill
    去重数组
    odoo 接口跨域请求报错
    docker-compose 自定义容器名称
    linux ssh 防暴力破解fail2ban
    odoo 知识点
  • 原文地址:https://www.cnblogs.com/pojun/p/6824724.html
Copyright © 2020-2023  润新知