当前位置: 首页 > news >正文

极客大挑战 2019 EasySQL 1(万能账号密码,SQL注入,HackBar)

题目

在这里插入图片描述

做法

启动靶机,打开给出的网址
在这里插入图片描述

随便输点东西进去,测试一下
在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

输入以上两个都是以下结果
在这里插入图片描述

但是,输入1’时,出现的是另外结果
在这里插入图片描述

在这里插入图片描述

输入1,1"时,SQL语句没有报错,只是提示我们输入的值是不对的,而输入1’时却有截然不同的结果,因此我们可以先假设SQL语句闭合方式是单引号

注:以下sql语句如’1" ’ 实际上是’1"’ ,这里只是为了快速区分

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

当用户名为1时,形成的sql语句是
select * from table_name where username=‘1’ and password=‘123’;

当用户名为1"时,形成的sql语句是正确的
select * from table_name where username='1" ’ and password=‘123’;

当字符串内需要包含双引号时,除了使用转义字符外,也可以使用一对单引号来包括字符串。此时字符串内的双引号被视为普通字符,无需特殊处理

同理,当字符串内需要包含单引号时,除了使用转义字符外,也可以使用一对双引号来包括字符串。此时字符串内的单引号被视为普通字符,无需特殊处理

补充

使用(转义字符)来判断SQL注入的闭合方式
原理:当闭合字符遇到转义字符时,会被转义,那么没有闭合符的语句就不完整了,就会报错,通过报错信息我们就可以推断出闭合符。

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

当用户名为1’时,形成的sql语句是错误的
select * from table_name where username=‘1’ 'and password=‘123’;

第一个单引号和第二个单引号形成了新的闭合,剩余第三个单引号,组成的sql语句不正确,于是语句报错

因此,SQL语句闭合方式是单引号

(2)假设MySQL语句为双引号闭合

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注入

万能账号密码获取入口:
万能账号密码使用详解,渗透测试常用的入门级操作 - 知乎

由上得:该数据库的闭合方式为单引号

因此,在理解完以上网页内容后,我们回归该题

当我们不知道用户的账号并且不知道用户的密码时,可以使用万能账号
我们随便挑选一个——a or true #

但是它上面的万能账号都没有加单引号’或是双引号"

因此,综上,我们需要在a后面加上本题的闭合符号,“ ’ ” 得出我们所需的账号为a’ or true #

密码随便输即可(但是看到其他人通常这种情况都直接写一样的,不知道有啥玄机在里面,这里注意一下)
在这里插入图片描述

复制,回去题目提交flag
在这里插入图片描述

补充做法(使用HackBar,不过跟上面的大差不差)

自行下载HackBar V2

前提:
先看测试后的网址(与为刚从靶机点进来的网址进行对比),可以看到我们输入的账号密码都显示在url中,可知此处是get传参

补充:get传参——参数和 URI 之间用问号?隔开, 参数键值用等号=连接,然后参数之间用连接符&拼接起来
在这里插入图片描述

因为get传参为参数直接暴露在 URL 中,且网页文件名为check.php,只是处理登录校验的常见文件名,而非诸如 login.php(通过表单 POST 传参)等需要动用其他工具,则可直接使用HackBar 修改参数
在这里插入图片描述

点击启动靶机后给出的网址,弹出页面,按F12,选择HackBar V2(绿色图标那个)
在这里插入图片描述

按一下Load URL,即可获取当前页面的网址
然后随便输入用户名密码,进去后看看网址
在这里插入图片描述

我们直接看测试后多出的网址

username=后面跟的是账号

password=后面跟的是密码

因此,我们根据上面说的思路,把万能账号填进去,密码随便填,构造一下,复制

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

然后填进Load URL得出的网址后面,点击Execute执行

解释:%23是#的 URL 编码形式,表示普通字符#,
在 URL 中,某些字符有特殊含义,需要使用URL 编码(即百分号编码)来表示,
类似于进制统一一样,为了避免不必要的麻烦,我们通常都把格式统一一下,

   以下字符在 URL 中可直接使用,无需编码:字母:`a-z`、`A-Z`数字:`0-9`部分符号:`-`、`_`、`.`、`~`
但是遇到特殊字符的时候,最好去查一查看下要不要转变成URL

得出flag
在这里插入图片描述

更新

于2025.06.04

相关文章:

  • 3.spring基础入门(三)
  • 打卡day44
  • typescript中的type如何使用
  • 信息学奥赛一本通 1570:【例 2】能量项链 | 1843:【06NOIP提高组】能量项链 | 洛谷 P1063 [NOIP 2006 提高组] 能量项链
  • MySQL 索引:为使用 B+树作为索引数据结构,而非 B树、哈希表或二叉树?
  • React-native实战系列
  • 论文速读《VideoMimic:通过视觉模仿实现人形机器人感知控制》
  • 玩转Docker | 使用Docker部署Qwerty Learner英语单词学习网站
  • 第八部分:第三节 - 事件处理:响应顾客的操作
  • AXPM11584:颠覆传统,发现新可能
  • 省赛中药检测模型调优
  • 电路图识图基础知识-降压启动(十五)
  • Java面试题及答案整理( 2025年最新版,持续更新...)
  • 理解继承与组合的本质:Qt 项目中的设计选择指南
  • 《射频识别(RFID)原理与应用》期末复习 RFID第一章 射频识别技术概论(知识点总结+习题巩固)
  • 前端css外边距塌陷(Margin Collapse)现象原因和解决方法
  • 核心机制:拥塞控制
  • 使用 LangChain 和 RAG 实现《斗破苍穹》文本问答系
  • Ros(控制机器人运动)
  • c++提升
  • 做微商能利用的网站有哪些问题/智谋网站优化公司
  • 宜昌建网站/免费域名申请网站
  • wordpress nginx 配置文件/优速网站建设优化seo
  • 营销策略是什么意思/免费seo营销软件
  • 火影忍者网页制作网站/长沙网站关键词排名公司
  • 提升网站的访问速度/seo专家是什么意思