Buuctf-Web-[极客大挑战 2019]EasySQL 1 题解及思路总结


启动靶机

目录

  • 题要
  • 做题过程
    • 第一步——找到页面与数据库产生交互的地方
    • 第二步——查看SQL语句闭合方式
      • 判断SQL注入闭合方式:
        • 方法一:使用\(转义字符)来判断SQL注入的闭合方式
        • 方法二:输入1、1'、1"判断SQL语句闭合方式
    • 第三步——进行SQL注入
        • 方法一:万能账号密码
        • 方法二:使用HackBar进行SQL注入
        • 一、查看页面的传参方式
        • 二、使用HackBar进行SQL注入
  • 思路总结
    • 题目类型:
    • 做题步骤:

题要

  1. 有数据交互的地方就容易产生注入点
  2. sql注入的核心:将用户输入的数据拼接到代码中,并被当成 sql 语句执行

做题过程

第一步——找到页面与数据库产生交互的地方

输入任意数据,然后点击登录

在这里插入图片描述

此时跳转到check.php页面,得到结果。可知此页面与数据库产生交互

在这里插入图片描述


第二步——查看SQL语句闭合方式

知识点:如何判断闭合符

判断SQL语句闭合方式原理:

MYSQL数据库的包容性比较强。例如输入1)、1"、1-等,这些数字后面的字符不是闭合符,所以数据库会把这些输入的错误数据转换成正确的数据类型。
但是,若输入的数字后面的字符恰好是闭合符,则会形成闭合。如果闭合后形成的sql语句是错误的,那么sql语句执行就会错误,从而造成页面显示错误。

判断SQL注入闭合方式:

方法一:使用(转义字符)来判断SQL注入的闭合方式

原理:当闭合字符遇到转义字符时,会被转义,那么没有闭合符的语句就不完整了,就会报错,通过报错信息我们就可以推断出闭合符。

分析报错信息:看\斜杠后面跟着的字符,是什么字符,它的闭合字符就是什么,若是没有,就为数字型。
(但是在本题中有两个变量,这个方法不太适用)

方法二:输入1、1’、1"判断SQL语句闭合方式

以用户名为例(在密码处是一样的)
用户名分别输入11'1",密码输入123

在用户名处输入11"
在这里插入图片描述

在这里插入图片描述
都出现了同样的结果
在这里插入图片描述

只在输入1'时,出现了以下报错
在这里插入图片描述
在这里插入图片描述

知识点:MySQL中单引号、双引号的区别

一般情况下,SQL语句闭合方式为单引号

输入11"时,没有SQL语句报错,只是提示我们输入的值是不对的,因此我们可以先假设SQL语句闭合方式是单引号

username输入1时,形成的sql语句是SELECT*FROM table_name WHERE username='1'and password='123';

username输入1"时,形成的sql语句是正确的
SELECT*FROM table_name WHERE username='1"'and password='123';
当字符串内需要包含双引号时,除了使用转义字符外,也可以使用一对单引号来包括字符串。字符串内的双引号被视为普通字符,无需特殊处理
同理,当字符串内需要包含单引号时,除了使用转义字符外,也可以使用一对双引号来包括字符串。字符串内的单引号被视为普通字符,无需特殊处理

username输入的是1',形成的sql语句是错误的
SELECT*FROM table_name WHERE username='1''and password='123';
第一个单引号和第二个单引号形成了新的闭合,剩余第三个单引号,组成的sql语句不正确,于是语句报错。

所以可以推出SQL语句闭合方式是单引号。

假设SQL语句是双引号闭合的情况

username输入1时,形成的sql语句是正确的
SELECT*FROM table_name WHERE username="1"and password="123";

username输入1"时,形成的sql语句是
SELECT*FROM table_name WHERE username="1""and password="123";
正确的SQL语句不可以出现一对双引号包含双引号的。所以上面这条应该出现SQL报错,但实际没有报错,因此我们假设的双引号闭合方式是不成立的。

username输入的是1',形成的sql语句是正确的,不会报错
SELECT*FROM table_name WHERE username="1'"and password="123";
而然实际上这条语句报错了,因此我们假设的双引号闭合方式是不成立的。

综上,我们可以推出SQL语句闭合方式是单引号。


第三步——进行SQL注入

方法一:万能账号密码

知识点:万能账号密码原理

一般来说,有账号密码登陆的题,在判断完闭合方式后,可以尝试先用万能账号密码解题

由第二步知,该数据库闭合方式为单引号'
所以此处使用单引号字符型的万能密码,即可获得正确的flag
(用户名和密码至少有一个输入万能密码即可获得正确的flag)

在这里插入图片描述

在这里插入图片描述

得到正确的flag
flag{938bf795-3f35-4edd-abd3-b23640b93d11}

方法二:使用HackBar进行SQL注入

(思路和万能密码是一致的,这里学习一下HackBar的使用方式)

一、查看页面的传参方式

知识点:POST请求和GET请求如何传递和接收解析参数

随便输入一些数字(用户:111,密码:111)

先看界面中的url,可以看到我们输入的账号密码都显示在url中,可知此处是get传参
——>这个界面是check.php页面
——>所以我们可以用HackBar进行SQL注入

在这里插入图片描述

http://6c94579b-e71a-4310-9e9d-8d74f371cbaf.node4.buuoj.cn:81/check.php?username=aaa&password=111

GET比POST更不安全,因为GET参数会直接暴露在url上。所以不能用来传递敏感信息

?表示传参,后面跟着的是参数username=aaa&password=111。一般来说,?的内容都是用户可控的。

传入SQL语句可控参数分为两类

  • 数字类型,参数不用被引号引用?passord=111
  • 其他类型,参数需要被引号引用 ?username="aaa"
二、使用HackBar进行SQL注入

知识点:POST和GET请求参数编码方式

在这里插入图片描述

Load URL(加载网址):将网址“框”下来
Split URL(切分网址):自动切分网址,便于快速找出需要修的地方
Execute(执行):相当于F5

1、先“Load URL”,
在这里插入图片描述2.然后在框中输入语句

/check.php?username=a' or true %23& password=1

在这里插入图片描述

GET传参要经过url编码,所以使用url进行输入时,不能使用#,而应该使用其url编码%23

3.然后点击“Execute”,即可获得正确flag


思路总结

题目类型:

  1. SQL注入

做题步骤:

  1. 先找到页面中有数据交互的地方
  2. 判断SQL语句的闭合方式
  3. 进行SQL注入(万能密码/Hackbar)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/450807.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代理IP如何应对自动化测试和爬虫检测

目录 一、代理IP在自动化测试和爬虫中的作用 二、代理IP的优缺点分析 1.优点 2.缺点 三、应对自动化测试和爬虫检测的策略 1.选择合适的代理IP 2.设置合理的请求频率和间隔 3.模拟人类行为模式 4.结合其他技术手段 四、案例与代码示例 五、总结 在自动化测试和爬虫开…

Alpha突触核蛋白神经退行性疾病介绍

StressMarq——Alpha突触核蛋白&神经退行性疾病 Alpha突触核蛋白科研背景 • Alpha突触核蛋白约 15kDa, 140个氨基酸 • StressMarq/欣博盛生物在E. coli中过表达人源基因然后将蛋白从细胞质基质中纯化出来 • 未折叠的alpha突触核蛋白单体在12% SDS-PAGE上为~15 kDa的条…

CentOS本地部署Tale博客并结合内网穿透实现公网访问本地网站

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale,Tale…

2022年吉林省大学生电子设计竞赛(D题)

一. 使用技术 PWM调速,PID,串口通信,陀螺仪测角度,蓝牙 二. 项目描述 大学的第一个比赛,项目采用主控stm32,车体采用一个四路电机驱动来驱动减速电机,小车依靠8路灰度循迹模块,实…

Keepalive+LVS群集部署

引言 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 一、Keepalive概述 keepalive软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS集群中各个服务节点的状态,后来又加入了可以…

【VS Code插件开发】自定义指令实现 git 命令 (九)

🐱 个人主页:不叫猫先生,公众号:前端舵手 🙋‍♂️ 作者简介:前端领域优质作者、阿里云专家博主,共同学习共同进步,一起加油呀! ✨优质专栏:VS Code插件开发极…

2m高分辨率土地利用分类矢量数据/植被类型分布数据

土地利用数据是在根据影像光谱特征,结合野外实测资料,同时参照有关地理图件,对地物的几何形状,颜色特征、纹理特征和空间分布情况进行分析,建立统一解译标志的基础之上,依据多源卫星遥感信息,结…

<Linux> 线程控制

目录 一、线程资源的分配 (一)线程私有资源 (二)线程共享资源 二、原生线程库 三、线程控制接口 (一)线程创建 - pthread_create() 1. 一个线程 2. 一批线程 (二)线程等待 …

webpack5零基础入门-2wepack配置项的了解

在使用webpack之前,我们需要对webpack的配置项有一定的认识。 1.五大核心概念 1.entry(入口) 指示webpack从哪个文件开始打包 2.output (输出) 指示webpack打包完的文件输出到哪里,如何命令等 3.loader(加载器) webpack本身只能处理js…

数字证书在网络安全中的重要性与实际应用

数字证书作为一种“电子身份证”,在当今数字化的商业环境中有着广泛的实际应用。它主要用于身份认证、加密通信、电子签名和安全访问控制等方面,为各行各业提供了安全可靠的数字化解决方案。 网络安全领域 在网络通信中,数字证书被广泛应用…

【脚本玩漆黑】橙华市全自动练级

文章目录 前言项目结构故事后续 前言 选完预三家,作者来到了橙华市。 众所周知啊,打架输了要掏一半的家产,所以宝可梦世界非常的危险。 为了安全考虑,作者打算在这里升个级。 项目结构 1,安装库。 pip install pynp…

Java后端八股------消息中间件篇

自动确认没收到,实现重复消费问题,可以用业务唯一标识来确定业务是否被消费。 TTL也就是超时时间,一般去dead letter的时间为min(消息的ttl,queue的ttl)。 acksall设置是最安全的,但是效率太低了,实际的生…

「CISP题库精讲」CISP题库习题解析精讲20道

前言 本篇主要对CISP教材第九章《计算环境安全》的一些习题进行讲解,包括20道题,这里只是部分习题,针对第九章可能会多写几章的内容,如果我发布的这些习题里面没有你想找的那道题,你也可以直接私信我,我加…

【C++】string学习 — 手搓string类项目

手搓string项目 1 string类介绍2 功能描述3 代码实现3.0 基础框架3.1 构造函数 和 析构函数3.2 流操作符重载 和 尾插扩容3.4 运算符重载3.5 实用功能3.6 迭代器模拟 总结Thanks♪(・ω・)ノ谢谢阅读!!!下一篇…

jmeter压力测试指标解释

RT(response time) 什么是RT? RT就是指系统在接收到请求和做出相应这段时间跨度 但是值得一提的是RT的值越高,并不真的就能说明我们的系统的吞吐量就很高, 比如说,如果存在数据在网络中传输时出现了丢包的现象,传输的数据少了,速度就会增加, 但是这是事故,不是说我们的系统吞…

软件应用实例分享,茶楼计时收费管理系统软件,佳易王茶社吧台计时收费软件试用版教程

软件应用实例分享,茶楼计时收费管理系统软件,佳易王茶社吧台计时收费软件试用版教程 一、前言 以下软件操作教程以 佳易王茶室计时计费软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 【茶楼计时计费软件&…

【办公类-21-09】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行距、蓝色字体”

作品展示: 背景需求: 一、视频处理 1、育婴师培训的现场视频 2、下载视频,将视频换成考题名称 二、音频 视频用格式工厂转成MP3音频 3、转文字doc 把音频放入“网易云见外工作台”转换为“文字" 等待5分钟,音频文字会被写…

java操作HBase

创建一个学生信息表,用来存储学生的姓名(姓名作为行键,且假设姓名不会重复)以及考试成绩,其中考试成绩(score)是一个列族,存储了各个科目的考试成绩。然后向student中添加数据 1、HB…

Python元组(Tuple)深度解析!

目录 1. 什么是元组? 2. 创建元组 3.访问元组 4.元组的运算 5.修改元组不可行 6.元组的应用场景 前面的博客里,我们详细介绍了列表(List)这一种数据类型,现在我们来讲讲与列表相似的一种数据类型,元组…

【LeetCode: 380. O(1) 时间插入、删除和获取随机元素 + 数据结构设计】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…