目录

一、什么是webgoat?

二、Injection

2.1 SQL Injection (intro)

2.1.1 查询Bob的岗位

 2.1.2 更改Tobi的部门

2.1.3 增加一个phone部门

2.1.4 授权

2.1.5 Try It! String SQL injection

 2.1.6 查询所有员工的信息

2.1.7 修改员工的薪水

2.1.8 删库跑路


一、什么是webgoat?

WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。

webgoat的安装请见:https://blog.csdn.net/weixin_50012220/article/details/119209336
 

二、Injection

2.1 SQL Injection (intro)

这一节介绍了简单的SQL语句以及利用SQL语句去完成一些简单的“恶作剧”

2.1.1 查询Bob的岗位

题目是:

题目要求查询Bob的部门名称,用select开头的SQL语句即可

答案为:

select department from employees where first_name like 'Bo%'

Congratulations!

 2.1.2 更改Tobi的部门

本题要求把tobi的部门更改为sales

更新数据库内容的语句为: update 表名 set 要更改的行=要更改的值 where 筛选条件

update employees set department='Sales' where first_name='Tobi'

 Congratulations!

2.1.3 增加一个phone部门

 题目要求增加一列,名称为phone

增加一列的语法为:alter table 要增加列的表名 add 列名 数据类型  默认值【可选】

alter table employees add phone varchar(20);

Congratulations!

2.1.4 授权

题目:

题目要求把alter table这个表的权限赋予给'UnauthorizedUser',也就是未授权用户

授权的格式为:grant 表名 to 目标用户

grant alter table to UnauthorizedUser

 Congratulations!

2.1.5 Try It! String SQL injection

题目为

 本题要求实现sql注入,按照题目要求,应该构造一个    任意值 or  true(永真)  的SQL语句实现查询所有用户,第一个需要构成一个引号闭合  选项里面只有 '  符合要求,其余选项会产生额外多的引号;第二个选择应选择  or  ,任意条件 or true,这个构造的SQL才为永真式,实现查询所有数据的目的;第三题  根据题目所给条件,已给出末尾  '  闭合,那么前面只需要'1'='1  即可~

 2.1.6 查询所有员工的信息

题目为:

本题要求利用employees name和Authentication TAN输入框实现SQL注入以呈现所有的员工数据

从逻辑上以及题目所给语句来看,实现查询员工首先要完成两步鉴权,名字和TAN函数都要正确;题目中所给出的查询语法:

"SELECT * FROM employees WHERE last_name = '" + name + "' AND auth_tan = '" + auth_tan + "';

倘若从TAN函数构造永真式,那么第一步鉴权last_name就无法实现查询所有,故我们尝试构造last_name的永真式,然后注释掉第二步鉴权即可

have a try: 

 employee name:aa' or '1'='1' ;--
TAN: aaa

成功!!!

2.1.7 修改员工的薪水

 题目要求利用sql注入漏洞实现数据更改

数据更改的SQL语句为:

update 表名 
    set 列名=要更改的值
    where 筛选条件;

还是延续上一个题目的思路,闭合第一个输入框的鉴权后,使用;分割语句,添加修改的SQL语句,最后再注释掉第二步鉴权即可

employees name: ' ; update employees salary=666666 where first_name='John';--

TAN:随便写

芜湖!~

2.1.8 删库跑路

题目:

 本题要求删库跑路,删库跑路的语法是:

drop table 表名;

直接drop table access_log;会报错,因为这不是公司命令行的窗口,仍然是一个查询界面,需要我们自行构造引号闭合后,再执行删库跑路

'; drop table access_log; --

芜湖起飞!~

injection的其他内容在路上惹~

by:M0nH1N

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐