前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二次注入——sqli-labs第24关

二次注入——sqli-labs第24关

作者头像
宸寰客
发布2020-08-04 09:57:40
1.5K0
发布2020-08-04 09:57:40
举报
文章被收录于专栏:yuancao博客yuancao博客

第24关

提示说:please login to continue,请登录以继续。 没有账号怎么登录? 当然是选择注册

在这里插入图片描述
在这里插入图片描述

盲猜会有个admin的账号,所以注册一个admin '#的账号。密码是12345

在这里插入图片描述
在这里插入图片描述

(上帝视角)此时数据库里admin的密码是admin

在这里插入图片描述
在这里插入图片描述

登录刚刚注册的账号

在这里插入图片描述
在这里插入图片描述

然后为admin '#修改密码为123

在这里插入图片描述
在这里插入图片描述

修改成功(此时真的是修改admin '#的密码吗)

在这里插入图片描述
在这里插入图片描述

(又一次上帝视角)进入数据库,发现admin的密码成了123,而admin '#的密码并没有重置

在这里插入图片描述
在这里插入图片描述

原理

这就是二次注入,它的原理是:

代码语言:javascript
复制
(1)后端(PHP)代码对语句进行了转义

(2)保存进数据库(mysql)时没有转义,是原语句

简而言之就是数据库对自己存储的数据非常放心,而用户恰恰向数据库插入了恶意语句。

解析

比如前面所注册的admin '#账号,在注册时,后端对其进行了转义( addslashes() 或者mysql_real_escape_string和mysql_escape_string 等),'#被转义成了其他的东西,所以一次注入无效。 但是在保存进数据库的时候,还是admin '#

那么修改密码时的语句如下:

代码语言:javascript
复制
update users set  password='123' where username='admin '#'

所以你以为修改的是admin '#的账号,但是数据库理解成要修改密码的账号是admin

防范

至于如何防范二次注入也很简单: 一碗水端平,后端进行了转义,数据库也同样进行转义。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第24关
  • 原理
  • 解析
  • 防范
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档