青少年CTF——BabySQLi——Writeup
首先查看题目:由题可知是一道SQL注入题。
查看源代码暂时未发现有用信息。
随便输入用户名和密码,并且使用burpsuite抓包,并且提交到repeater。发现一串Base32加密
注:Base32包含33个字符(0-9A-V=),Base64包含65个字符(a-zA-Z0-9+/=或a-zA-Z0-9-_=)
先进性base32解码,后进行base64解码,可得:select * for user where username = ‘$name’
payload:name=1’ union select 1,‘admin’,‘c4ca4238a0b923820dcc509a6f75849b’#&pw=1
原理解释如下:
select * from user where username='1' union select 1,'admin','c4ca4238a0b923820dcc509a6f75849b'#'
结果类似如下:
会得到构造的实际上不存在的视图数据,此时账户名为admin,密码为1的md5 32位加密形式(数据库中的密码都是加密存放)。
所以pw参数传入未加密的:1(到后台数据库会自动加密,并且与虚拟视图中进行比较,相同即可得到flag)