• SQL注入的原理分析


    注意:仅用于技术讨论,切勿用于其他用途,一切后果与本人无关!!!

    一、SQL注入本质

            用户输入的数据被当做SQL代码执行[  1.用户能够控制输入     2.]

            数据库查询语句        增、删、改、查

    寻找:

            闭合(传入引号,让传入的引号和原本的引号配对、注释掉后面的引号)

            引号内的东西是数据不是代码

            select  *  from  news  where  id = "1"  and  1=1  -- qwe "

    检测:

            检测SQL注入

                    and  1=1  正确

                    and  1=2  错误

            如果数据库的字段是数字类型:强转

            数字运算法:-1        (注意:+不可以,get传参会把+理解为空格,将'+'url编码为%2b)

            select  *  from   news  where  id =2-1        =>返回1的值则一定存在

            先假设->去验证->根据结果->错的继续改,正确往下走

    二、显错注入靶场做法       

    如何通过SQL注入获取数据库信息(联合查询法)

            union联合查询(把两条语句一起执行)

            A语句  union  B语句(隐形条件:字段相同)

             B语句我们可以控制,所以我们需要知道A字段是多少 

             order  by        字段存在则正常输出,错误则报错

            排序(正常情况下开发一般只会输出第一条数据)

            显错位        选择性输出

            库名        database()        =>表名        =>字段名

            表名:

                    1.系统自带库

                            tables=>数据库中库和表的对应

    select table_name  from  information_schema.tables  where table_schema=database()  limit  0,1

                            columns=>

    select  column_name  from information_schema.columns  where table_schema=database()  and  table_name="admin"  limit 0,1

                    2.猜(枚举常用的库名)

                            union  select  1,2  from  admin(news ...)

    步骤:

            order by        判断字段

            id = 1.1   union  select  1,2,3,4        判断显错位(使前面报错,从而不输出)

            通过系统自带的information_schema来得里面的表名

            limit  第几行开始输出(最低是0),输出几行数据

  • 相关阅读:
    git教程(1)---本地仓库操作
    Pandas索引loc[]与iloc[]的区别
    数据结构实验六 栈和队列的基本操作及应用
    昇腾AI与“紫东.太初”赋能法律服务,多模态大模型迈向“多专多能”
    Python入门基础篇
    应用方案 | 内置ALC的音频前置放大器D2538A和D3308芯片
    InnoDB 是如何解决幻读的
    腾讯待办停止运营,怎么继续提醒事情呢?
    计算机组成原理_数据寻址
    Docker学习第一天
  • 原文地址:https://blog.csdn.net/qq_58000413/article/details/126821727