BUUCTF-[GXYCTF2019]BabySQli 记录

27.[GXYCTF2019]BabySQli

这题主要知识点就是mysql在查询不存在的数据时,会自动构建虚拟数据

其次就是base32解密

打开题目:随便输入用户名admin,密码123,提示密码错误。

输入用户名123,密码123,提示错误用户名,从而得知是有admin用户的。

然后查看源代码看到有一串加密字符

了解下base32和base64

base32 只有大写字母和数字数字组成,或者后面有三个等号。

base64 只有大写字母和数字,小写字母组成,后面一般是两个等号。

这个应该是base32,解密得:

解密得到的是一个base64加密字符串:

在解密,得到数据查询语句。

知道数据查询,构造下注入。前面已经知道存在admin数据。

看下有多少字段:发现有检测关键字

发现检测or关键字,可以大写绕过

ORder by 4时超出字段,说明只有3个字段。

union select联合查询,刚开始在查看回显字段,但这里没有回显字段。只能猜测三个字段分别是啥,一般是id、username,password。

查询下admin是否是第二个字段

admin' union select 1,'admin',3#

说明第二个字段是username。

这里关键点是,mysql在查询不存在的数据时,会自动构建虚拟数据,一般数据存储要么明文,要么MD5,这里参考wp

构造一个password,md5查询。123456

最后payload name=1'+union+select+1,'admin','e10adc3949ba59abbe56e057f20f883e'#&pw=123456

这里需要注意下就是name不能等于admin,因为不等于admin才会往后查询,等于admin就不会查询后面了。

你可能感兴趣的:(BUUCTF-[GXYCTF2019]BabySQli 记录)