webgoat-Injection

注入攻击是WEB安全领域中一种最为常见的攻击方式。在“跨站脚本攻击”一章中曾经提到过,XSS本质上也是一种针对HTML的注入攻击。而在“我的安全世界观”一章中,提出一个安全设计原则----“数据与代码分离”的原则,它可以说是专门为了解决注入攻击而生的。

注入攻击的本质,是把用户输入的数据当做代码来执行。这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。

SQL注入的类型:数字型、字符型

  • 数字型:数字型的注入通常需要做类型转换,强类型的语言对数字型注入具有天然的免疫力。
  • 字符型:拼接SQL。制造闭合SQL语句,注释掉无用部分。 防御SQL注入的方法:
  • 数据类型转换时的类型检查
  • 特殊字符转义(ESAPI)
  • 使用安全函数(http://lib.csdn.net/base/java)中使用预编译,参数化查询条件
  • 使用安全的存储过程
String username = request.getParameter("username");        //获取请求中的变量username的值  
String sql = "SELECT id,username,itemsCon FROM items WHERE id = ? ";        //使用预编译的SQL语句  
PreparedStatement ps = connection.preparedStatement("sql");        //数据库连接创建带有预编译SQL语句的PreparedStatement对象  
ps.setString(1,id);        //参数绑定  
ResultSet rs = ps.executeQuery();        //创建SQL执行的结果集

Webgoat

Command Injection

任意选择一个文件,点击view,页面会提示

ExecResults for 'cmd.exe /c type "E:\safe\WebGoat-5.4\tomcat\webapps\WebGoat\lesson_plans\English\AccessControlMatrix.html"'

抓取请求,将HelpFile字段修改为

AccessControlMatrix.help"%20%26%20netstat%20-an%20%26%20ipconfig

注意要使用urlencoder

“ & netstat -an & ipconfig

先用”将前面的命令闭合,最终执行的命令就是:

cmd.exe /c type "E:\safe\WebGoat-5.4\tomcat\webapps\WebGoat\lesson_plans\English\AccessControlMatrix.html" & netstat -an & ipconfig

得到如下结果,命令已被执行

Num Injection

在 station 字段中注入特征字符,能组合成新的 SQL 语句。例子:

SELECT * FROM weather_data WHERE station = 12 and 1=2;

Log Spoofing

这种攻击基于在日志文件上欺骗人类的眼睛,攻击者可以很容易地擦除攻击日志。

目标:灰色区域代表Web服务器日志上需要录入的信息;使它看上去像是admin用户成功登录的样子;通过增加脚本提升攻击。

Smith%0d%0aLogin Succeeded for username: admin

String Injection

Modify Data with SQL Injection

表单允许用户通过userid查询自己的工资,这个表单存在SQL注入漏洞。数据表“salaries”。 命令格式:

UPDATE table SET column=value WHERE column=value;

分析:需要更新表 salaries,设置 salary 栏的值。使用如下命令:

UPDATE salaries SET salary=999999 WHERE userid='jsmith'

同时也需要结束前一个查询并且打开前一个引号 使指令有效。 综上于是空白处输入以下指令,点击Go:

whatever'; UPDATE salaries SET salary=999999 WHERE userid='jsmith

原文发布于微信公众号 - 信安之路(xazlsec)

原文发表时间:2017-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

【千里之行始于足下】谈Oracle的system表空间

编辑手记:SYSTEM表空间是Oracle数据库最重要的表空间,在创建数据库时被最先创建,其中包含了数据库的元数据,对于数据库来说生死攸关。对于很多初学者,全面...

3545
来自专栏Rgc

mysql数据库优化(二)

https://www.cnblogs.com/sevck/p/6733702.html

2402
来自专栏SpringBoot 核心技术

第六章:使用QueryDSL的聚合函数

3092
来自专栏微信公众号:Java团长

Java面试中常问的数据库方面问题

B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的

1213
来自专栏SpringBoot 核心技术

第四十四章: 基于SpringBoot & AOP完成统一资源自动查询映射

4169
来自专栏黑泽君的专栏

day28_Struts2综合案例

a、拷贝必要的jar包(图中黄色框框) 和 与数据库操作有关的jar包与配置文件(图中绿色框框)

961
来自专栏互联网杂技

SQL注入攻防入门详解

毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各种借口。这几...

58610
来自专栏Snova云数仓

Greenplum资源队列初识

在Greenplum的4.x版本之后,加入了资源队列的概念,其主要作用就是限制用户或者单个SQL对资源的消耗。避免出现消耗过多资源,影响其他用户或者SQL计算。...

80814
来自专栏ChaMd5安全团队

老司机带你过常规WAF

0x00 前言 最近看了不少关于WAF绕过的文章,想把理论深化到实践当中去,于是就有了您正在看的这篇文章,这篇文章分为两大部分,分别写的是SQL注入相关的WAF...

56111
来自专栏文渊之博

优化SqlServer--数据压缩

 数据压缩是对存储和性能优势的加强。减少数据库占用的磁盘空间量将减少整体数据文件存储空间,在一下几个方面增加吞吐量:      1.更好的I/O利用率,每个页面...

2057

扫码关注云+社区

领取腾讯云代金券