剑庭安
首页
黑客安全首页全部安全栏目 黑客技术黑客技术、渗透测试、漏洞利用工具与教程 安全软件安全工具、扫描器、检测与审计软件 病毒分析恶意软件分析、样本、逆向与沙箱 CTF思路CTF 题目、writeup、解题思路与工具 防护思路防御技术、加固、检测响应与蓝队 红蓝攻防红队攻击模拟、蓝队对抗、攻防演练 漏洞知识库漏洞、CVE、PoC、EXP 与安全研究
逆向|反编译
PHP源码PHP 网站源码、程序、系统 APP源码安卓/iOS APP 源码 ASP源码ASP 网站源码与程序 NET源码.NET 网站源码与系统 小程序源码微信/支付宝小程序源码 Dedecms风格模板Dedecms 织梦风格模板 Empirecms风格模板EmpireCMS 帝国风格模板 Discuz商业模板/插件Discuz 商业模板与插件 WordPress主题/插件WordPress 主题与插件 其它源码、模板其它各类源码与模板 游戏源码游戏源码与引擎项目 加密货币源码加密货币、区块链、钱包、USDT/比特币相关源码与工具 手游源码手机游戏源码、服务端、客户端与引擎项目 传奇源码热血传奇、传奇世界、复古传奇等客户端/服务端/引擎源码 页游源码网页游戏、H5 游戏、浏览器游戏源码 端游源码电脑单机游戏、PC 网游客户端/服务端源码
最新万能免驱动支持所有型号打印机下载程序 日历天气老黄历 · 每天同步真实日期与天气
站长工具站长工具 自助开通会员浏览该分类 其他资源qtziy SEO工具SEO工具 站群源码站群源码 泛程序泛程序 蜘蛛模板蜘蛛模板 蜘蛛池蜘蛛池 外链工具外链工具
搜索 自助开通会员🔓 破甲 API
登录 注册
首页 分类列表 CTF思路 bashFuck - exec BashCommand …
bashFuck - exec BashCommand with only ! # $ ' ( ) < \ { } jus CTF思路 点击放大
作者:admin 发布:2026-10-05

bashFuck - exec BashCommand with only ! # $ ' ( ) < \ { } jus

项目说明关于针对Linux终端 bashshell 的无字母命令执行的骚操作x 支持在线生成:Used in 【RCE-labs · level 9-12: BashFuck - 无字母命令执行】 to simplify the generation process.目前可以实现的字符集: # $ …
资源可下载 免费下载 0 条讨论
会员资源
开通会员后即可下载全部资源。
登录后开通会员
会员方案
398浏览量
0讨论
2下载链接
可下载资源状态
内容可验证
更新 2026-10-05
人工审核发布
评论区答疑

bashFuck - exec BashCommand with only ! # $ ' ( ) < \ { } jus

bashFuck - exec BashCommand with only ! # $ ' ( ) < \ { } jus

项目说明

关于

针对Linux终端 bashshell 的无字母命令执行的骚操作x

支持在线生成:

Used in 【RCE-labs · level 9-12: BashFuck - 无字母命令执行】 to simplify the generation process.

目前可以实现的字符集:

  • # $ ' ( ) 0 1 < \ (9 Charset)
  • # $ ' ( ) 0 < \ { } (10 Charset)
  • ! # $ ' ( ) < \ { } (10 Charset)
  • ! $ & ' ( ) = < \ _ { } ~ (13 Charset)
  • ...更多可能?

    Idea来源于CTFshow周末的极限挑战赛

    (后面不定期有各种有意思的挑战赛哦~欢迎各位师傅来平台玩呀)

    Usage

    *现已支持在线生成:

    使用python3运行bashFuck.py文件即可,根据提示输入你的命令,程序会自动为你生成从最基本的$'\xxx'形式到更复杂的形式。

    ![]()

    ![]()

    bashFuck-Wiki

    前言

    整个项目的核心是 Linux终端可以通过 $'\xxx' 的方式执行命令,xxx是字符ascii码的八进制形式,通过这一点,我们可以通过位运算符号和Linux终端的其他特性,在没有数字的情况下继续构造这样的形式以实现无字母数字仅用几个字符就实现任意命令执行。

    当然本项目也有一定局限性,这取决于linux的系别,我们知道sh其实是一个软连接,在debian系操作系统中,sh指向dash;在centos系操作系统中,sh指向bash,这也是本项目名称为 Bashfuck 的原因。

    原理解析

    #### common_otc(cmd)

    首先我们知道,在终端中,$'\xxx'可以将八进制ascii码解析为字符,仅基于这个特性,我们可以得到第一个函数common_otc(cmd),该函数将传入的命令的每一个字符转换为$'\xxx\xxx\xxx\xxx'的形式,但是注意,如果为连续的一串$'\xxx\xxx\xxx\xxx'形式,则我们无法执行带参数的命令。

    比如"ls -l"也就是$'\154\163\40\55\154',因为这样会把整个字符串当作一个单词,而不会分割成不同的参数,这里涉及到bash的一个单词分割,在Bash中,单词分割是一种将参数扩展、命令替换和算术扩展的结果分割成多个单词的过程,它发生在双引号之外,并且受到IFS变量的影响

    (简单提一嘴,IFS是一个环境变量,它定义了字段分隔符,也就是用来分割字符串的字符。默认情况下,空格、制表符和换行符被认为是字段分隔符)

    如果一个字符串包含空格或其他IFS字符,它会被分割成多个单词,每个单词作为一个独立的参数传递给命令。

    但因为八进制转义序列是在命令行解析之前就执行的,所以它不会触发单词分割

    (具体原理可以参考:

    【Bash word splitting mechanism】

    【$IFS】

    #### bashfuck_x(cmd, form)

    基于上面的基本原理,我们引入一些表示特性和运算特性:

    比如,在bash中,支持二进制的表示整数的形式:$((2#binary))。

    通过阅读bash的参考文档

    我们知道$作为一个特殊字符,有多样化的功能,比如$()可用来表示命令替换或者算术扩展。

    在这里我们引入 $(()) 也就是 算术扩展,让其在括号中执行运算再替换到当前位置。

    如果括号里面没有东西的话,也就是为0,那么直接echo $(()) 我们就可以得到字符 0

    比如我们下面引入一些位运算

    左移运算符: 1<<1可以得到2 ;

    取反:我们在 0 的基础上取反,就可以得到字符 -1 (这个原理很简单,因为0的二进制表示是00000000,取反后得到11111111,这个数在补码表示法下就是-1)

    除了$() $ 还可以 用${}的方式来扩展变量,具体的用法可以参考:

    这里我们主要用到下面的特性:

    ${#var} 可以计算 var变量的字符长度:

    ![]()

    当然 如果 var 是 # / _ / ?这样的本来获取的值就是一个字符特殊参数 那么字符本身为变量,输出 1,

    如果var为NULL即不带参数 则为 0

    ![]()

    ![]()

    将上面的几种特性结合起来,我们就能使用 1 0 / 0 甚至不用数字来构造字符的八进制形式。

    比如只使用0和1:位运算让我们可以很轻松获得数字2,在下面的整数表示中就可以使用$(($((1<<1))#binary))来表示任意数字,然后构造八进制

    而在上面的基础上,我们用 ${##} 来替换 1 ,用 ${#} 来替换 0

    那么对于命令ls就有下面的几种写法。

    但是上面的命令最终只能被bash还原为八进制转义序列,不会再进一步解析了:

    ![]()

    至于为什么没有进一步解析,我们需要从bash的底层说起,我们可以看参考手册了解问题的所在:

    Bash在执行命令之前,会对命令行进行一系列的扩展(expansions),这些扩展包括花括号扩展(brace expansion)、波浪号扩展(tilde expansion)、参数和变量扩展(parameter and expansion)、算术扩展(arithmetic expansion)、命令替换(command substitution)、单词分割(word splitting)和文件名扩展(filename expansion)等,最重要的是这些扩展的顺序是固定的,而且是从左到右进行的。

    也就是说,bash shell 会先对命令行中的花括号进行扩展,然后再对波浪号进行扩展,依次类推,直到完成所有的扩展为止。

    我们上面的操作都是基于 算术扩展和命令替换 而八进制转义也就是 $'\xxx\xxx' 的执行则是依赖于参数和变量扩展

    所以当把这一些列运算符解析成八进制转义的时候,已经执行过一次参数和变量扩展了,所以不会再次解析。

    所以这里我们引入Linux Bash Shell的Here string语法()

    让八进制转义作为标准输入再完成一次解析:

    但是这样得到的就是$'\xxx\xxx\xxx\xxx'命令解析形式,在前面我们说到,这种方式无法执行带参数的命令,其实到这里也好理解了,因为带参命令需要执行单词分割扩展,而解析在扩展之后,也就是说,八进制转义序列命令的解析没有单词分割这一步,而是把整个解析结果作为整体执行。

    所以我们需要使用两次Here-string语法,让这个命令扩展执行两次以便完成所有的解析工作。

    在前面我们提到,$作为一个特殊的字符,有很多功能()

    $0 可以表示当前脚本的文件名,在终端中,$0其实就是bash本身。

    ![]()

    接下来 如果我们想要不用数字去构造的话,那么就要寻找$0的替换,这里还是直接啃参考手册(x

    这里使用间接扩展特性——${!xxx},它表示用xxx的值作为另一个变量的名字,然后取出那个变量的值。例如,如果a=0,b=1,c=2,那么${!a}就相当于$0,${!b}就相当于$1,${!c}就相当于$2。所以我们只需要一个变量值为0的变量,就可以拿到sh

    ![]()

    所以我们可以使用变量赋值,或者特殊参数构造,得到0

    ![]()

  • ${#}表示接受参数个数,在终端中参数为空 值为 0

  • ${?}表示上一条命令的退出状态,如果上一条命令异常 ${?}值为1,如果正常退出则为0

  • ${_}表示上一个命令的最后一个参数。(如果上一个指令的输出是0的话,就能构造出sh了)
  • 那么对于bash_x的三种写法也就容易理解了:

    #### bashfuck_y(cmd)

    在前面我们就提到过 $(()) 的用法,在不使用$((2#binary))特性的情况下,我们还可以通过多个-1的叠加再取反去构造任意数字,于是就有了:

    这样就可以使用$(())去构造$'\xxx\xxx\xxx\xxx'

    再引入我们前面提到的,变量赋值,我们就可以轻松的用$(())拿到sh

    得到我们第四种payload形式:

    总结

    除开上面的几种写法,利用特性其实还能构造出不同的payload,或许还有一些方法没有被探索到,如果上面的文档存在错误欢迎师傅们指出捏,如果有新的想法也欢迎师傅们讨论。

    效果展示:

    ![]()

    项目信息

    开发语言:HTML

    Star 数:274

    技术要点

    该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕exec BashCommand with only ! # $ ' ( ) < \ { } just 10 charset used in Bypass or CTF展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。

    从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。

    使用与学习建议

    1. 下载源码压缩包,解压到本地环境。

    2. 根据项目类型准备对应的运行环境与依赖。

    3. 按照 README 中的步骤完成配置与部署。

    4. 在隔离的测试环境中运行验证,避免影响生产系统。

    免责声明

    本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。

    资源标题bashFuck - exec BashCommand with only ! # $ ' ( ) < \ { } jus
    所属分类CTF思路
    发布作者admin
    发布时间2026-10-05 23:44:47
    下载权限 免费下载
    附件数量2 个下载链接
    浏览次数398
    讨论数量0
    主题状态正常讨论中

    本资源免费,登录后即可在本页「下载链接」区域获取全部附件。

    请在评论区留言说明具体链接,或联系作者补档。楼主更新后本页会同步最新的下载地址。

    请先阅读正文中的授权说明;未注明的默认仅限站内学习交流,禁止直接搬运到其他站点二次售卖。
    还没有讨论,快来抢沙发~
    登录 后才能参与讨论
    下载链接
    会员才能下载
    登录后开通会员
    同分类推荐
    暂无同类资源
    免费登录即可下载
    查看会员
    放大预览

    © 2026 剑庭安 - 网站开发定制 SEO 优化蜘蛛池代做 在线看手相算命. 保留所有权利。

    Powered by 酷像SEOv3.0

    网站地图 Sitemap.xml
    首页 全部分类 黑客安全 逆向|反编译 精品源码 站长工具自助开通会员其他资源SEO工具站群源码泛程序蜘蛛模板蜘蛛池外链工具创意乐园 搜索 会员服务 登录 注册