[极客大挑战 2019]EasySQL的个人WP
2026/9/3 6:19:23 网站建设 项目流程

个人声明:

本人纯小白,对于专业词汇可能表达不清,本文章仅展示个人思路,如有雷同,纯属巧合(若有借鉴思路的,会说明)。若有错漏,麻烦指正,谢谢。

题目来源:

CTF²https://ctf2.dasctf.com/dashboard/practice/b9bbb32f-f186-458f-b90b-12440c0f6aea?returnTo=%2Fdashboard%2Fpractice%3Fview%3Dmy&tab=challenges&challenge=d4109092-2acc-4f56-a9c6-d75c230d501b首先,打开靶场,是一个登录页面

根据我们的经验,这类登录类页面先尝试万能密码

下面解释一下何为万能密码(以下为个人思考,仅提供理解帮助,表述可能有问题)

(已经知道的,可以看===下面的解题内容)

=========================================================================

万能密码形式是:' or 1=1#

1、先闭合单双引号如果是数字型则不用闭合

2、'or'使得原sql命令查询结果可以以我们后面输入的命令判断返回结果

3、1=1,构造一个ture的结果

4、'#'注释后面的命令

详细原理是:

一般来说,这类网页后台命令格式为

SELECT * FROM user WHERE username='' AND password='';

当我们输入username=' or 1=1#(password输入什么都可以)

命令变成:

SELECT * FROM user WHERE username='' or 1=1#' AND password='xxx';

首先#后面的被注释了,命令变成

SELECT * FROM user WHERE username='' or 1=1

然后数据库会先对where后面的限定条件进行判断

username='' 返回false

or

1=1 返回ture

所以结果为ture
命令变成:
SELECT * FROM user
然后返回默认返回所查询表的第一个数据
若是该表的第一个数据是admin的信息,则登录admin

这里补充一下,如果是正常登录,比如$user=xiaoming&$passwd=123456

命令会是

SELECT * FROM user WHERE username='xiaoming' AND password='123456';

此时才会特定查询username='xiaoming' AND password='123456'的内容

上面使用万能密码之后是直接将where后面的内容变成了ture,没有限定条件了

=========================================================================

使用最基本的' or 1=1#尝试绕过,成功绕过,得到flag

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询