博客
关于我
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 字段区分大小写
查看>>
mysql 字段合并问题(group_concat)
查看>>
mysql 字段类型类型
查看>>
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>
mysql 存在update不存在insert
查看>>
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
查看>>
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
查看>>
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>
Mysql 学习总结(89)—— Mysql 库表容量统计
查看>>
mysql 实现主从复制/主从同步
查看>>
mysql 审核_审核MySQL数据库上的登录
查看>>
mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
查看>>
mysql 导入导出大文件
查看>>
mysql 将null转代为0
查看>>
mysql 常用
查看>>
MySQL 常用列类型
查看>>