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

你可能感兴趣的文章
Neo私链
查看>>
NervanaGPU 项目使用教程
查看>>
Nerves 项目教程
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.
查看>>
nestesd exception is java .lang.NoSuchMethodError:com.goolge.common.collect
查看>>
nestJS学习
查看>>
net core 环境部署的坑
查看>>
NET Framework安装失败的麻烦
查看>>
Net 应用程序如何在32位操作系统下申请超过2G的内存
查看>>
Net.Framework概述
查看>>
NET3.0+中使软件发出声音[整理篇]<转>
查看>>
net::err_aborted 错误码 404
查看>>
NetApp凭借领先的混合云数据与服务把握数字化转型机遇
查看>>
NetAssist网络调试工具使用指南 (附NetAssist工具包)
查看>>
Netbeans 8.1启动参数配置
查看>>
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>