博客
关于我
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/

你可能感兴趣的文章
Oracle 11gR2构建RAC之(2)--配置共享存储
查看>>
Oracle 11g中的snapshot standby特性
查看>>
Oracle 11g关闭用户连接审计
查看>>
Oracle 11g忘记sys、system、scott密码该这样修改!
查看>>
Oracle 11g数据库安装和卸载教程
查看>>
Oracle 11g数据库成功安装创建详细步骤
查看>>
Oracle 11g超详细安装步骤
查看>>
Oracle 12c中的MGMTDB
查看>>
Oracle 12c安装报错Installation failed to access the temporary location(无法访问临时位置)...
查看>>
Oracle 9i数据库管理教程
查看>>
ORACLE Active dataguard 一个latch: row cache objects BUG
查看>>
oracle avg、count、max、min、sum、having、any、all、nvl的用法
查看>>
Oracle BEQ方式连接配置
查看>>
oracle Blob保存方式,oracle 存储过程操作blob
查看>>
Oracle BMW Racing sailing vessel帆船图
查看>>
ORACLE Bug 4431215 引发的血案—原因分析篇
查看>>
Oracle Business Intelligence Downloads
查看>>
Oracle cmd乱码
查看>>
Oracle Corp甲骨文公司推出Oracle NoSQL数据库2.0版
查看>>
【Docker知识】将环境变量传递到容器
查看>>