DVWA-命令执行学习笔记
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-命令执行学习笔记的更多相关文章
- ImageMagick命令执行学习笔记(常见于图片预览处)
实验版本: ImageMagick版本:6.9.2 push graphic-context viewbox 0 0 640 480 fill 'url(https://"|whoami&q ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- MySQL4.0命令操作学习笔记
声明:下列内容并非原创,仅仅是最近学习笔记整理. -------------------------------------- 进入mysql安装路径bin目录下: 1.开启服务 winmysqlad ...
- docker常用命令,学习笔记
- 常用命令 https://docs.docker.com images > docker images # 查看本地镜像 > docker images -a # 查看所(含中间镜像层 ...
- PHP命令执行学习总结
前言 最近学习了PHP命令执行,内容比较多,把自己学到的总结下来,加深理解,水平有限,欢迎大佬斧正. 什么是PHP命令注入攻击? Command Injection,即命令注入攻击,是指由于Web应用 ...
- 【第三课】常用的Linux命令(学习笔记)
4月8日 学习笔记打卡
- [整理]ADB命令行学习笔记
global driver# 元素定位driver.find_element_by_id("id") # id定位driver.find_element_by_name(" ...
- Linux常用命令(学习笔记)
命令编写以遇到的生产问题的前后为顺序进行记录 虚拟机的镜像是centos6.5版本,在这个版本下,我个人整理记录了一些在linux上常用的命令以及一些项目部署需要的jdk.tomcat.mysql等的 ...
- 【Linux基础】Linux基础命令行学习笔记
绝对路径:cd /home/python相对路径:cd Downloads . 表示:当前那路径..表示:当前路径的上一层../.. 表示:当前路径的上二层 没有...或者以上的 ls: ls 查看当 ...
随机推荐
- 一起学Android之Dialog
概述 对话框(Dialog)是一个小窗口,在Android系统开发中经常会用到,它提示用户做决定或者输入一些东西,对话框并不填充屏幕,是一个模态(Modal)窗口.Dialog类是所有对话框的基类,应 ...
- Hive的原理
阅读目录 一.Hive内部表和外部表 1.Hive的create创建表的时候,选择的创建方式: - create table - create external table 2.特点: ● 在导入数据 ...
- sqlserver2014无法打开报Cannot find one or more components_修复方案
前言:我跟网上大家的原因基本一样,就是好久没用sqlserver了,中间也对VS进行过卸载升级等,突然有一天发现,打开Sqlserver时打不开了,出了一个弹框:Cannot find one or ...
- vmware P2V迁移域内windows服务器脱域问题
windows 域服务器采用vmware converter进行物理机转换为虚拟机,需要在完成后进行退域重新加域操作. 否则,有可能会出现服务器在30天后脱域情况.出现脱域情况,可以通过退域加域的方式 ...
- Unity的Mesh压缩:为什么我的内存没有变化?
0x00 前言 最近和朋友聊天,谈到了Mesh的内存优化问题,他发现开启Model Importer面板上的Mesh Compression选项之后,内存并没有什么变化.事实上,期望开启Mesh Co ...
- 鸟哥Linux私房菜基础学习篇学习笔记3
鸟哥Linux私房菜基础学习篇学习笔记3 第十二章 正则表达式与文件格式化处理: 正则表达式(Regular Expression) 是通过一些特殊字符的排列,用以查找.删除.替换一行或多行文字字符: ...
- 【反编译系列】二、反编译代码(jeb)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 一般情况下我们都是使用dex2jar + jd-gui的方式反编译代码,在实际使用过程中,有时候发现反编译出来的代码阅读效果不是很好 ...
- springcloud~配置中心实例搭建
server端 build.gradle相关 dependencies { compile('org.springframework.cloud:spring-cloud-config-server' ...
- DotNetCore跨平台~认识环境和环境变量
回到目录 环境 环境,对于开发来说就是部署的一种场景,你可以是调试场景,测试场景,生产场景,当然还可以有很多其它的场景,只要你的项目需要就可以自定义,微软帮我们定义了三种标准的环境变量,下面来说一下. ...
- Python捕捉系统信号
#!/usr/bin/env python # -*- coding: utf-8 -*- import signal import sys """ Python捕捉中断 ...