前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ctfshow基础二刷(1)

Ctfshow基础二刷(1)

作者头像
吉师散养基地
发布2023-10-17 17:54:32
1930
发布2023-10-17 17:54:32
举报
文章被收录于专栏:我奏是太阳

前言:

前两天的信安给我整emo了,头一回打正经比赛,结果发现基础太差,代码审计烂得一踏糊涂。

寻思寻思,从头整一遍基础。又买了安恒出的新书。争取7号去吉林打省队选拔不给导儿丢脸吧呜呜

文件包含

web78:

这题一眼顶针了

web79

看下代码

代码语言:javascript
复制
if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}

有个简单替换,把php替换成了???

凭借我的🐖脑子,还是想用filter协议去读,结果被替换读不出来

正常思路:

用data协议读,这样可以使得flag.php被base64编码从而绕过,不过那个base64被叫成是什么过滤器还是什么筛选器,当初看到时候感觉挺形象的。

代码语言:javascript
复制
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=
 web80

这题不放代码了,就是在上一题的基础上把data协议ban了

坦白说,我不会,看的答案,日志包含

代码语言:javascript
复制
?file=/var/log/nginx/access.log

本来以为和上一题是一路货色,结果传了之后发现出不来。

看了看别的师傅的WP,在UA加了一句话Mua。

想起来了,当初嫌抓包麻烦,这题直接抄的答案。。。

拿Postman跑一下,赏心悦目:

直接把原UA关掉重写一个

body直接传参,先ls,看到fl0g.php

竞争环境要等晚上11:30之后才开,我是懒狗

PHP特性

web89
代码语言:javascript
复制
if(isset($_GET['num'])){
    $num = $_GET['num'];
    if(preg_match("/[0-9]/", $num)){
        die("no no no!");
    }
    if(intval($num)){
        echo $flag;
    }
}

直接传数组?num[]=

原理数组绕过,具体我不太明白,看了别的师傅的WP

 看懂了,intval() 函数会对num进行转换,如果num是个数组的话,会导致转换失败。

转换失败即转为1.if(1)执行输出flag

 web90

这题禁止传4476,但想出flag还得要4476

直接浮点数走了

 当然截断也行.

 整乐了

web91
代码语言:javascript
复制
show_source(__FILE__);
include('flag.php');
$a=$_GET['cmd'];
if(preg_match('/^php$/im', $a)){
    if(preg_match('/^php$/i', $a)){
        echo 'hacker';
    }
    else{
        echo $flag;
    }
}
else{
    echo 'nonononono';
} 

这题和前面不太一样,两个正则表达式全都要求开头为php

但要保证能过第一个不过第二个

还得读flag.php

那php咋开头捏

截断一下直接传

 web92

这题也是,第一个If不能走,走第二个,差别在于intval函数

直接16进制绕过

 web93

这题加了个判断,不让传字母,也就是把16进制ban了,那就传8进制

 web94

 这题第二个nonono绕过的要求是num第一位不能是0,相当于是把进制转换堵死了。

小数点试试

 web95

这个。。第一个if不让传4476,第二个进制字母+点,第三个堵死进制

没办法了呜呜呜。超超

web96

这题有点迷

官方给的解释是

代码语言:javascript
复制
?u=./flag.php
or
?u=php://filter/convert.base64-encode/resource=flag.php

 还是喜欢伪协议

web97

这题第一眼看见的时候还以为是md5碰撞,跑了一下发现不对,是===

那就只能数组绕过了

下一篇接着写

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 文件包含
    • web78:
      • web79
        •  web80
        • PHP特性
          • web89
            •  web90
              • web91
                •  web92
                  •  web93
                    •  web94
                      •  web95
                        • web96
                          • web97
                          相关产品与服务
                          代码审计
                          代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档