博客
关于我
BUUCTF——[GXYCTF2019]BabySQli
阅读量:788 次
发布时间:2019-03-25

本文共 974 字,大约阅读时间需要 3 分钟。

利用点和解题过程分析:SQL注入成功案例分析


文章目录

  • 技术要点
    • SQL字符型注入
    • UNION SELECT联合查询特性

进入页面

访问目标页面后,首先检查页面源代码,寻找潜在的安全疏漏。通过注释发现一段基64编码的字符串,这可能包含隐藏的信息或 otp 密码。尝试将其解码,发现并非普通的 flag 或 hint,而是一段隐藏信息。


发现用户权限

通过试错法,尝试使用常见的用户名如 "admin" 登录,发现提示 “wrong pass!”,证明 "admin" 用户存在,但密码错误。接下来,需要通过注入来获取用户密码。


利用字符注入进行盲注

发现输入框存在字符注入漏洞,尝试利用时间盲注。构造特定 SQL 语句,每秒发送一次请求,观察页面响应时间是否异常。例如,尝试以下代码:

name='1'||if(1=1,sleep(5),0)%23&pw=1

成功触发了时间盲注,证明注入点有效。


使用SQLMap快速获取数据

利用自动化工具 SQLMap,批量扫描目标页面,并提取相关数据。发现存在 user 表,包含 usernamepasswd 列。提取后的数据如下:

username passwd
admin cdc9c819c7f8be2628d4180669009d28

探讨联合查询特性

了解 UNION SELECT 的特性,尝试构造并不在数据库中存在的虚拟数据。例如,在 union_test 表中,尝试以下查询:

SELECT * FROM `union_test` WHERE name="" UNION SELECT "admin","hacked" #

成功获取 admin 账户的密码,无需修改数据库,仅通过构造虚拟数据实现绕过验证。


组装有效登录断 aziya

结合已知的虚拟数据和 user 表结构,尝试构造有效的登录请求。例如,使用以下代码:

name='UNION SELECT 1,"admin","202cb962ac59075b964b07152d234b70%"'&pw=123

通过分析前文 pw字段的加密方式,发现密码使用 MD5 加密。破解成功后,获取 flag。


分析

通过注入技术,发现防护措施仅允许单行数据获取。结合 UNION SELECT,巧妙构造虚拟数据,绕过了传统的防护机制。

转载地址:http://lxpuk.baihongyu.com/

你可能感兴趣的文章
MySQL执行计划 EXPLAIN参数
查看>>
MySQL执行计划【explain】,看这一篇就够啦!
查看>>
Mysql执行计划字段解释
查看>>
mysql执行计划怎么看
查看>>
MySQL执行计划解读
查看>>
mysql执行顺序与索引算法
查看>>
mysql技能梳理
查看>>
Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据
查看>>
mysql操作数据表的命令_MySQL数据表操作命令
查看>>
mysql支持表情
查看>>
MySQL改动rootpassword的多种方法
查看>>
mysql数据分组索引_MYSQL之索引配置方法分类
查看>>
mysql数据取差,mysql屏蔽主外键关联关系
查看>>
MySQL数据和Redis缓存一致性方案详解
查看>>
Mysql数据库 InnoDB存储引擎中Master Thread的执行流程
查看>>
Mysql数据库B-Tree索引
查看>>
mysql数据库io空闲_mysql数据库磁盘io高的排查
查看>>
MYSQL数据库下载安装(Windows版本)
查看>>
MySQL数据库与Informix:能否创建同名表?
查看>>
Mysql数据库函数contac_函数:函数删除操作语法&使用例——《mysql 从入门到内卷再到入土》...
查看>>