DVWA-命令执行

原理:

web服务器没有对用户提交的数据进行严格的过滤,造成调用操作系统的命令或者在操作系统恶意拼接拼接命令,以达到攻击者的目的。

1.将DVWA的级别设置为low

1.2查看源代码,可以看到没有对参数做任何防御处理措施,直接进行执行

  

1.3.点击command injection,尝试拼接命令(127.0.0.1&&dir),下图可以看到成功执行dir的命令说明存在命令执行漏洞,然后尝试拼接net user、ipcofig、netstat -ano等命令     #&& 第一个命令执行成功才会执行第二个命令

  

1.4,随便输入然后用&&拼接命令,都不能执行,因为(&& 第一个命令执行成功才会执行第二个命令)

  

1.5 尝试用&拼接命令  #&是不管第一个命令是否执行成功都会执行第二个命令

127.0.0.1&&dir

  

随便输入一个字符串然后用&拼接命令,下图可以看到成功执行第二个命令,这是因为&是不管第一个命令是否执行成功都会执行第二个命令

  

1.6尝试用|拼接命令  #|(管道符)是只执行第二个命令

下图可以看到只执行第二个命令,没有执行第一个命令

  

  

2. 将DVWA的级别设置为medium

2.1此时一些常规的拼接操作就不能实现命令执行漏洞了,查看源码,可以发现对参数进行了简单的处理:过滤&&和;

 

2.2用&&拼接命令,可以看到返回错误信息,&&被过滤了

  

2.3从DVWA的medium级别源码可以看到,对参数进行了一些简单的过滤,此时可以通过&或|或者根据过滤的字符进行组合等绕过防御

2.3.1通过&拼接命令,绕过防御  也可以通过在&前敲空格,绕过防御

  

2.3.2通过|拼接命令,绕过防御

  

2.3.3通过防御过滤的字符进行组合,绕过防御

127.0.0.1&&&dir

  

127.0.0.1&;&ipconfig

  

3.将DVWA的级别设置为High

3.1查看源代码,可以看到首先对参数进行trim去除两边的空格,然后增加了过滤的黑名单

  

3.2观察源代码可以看到过滤“|”时,是过滤”| ”,”|”后有个空格,此时可以通过简单的127.0.0.1|dir绕过

  

4. 将DVWA的级别设置为impossible

4.1查看源代码,可以看到先对参数使用stripslashes函数过滤掉反斜杠,然后使用explode函数将参数打散为数组,然后用is_numeric函数对数组中的每个参数进行判断,符合条件再把数组的参数进行拼接。对参数进行了严格的限制,因此不可能存在命令执行漏洞

  

过滤敏感字符

1.首先再DVWA的medium级别源码文件中,添加过滤条件(过滤whoami,net user等敏感字符),然后测试

  

2.测试拼接whoami、net user命令,没有得到返回结果,说明字符被过滤

  

3.尝试绕过敏感字符过滤

  

  

解决乱码问题:

在DVWA-master\dvwa\includes目录下找到dvwaPage.inc.php文件中所有的”charset=utf-8”,修改”charset=gb2312”

DVWA-命令执行学习笔记的更多相关文章

  1. ImageMagick命令执行学习笔记(常见于图片预览处)

    实验版本: ImageMagick版本:6.9.2 push graphic-context viewbox 0 0 640 480 fill 'url(https://"|whoami&q ...

  2. Linux——帮助命令简单学习笔记

    Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...

  3. MySQL4.0命令操作学习笔记

    声明:下列内容并非原创,仅仅是最近学习笔记整理. -------------------------------------- 进入mysql安装路径bin目录下: 1.开启服务 winmysqlad ...

  4. docker常用命令,学习笔记

    - 常用命令 https://docs.docker.com images > docker images # 查看本地镜像 > docker images -a # 查看所(含中间镜像层 ...

  5. PHP命令执行学习总结

    前言 最近学习了PHP命令执行,内容比较多,把自己学到的总结下来,加深理解,水平有限,欢迎大佬斧正. 什么是PHP命令注入攻击? Command Injection,即命令注入攻击,是指由于Web应用 ...

  6. 【第三课】常用的Linux命令(学习笔记)

    4月8日 学习笔记打卡

  7. [整理]ADB命令行学习笔记

    global driver# 元素定位driver.find_element_by_id("id") # id定位driver.find_element_by_name(" ...

  8. Linux常用命令(学习笔记)

    命令编写以遇到的生产问题的前后为顺序进行记录 虚拟机的镜像是centos6.5版本,在这个版本下,我个人整理记录了一些在linux上常用的命令以及一些项目部署需要的jdk.tomcat.mysql等的 ...

  9. 【Linux基础】Linux基础命令行学习笔记

    绝对路径:cd /home/python相对路径:cd Downloads . 表示:当前那路径..表示:当前路径的上一层../.. 表示:当前路径的上二层 没有...或者以上的 ls: ls 查看当 ...

随机推荐

  1. [ArcGIS API for JavaScript 4.8] Sample Code-Get Started-layers简介

    [官方文档:https://developers.arcgis.com/javascript/latest/sample-code/intro-layers/index.html] 一.Intro t ...

  2. sqlserver2012 在视图中建索引

      第一种 如果已经有视图但是要加索引只需要执行 以下SQL就好(前提是此视图必须                    绑定到架构) CREATE UNIQUE CLUSTERED INDEX in ...

  3. 为什么在STM32F429工程配置中需要预先定义USE_STDPERIPH_DRIVER和STM32F429_439xx?

    如图: 1.查找USE_STDPERIPH_DRIVER,发现这个宏出现在stm32f4xx.h头文件中,并且有如下代码: 也就是说,通过已经定义了USE_STDPERIPH_DRIVER宏加载stm ...

  4. Expand命令行详解

    使用Expand命令行可以在计算机没有安装Windows操作系统的情况下应用批处理文件和脚本: 虽然有多个基于Windows的工具可以压缩和解压缩文件(包括WinZip和WinRAR),但是必须有一个 ...

  5. 和我一起学习爬虫之HTTP/HTTPS抓包工具--Fiddler

    HTTP/HTTPS抓包工具--Fiddler Fiddler[ˈfɪdlə(r)] 1. HTTP代理神器Fiddler Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP ...

  6. 逆向-攻防世界-crackme

    查壳,nSpack壳,直接用软件脱壳,IDA载入程序. 很明显,就是将402130的数据和输入的数据进行异或,判断是否等于402150处的数据.dwrd占4字节. 这道题主要记录一下刚学到的,直接在I ...

  7. 原生js显示消失

    function showModel() {document.getElementById('container_head').style.display = 'block';}function cl ...

  8. Java相关面试题总结+答案(三)

    [多线程] 35. 并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务.(是真正的物理上的同时发生) 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来 ...

  9. CanalSharp-mysql数据库binlog的增量订阅&消费组件Canal的.NET客户端

    一.前言 CanalSharp是阿里巴巴开源项目mysql数据库binlog的增量订阅&消费组件 Canal 的.NET客户端,关于什么是 Canal?又能做什么?我会在后文为大家一一介绍.C ...

  10. Python--开发简单爬虫

    简单爬虫架构 动态运行流程 URL管理器的作用 URL管理器的3种实现方式 网页下载器的作用 Python网页下载器的种类 urllib2下载网页的3种方法 网页解析器的作用 Python的几种网页解 ...