博客
关于我
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中触发器的使用示例
查看>>
Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
查看>>
mysql中还有窗口函数?这是什么东西?
查看>>
mysql中间件
查看>>
MYSQL中频繁的乱码问题终极解决
查看>>
MySQL为Null会导致5个问题,个个致命!
查看>>
MySQL为什么不建议使用delete删除数据?
查看>>
MySQL主从、环境搭建、主从配制
查看>>
Mysql主从不同步
查看>>
mysql主从同步及清除信息
查看>>
MySQL主从同步相关-主从多久的延迟?
查看>>
mysql主从同步配置方法和原理
查看>>
mysql主从复制 master和slave配置的参数大全
查看>>
MySQL主从复制几个重要的启动选项
查看>>
MySQL主从复制及排错
查看>>
mysql主从复制及故障修复
查看>>
MySQL主从复制的原理和实践操作
查看>>
webpack loader配置全流程详解
查看>>
mysql主从复制,读写分离,半同步复制实现
查看>>