• 二次注入攻击


    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语言也有这种需求,就是逐个记录进行业务逻辑处理,这就是游标

  • 相关阅读:
    查看 Linux 中文件打开情况(lsof)
    主从复制错误处理总结
    Mysql 在线新建或重做主从
    mysql binlog日志删除
    Mysql 删除从数据库的relay logs最佳方式、最安全方式
    k8s调度器kube-scheduler
    nginx应用场景,特性,目录结构,常用模块,内置变量,URL和URI,http状态码,配置文件详解
    nginx日志
    CentOS7单机部署lamp环境和apache虚拟主机
    CentOS7安装和配置dns服务器
  • 原文地址:https://www.cnblogs.com/nzbbody/p/15041789.html
Copyright © 2020-2023  润新知