low:

首先查看源码没有对字符进行任何过滤

target参数为将要ping的ip地址,比如在输入框输入127.0.0.1后,对于windows系统,会发出ping 127.0.0.1操作。

这里可以引入命令行的几种操作方式:

A && B: 先执行A,如果成功,执行B;

A || B :先执行A,如果失败,执行B;

A | B:管道,先执行A后,将A的结果作为B的输入,打印的是B的结果;

A & B:先执行A,然后不管成功与否,执行B;

意味着我们可以通过输入 【ip】+【连接字符】+ 【命令】 的格式进行命令注入

medium


可以看到增加了黑名单
但是还有 || ,& 等命令可以使用

high


可以看到high完善了这个黑名单
但是仔细看还是能发现 , | 符号的后面多加了一个空格
意味着我们仍然能使用 | 符号加命令继续命令注入

impossible

<?phpif( isset( $_POST[ 'Submit' ]  ) ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$target = $_REQUEST[ 'ip' ];$target = stripslashes( $target );// Split the IP into 4 octects$octet = explode( ".", $target );// Check IF each octet is an integerif( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {// If all 4 octets are int's put the IP back together.$target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];// 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 userecho "<pre>{$cmd}</pre>";}else {// Ops. Let the user name theres a mistakeecho '<pre>ERROR: You have entered an invalid IP.</pre>';}
}// Generate Anti-CSRF token
generateSessionToken();?>

相关函数介绍

stripslashes(string) : 该函数会删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。

explode(separator,string,limit): 该函数把字符串打散为数组,返回字符串的数组。参数separator规定在哪里分割字符串,参数string是要分割的字符串,可选参数limit规定所返回的数组元素的数目。

is_numeric(string): 该检测string是否为数字或数字字符串,如果是返回TRUE,否则返回FALSE。

可以看到,Impossible级别的代码加入了Anti-CSRF token,同时对参数ip进行了严格的限制,只有诸如“数字.数字.数字.数字”的输入才会被接收执行,因此不存在命令注入漏洞。

一波强行总结

不仅要学会攻击,更要学会防御
对命令处理要尽可能过滤
尽可能完善黑名单,但是黑名单的方式总会有纰漏和绕够
可以用函数限制所输入的格式,例如限制为只有数字,或者本题中【数字】.【数字】.【数字】

DVWA Command Injection 练习总结相关推荐

  1. DVWA——Command Injection

    Command Injection 文章目录 Command Injection 一.什么是Command Injection? 二.DVWA实战 Low级别 Medium级别 High级别 一.什么 ...

  2. 高级cmd攻击命令_一步一步学习DVWA渗透测试(Command Injection命令行注入)-第七次课...

    各位小伙伴,今天我们继续学习Command Injection,翻译为中文就是命令行注入.是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的.在OWASP TOP 10中一种存在注 ...

  3. cmd php 不是内部命令_一步一步学习DVWA渗透测试(Command Injection命令行注入)-第七次课...

    各位小伙伴,今天我们继续学习Command Injection,翻译为中文就是命令行注入.是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的.在OWASP TOP 10中一种存在注 ...

  4. 3.Command Injection——Medium级别测试——小白笔记——DVWA

    0x01:Medium测试 1.上源码: Command Injection Source: <?phpif( isset( $_POST[ 'Submit' ] ) ) {// Get inp ...

  5. PHP命令注入 Command injection

    命令注入攻击(Command Injection),是指黑客通过利用HTML代码输入机制缺陷(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容.从而可以使用系统命令操作,实现使用远程数据来构造 ...

  6. Data Exfiltration via Blind OS Command Injection

    2019独角兽企业重金招聘Python工程师标准>>> On a penetration test or CTF challenge you may come across an a ...

  7. Command Injection

    Command Injection command injection即命令注入,是指恶意用户通过构造请求,对于一些执行系统命令的功能点进行构造注入,本质上是数据与代码未分离.对于特殊的需求没有对请求 ...

  8. 4 OS command injection操作系统命令注入

    4 OS command injection操作系统命令注入 目录 4 OS command injection操作系统命令注入 一.What is OS command injection? 二.E ...

  9. Command Injection命令注入攻击

    实验目的与要求 1.了解命令注入攻击攻击带来的危险性. 2.掌握命令注入攻击攻击的原理与方法 3.掌握防范攻击的方法 预备知识 在PHP中您可以使用下列5个函数来执行外部的应用程序或函数. (1) s ...

最新文章

  1. 并发基础篇(二):Thread类的API总结
  2. SAP Sybase Adaptive Server Enterprise:高性能,低风险
  3. websocket协议
  4. url中参数以及callback后面的串
  5. JS判断是移动端还是电脑端访问该网站
  6. 关于Element学习笔记
  7. 字符串里解析vue表达式
  8. 程序员基本功09 线性表
  9. sqlite3_column
  10. 【转】SyntaxError: Non-ASCII character ‘\xe5′ in file
  11. visualvm安装插件
  12. php程序设计经典300例,第16-20例
  13. redis的持久化(RDB与AOF)未完待续
  14. MIPS中lw指令运行时间最长
  15. STM32F103RC单片机ADC1使用TIM1自动触发注入通道组的AD转换
  16. 2019暑期金华集训 Day7 分治
  17. QFramework引入Utility和System
  18. UESTC 1635 最大最小生成树
  19. 【学习笔记】大数据技术之HBase
  20. 连续信源微分熵+AEP

热门文章

  1. oracle 数据库_操作事项_05
  2. Springboot/Cloud集成Sentinel进阶实战
  3. 解决在待办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题
  4. linux xguest用户,在/etc/passwd中得到普通用户列表
  5. qt使用样式表设置窗口widget为圆角
  6. Python divmod 函数 - Python零基础入门教程
  7. React之事件处理
  8. CTF-MISC杂项题1
  9. C语言字符串分离数字和字母,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  10. form表单图片预览 layui_layui 实现图片上传和预览