文章目录
- 前言
- [一、baby lfi(bugku-CTF)](#一、baby lfi(bugku-CTF))
- [二、baby lfi 2(bugku-CTF)](#二、baby lfi 2(bugku-CTF))
- [三、lfi(bugku CTF)](#三、lfi(bugku CTF))
- 总结
前言
此文章是小白为了学习ctf所写的,此文章将会采用刷题的形式来记录ctf的解题思路,禁止用此技术进行非法攻击。
一、baby lfi(bugku-CTF)
1、简介
此关卡是在bugkuCTF平台写的https://ctf.bugku.com/
2、解题思路
1、解题前置知识点
首先看到此题目的名字lfi就知道是考察web安全中的文件包含漏洞的知识点了。lfi是本地文件包含漏洞检测。
漏洞简介:
在web应用程序中,程序员为了减少代码的冗余,为了方便代码实现的逻辑性,常常会将文件进行包含。比如开发人员要频繁使用某一个函数,但是又不想在每一个文件都再重新编写一遍,这时就可以将重复使用的函数写在一个文件中,当某一个文件需要使用这些函数时直接包含写好的函数的文件就行了。最常见的php文件包含的是include函数。如果开发人员没有过滤文件包含的参数,攻击者可以包含任意文件达到读取敏感信息等等
2、漏洞利用
打开关卡页面发现有提示
翻译后如下
从提示可以看到我们可以包含/etc/passwd这个文件,这个文件可能有我们想要的flag。那么文件包含漏洞产生的重要条件之一是要有可控参数,刚好提示说使用language参数。那么我们猜想传参参数可能是language了。
最后思路知道了我们就可以尝试了。
我们在url地址加上参数language然后传参/etc/passwd就行了。
具体如下
bash
http://82.157.146.43:10873/?language=/etc/passwd
最后得到flag
bash
shellmates{10CA1_F11e_1Nc1US10n_m4y_r3ve4l_in7Er3st1nG_iNf0Rm4t1on}
二、baby lfi 2(bugku-CTF)
有了第一题的思路我们顺势做一个2.0版本的本地文件包含漏洞。
1.解题思路
1、漏洞利用
打开关卡页面如图所示
关卡提示到有一个languages的目录,但不会告诉我们这目录有什么。
那么此关卡肯定与languages目录有关了。我们的目的就是包含到/etc/passwd文件。这里我们尝试直接包含发现并不行。页面显示路径非法。
或者尝试这样
也是显示路径非法。我们想是不是得先访问languages目录再访问/etc/passwd目录呢,不然languages目录给的提示就用不上了是吧?
所以我们再尝试包含==./languages/etc/passwd==
发现页面不是显示路径非法,那么有戏。这个时候因为我们不知道languages目录距离根目录多远,所以就一个个试就行,本质是先访问languages目录然后再返回根目录去访问/etc/passwd文件,最后发现得返回五个上级才回到根目录,最后我们成功得到flag
bash
shellmates{yOU_M4De_yOUr_waY_7hRough_iT}
三、lfi(bugku CTF)
这一关是第三关,我们一起看看吧。、
1、解题思路
1、漏洞利用
进入页面发现提示是给了我们一部分页面源代码,str_replace('../', '',$_GET['language']) ;
有php基础的就知道这个是一个过滤关键字的函数,没有见过的也不要慌张,我们搜一搜就知道了。
本题过滤就是将用户传参的language参数的关键字.../替换为空了
因为这里只过滤了一次,我们可以双写绕过。比如...//过滤后变为.../
构造路径为...//...//...//...//etc/passwd
最后得出flag
总结
此文章是小白为了学习ctf所写的,感谢大家支持。