DVWA Command Injection 练习总结
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 练习总结相关推荐
- DVWA——Command Injection
Command Injection 文章目录 Command Injection 一.什么是Command Injection? 二.DVWA实战 Low级别 Medium级别 High级别 一.什么 ...
- 高级cmd攻击命令_一步一步学习DVWA渗透测试(Command Injection命令行注入)-第七次课...
各位小伙伴,今天我们继续学习Command Injection,翻译为中文就是命令行注入.是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的.在OWASP TOP 10中一种存在注 ...
- cmd php 不是内部命令_一步一步学习DVWA渗透测试(Command Injection命令行注入)-第七次课...
各位小伙伴,今天我们继续学习Command Injection,翻译为中文就是命令行注入.是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的.在OWASP TOP 10中一种存在注 ...
- 3.Command Injection——Medium级别测试——小白笔记——DVWA
0x01:Medium测试 1.上源码: Command Injection Source: <?phpif( isset( $_POST[ 'Submit' ] ) ) {// Get inp ...
- PHP命令注入 Command injection
命令注入攻击(Command Injection),是指黑客通过利用HTML代码输入机制缺陷(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容.从而可以使用系统命令操作,实现使用远程数据来构造 ...
- Data Exfiltration via Blind OS Command Injection
2019独角兽企业重金招聘Python工程师标准>>> On a penetration test or CTF challenge you may come across an a ...
- Command Injection
Command Injection command injection即命令注入,是指恶意用户通过构造请求,对于一些执行系统命令的功能点进行构造注入,本质上是数据与代码未分离.对于特殊的需求没有对请求 ...
- 4 OS command injection操作系统命令注入
4 OS command injection操作系统命令注入 目录 4 OS command injection操作系统命令注入 一.What is OS command injection? 二.E ...
- Command Injection命令注入攻击
实验目的与要求 1.了解命令注入攻击攻击带来的危险性. 2.掌握命令注入攻击攻击的原理与方法 3.掌握防范攻击的方法 预备知识 在PHP中您可以使用下列5个函数来执行外部的应用程序或函数. (1) s ...
最新文章
- 并发基础篇(二):Thread类的API总结
- SAP Sybase Adaptive Server Enterprise:高性能,低风险
- websocket协议
- url中参数以及callback后面的串
- JS判断是移动端还是电脑端访问该网站
- 关于Element学习笔记
- 字符串里解析vue表达式
- 程序员基本功09 线性表
- sqlite3_column
- 【转】SyntaxError: Non-ASCII character ‘\xe5′ in file
- visualvm安装插件
- php程序设计经典300例,第16-20例
- redis的持久化(RDB与AOF)未完待续
- MIPS中lw指令运行时间最长
- STM32F103RC单片机ADC1使用TIM1自动触发注入通道组的AD转换
- 2019暑期金华集训 Day7 分治
- QFramework引入Utility和System
- UESTC 1635 最大最小生成树
- 【学习笔记】大数据技术之HBase
- 连续信源微分熵+AEP
热门文章
- oracle 数据库_操作事项_05
- Springboot/Cloud集成Sentinel进阶实战
- 解决在待办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题
- linux xguest用户,在/etc/passwd中得到普通用户列表
- qt使用样式表设置窗口widget为圆角
- Python divmod 函数 - Python零基础入门教程
- React之事件处理
- CTF-MISC杂项题1
- C语言字符串分离数字和字母,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
- form表单图片预览 layui_layui 实现图片上传和预览