2022-10-13 19:22:02
Buuctf web题 [GXYCTF2019]BabySQli WP
首先,我们面对的是一个登录页面,没有其他的明显信息,因此初步判断可能存在SQL注入漏洞。
一、确定账号
使用嫌粗Burpsuite等工具进行抓包,尝试在用户名和密码字段输入不同的值,观察响应。
通过暴力破解或字典攻击,发现账号为admin。
二、分析密码
在密码字段输入一串手者尘随机字符,观察响应。
发现返回了一串看似经过编码的字符,首先怀疑是Base32编码。
对这串字符进行Base32解码,但解码后发现结果并不符合常规密码格式,再次分析发现其实是Base64编码。
对Base64编码的字符串进行解码,得到了一段SQL语句,这表明密码字段确实存在SQL注入漏洞。
三、确定注入点
在用户名和密码字段分别尝试输入SQL注入的常用测试语句,如' OR '1'='1等,观察响应。
发现密码字段存在注入点,且对SQL关键字如order等进行了过滤。
四、绕过过滤并确定数据库结构
尝试使用不同的SQL语句绕过过滤,如使用双写、大小写混合毕禅等方式。
通过报错信息(如Unknown column '4' in 'order clause'),确定数据库表只有三列。
由于没有回显,无法直接获取数据库中的数据,因此考虑使用UNION SELECT语句来创建一个临时账号。
五、创建临时账号并获取Flag
尝试使用UNION SELECT语句将admin账号的密码修改为已知值,但发现密码字段可能经过了加密。
通过进一步分析,发现密码字段使用的是MD5加密。
将123456的MD5加密值e10adc3949ba59abbe56e057f20f883e作为密码,使用UNION SELECT语句创建一个临时账号。
具体的SQL语句为:admin' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e' #。
使用新创建的账号(admin,密码123456)登录,成功获取Flag。
六、总结
本题主要考察了SQL注入漏洞的利用,包括确定注入点、绕过过滤、确定数据库结构、创建临时账号等步骤。在解题过程中,需要注意以下几点:
以下是解题过程中的关键图片展示:






