Command Injection

Low:

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {

// Get input

$target = $_REQUEST[ 'ip' ];

// Determine OS and execute the ping command.

if( stristr( php_uname( 's' ), 'Windows NT' ) ) {

// Windows

$cmd = shell_exec( 'ping  ' . $target );

}

else {

// *nix

$cmd = shell_exec( 'ping  -c 4 ' . $target );

}

// Feedback for the end user

echo "<pre>{$cmd}</pre>";

}

?>

两个值得注意的方法:stristr与php_uname

Stristr(被搜索的字符串,要搜索的字符串)搜索字符串在另一字符串中的第一次出现,返回字符串的剩余部分(从匹配点)

Php_uname(’s’)是返回操作系统名称

源代码判断了是Windows系统,还是*nix系列系统,但对$target = $_REQUEST[ 'ip' ];

中ip没有任何检查,所以你懂的

用127.0.0.1&&命令  可绕过

Medium:

多了个过滤&&与;

那么用&也可以顶

但是双符号就是传说中的短路运算,a&&b,只有a命令正确执行才会执行b命令,否则根本不管你后面写得天花乱坠,是为“短路”

而&比较仁慈,a命令无论成功与否,都会执行b命令(“||”与“|”类似道理)

用127.0.0.1&;&命令  可绕过

High:

High还是用的黑名单,只不过比原来的黑名单长了不少

嗯。。。。。。出题人比较nice,特意过滤了“| ”(有空格的),但是没有过滤“ |”,只能说是故意留洞,正常哪有这么写的。。。

127.0.0.1 |命令    可绕过

Impossible:

Stripslashes 用于去掉反斜杠

Explode用于将字符串按某种条件分割打散变成数组

is_numeric 用于判断输入是否是数字

还有checkToken

格式已经定死了,没毛病

开发基础:用户都是大坏蛋,不要相信他们的输入

DVWA靶场之Command Injection(命令行注入)通关的更多相关文章

  1. 安全性测试入门:DVWA系列研究(二):Command Injection命令行注入攻击和防御

    本篇继续对于安全性测试话题,结合DVWA进行研习. Command Injection:命令注入攻击. 1. Command Injection命令注入 命令注入是通过在应用中执行宿主操作系统的命令, ...

  2. DVWA靶场练习-Command Injection命令注入

    Command Injection 原理 攻击者通过构造恶意参数,破坏命令的语句结构,从而达到执行恶意命令的目的.

  3. DVWA靶场之SQL injection(blind)通关

    盲注,顾名思义,无法从界面上直接查看到执行结果,一般的SQL注入基本绝迹,最多的就是盲注 基本步骤:(由于没有回显了,相比一般的SQL注入,也就不需要确定查询字段数.判断回显位置了) 判断注入类型 破 ...

  4. DVWA 黑客攻防演练(三)命令行注入(Command Injection)

    文章会讨论 DVWA 中低.中.高.不可能级别的命令行注入 这里的需求是在服务器上可以 ping 一下其他的服务器 低级 Hacker 试下输入 192.168.31.130; cat /etc/ap ...

  5. DVWA-全等级命令行注入

    DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...

  6. Fortify Audit Workbench 笔记 Command Injection(命令注入)

    Command Injection(命令注入) Abstract 执行不可信赖资源中的命令,或在不可信赖的环境中执行命令,都会导致程序以攻击者的名义执行恶意命令. Explanation Comman ...

  7. 26 About the go command go命令行

    About the go command  go命令行 Motivation Configuration versus convention Go's conventions Getting star ...

  8. DVWA之Command injection(命令执行漏洞)

    目录 Low Medium Middle Impossible 命令执行漏洞的原理:在操作系统中, &  .&& .|  . ||   都可以作为命令连接符使用,用户通过浏览器 ...

  9. command injection命令注入

    命令注入 是指程序中有调用系统命令的部分,例如输入ip,程序调用系统命令ping这个ip.如果在ip后面加一个&&.&.|.||命令拼接符号再跟上自己需要执行的系统命令 在pi ...

随机推荐

  1. Quartz:Quartz任务异常处理方式

    Quartz提供了二种解决方法 1 立即重新执行任务 2 立即停止所有相关这个任务的触发器 解决的方式是:在你的程序出错时,用Quartz提供的JobExecutionException类相关方法就能 ...

  2. 17 shell break与continue

    使用 while.until.for.select 循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用 break 或者 continue 关键字. 在C语言.Python.Ja ...

  3. linux驱动之获取设备树信息

    上一篇文章学习了字符设备的注册,操作过的小伙伴都知道上一篇文章中测试驱动时是通过手动创建设备节点的,现在开始学习怎么自动挂载设备节点和设备树信息的获取,这篇文章中的源码将会是我以后编写字符驱动的模板. ...

  4. 一行代码打印python之禅

    就这一句: import this 输出: The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is be ...

  5. [刘阳Java]_处理并发有哪些方法

    1.HTML静态化 ,将活动页面上的所有可以静态的元素全部静态化,并尽量减少动态元素2.禁止重复提交:用户提交之后按钮置灰,禁止重复提交3.用户限流:在某一时间段内只允许用户提交一次请求,比如可以采取 ...

  6. Kettle——shell交互命令

    Kettle--shell交互命令 在kettle上开发了job或transform可以以单独的文件存在,也可以存放在资源库中.调用这些程序可以通过shell脚本调用,记录下: 资源库中的job: . ...

  7. ajax请求对返回数据data的处理

    1,ajax请求会根据响应头的返回数据类型对返回的数据data变量进行不同的处理 $.get("data/user-permission-submit-" + ddo.manipu ...

  8. HTML - form表单操作

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. 让Angular自定义组件支持form表单验证

    Angular提供了一套非常强大的表单验证库(vue和react都需要第三方库的支持),可以非常方便简单实现web应用程序中的表单验证功能.但是如何让我们自定义的组件也支持验证呢? 我遇到一个需求是封 ...

  10. Leetcode:230. 二叉搜索树中第K小的元素

    Leetcode:230. 二叉搜索树中第K小的元素 Leetcode:230. 二叉搜索树中第K小的元素 思路: 利用BST的中序历遍的结果为其排序后的结果,我们可以利用其特性直接找到第k个中序遍历 ...