Buuctf web题 [GXYCTF2019]BabySQli WP

Buuctf web题 [GXYCTF2019]BabySQli WP
最新回答
终成空

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注入漏洞的利用,包括确定注入点、绕过过滤、确定数据库结构、创建临时账号等步骤。在解题过程中,需要注意以下几点:

  • 仔细观察响应:通过抓包和分析响应,可以发现潜在的漏洞和线索。
  • 灵活绕过过滤:对于过滤的SQL关键字,可以尝试使用双写、大小写混合、注释等方式进行绕过。
  • 利用UNION SELECT:在没有回显的情况下,可以利用UNION SELECT语句来创建临时账号或获取所需信息。
  • 了解常见加密方式:对于密码字段,需要了解常见的加密方式(如MD5、SHA等),以便在解题过程中进行正确的处理。

以下是解题过程中的关键图片展示: