其他分享
首页 > 其他分享> > BASE32与BASE64区别与UNION查询特性

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

 

标签:UNION,BASE64,查询,admin,BASE32,--,select
来源: https://www.cnblogs.com/llllll7/p/14822709.html