随笔 - 576  文章 - 0  评论 - 62  阅读 - 219万

二次注入攻击

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

posted on   Andy Niu  阅读(93)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示