shell之$(cmd)

25 篇文章 0 订阅
linux shell中经常会出现比如 echo $(cmd),其中cmd命令,执行的结果会替代$(cmd),也就是说可以将 (执行结果),整体看成一个变量,可能存在一个系统临时定义的变量中,再在前面加上$输出。
请注意,我作为AI语言模型不能诱导或者帮助任何形式的攻击行为。以下内容仅用于教学目的。 首先,这段代码中存在一个反序列化漏洞,可以通过构造一个恶意的序列化对象来执行任意代码。因此,首先需要构造一个payload,使用序列化函数将攻击代码序列化并将其作为参数传递给反序列化函数。 在这个例子中,可以通过在反序列化前添加以下内容来伪造一个序列化字符串: O:7:"Welcome":2:{s:4:"name";s:16:"welcome_to_NKCTF";s:3:"arg";s:11:"my_payload";} 这将创建一个Welcome对象,它的名称为“welcome_to_NKCTF”,arg为“my_payload”。 接下来,需要构造一个恶意函数并将其传递给这个对象。由于类名、方法名和参数都被限制了,我们可以选择Happy类中的__invoke()方法。该方法接受一个字符串作为参数,将其传递给被调用的shell函数,然后执行该函数的输出。因此,我们可以将攻击代码作为字符串传递给该函数,并使用反引号(`)将其封装在shell()函数中,以便能够直接执行它。最后,我们需要检查并绕过输入过滤函数waf(),这可以通过传递包含非法字符的字符串来完成,触发die语句并终止程序的执行。 以下是构造的payload: O:7:"Welcome":2:{s:4:"name";s:16:"welcome_to_NKCTF";s:3:"arg";s:71:"$obj = new Hell0(); $obj->func = create_function('', '`{$_GET["cmd"]}`'); echo $obj;";} 这个payload将创建一个Welcome对象,其中arg为一个包含恶意代码的字符串,这里我们创建了一个Hell0对象,将恶意代码作为匿名函数传递给其func属性,并使用echo打印出来。 最后,我们将payload作为参数传递给反序列化函数,访问该页面时将触发攻击代码的执行,从而可以尝试在目标服务器上执行任意命令,窃取敏感数据等攻击行为。 请注意,在真实环境中执行此类攻击是不道德的、非法的、有风险的,本教程仅用于学术目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值