• 二次注入攻击


    1、一般的系统都默认有admin账号,如果我能获取到admin的密码就可以,登录后搞破坏。
    2、第一步:新建一个账号 admin'#123,就会在数据库增加一条记录
      特别说明,账号中包含引号在英语中是有效的,比如:NBA的 Shaq O'neal
    3、第二部:使用admin'#123账号登录,并修改密码,拼接的SQL为:
      update user set passwd='123456' where name=''
      我们帮账号放进去,变成:
      update user set passwd='123456' where name='admin'#123'
      本来的SQL是认为admin'#123是一个整体,但是替换后,单引号闭合,绕过了原本的SQL语义
      修改admin账号的密码,就可以使用 admin/123456登录
    4、SQL注入的主要因素是改变SQL语义,绕过正常的逻辑检查,那我们继续追问,而这个又因为SQL是描述性语言,我们使用的编程是过程式语言。
      SQL只要告诉想要什么就可以,而C++等编程语言需要自己实现做么做
      比如这个逻辑,查找重名的员工名称
      select name from staff group by name having count(name) > 1;
    5、这个很好理解,比方说有个员工集合,找出年龄大于20岁的
      SQL一个语句就可以,而编程语言需要遍历集合,判断,然后保存结果
    6、事情不是绝对的,随着语言的发展,二者会相互交叉。
      高级语言现在都有SQL的倾向,比方说C#,Java等,结合lambda表达式
      List<People> data = list.stream().filter(a -> a.getAge().greater(20)).collect(Collectors.toList());
      有人也把这个叫做语法糖
      而SQL语言也有这种需求,就是逐个记录进行业务逻辑处理,这就是游标

  • 相关阅读:
    Anaconda的安装和更新
    Python数据分析学习目录
    国标28181sip开源库介绍(陆续补充完备)
    开源sip server & sip client 和开发库 一览
    几种开源SIP协议栈对比
    用TCP穿透NAT(TCP打洞)的实现
    使用TCP协议的NAT穿透技术
    TCP点对点穿透探索--失败
    snmp++开发实例一
    socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少
  • 原文地址:https://www.cnblogs.com/nzbbody/p/15041789.html
Copyright © 2020-2023  润新知