网络编程与渗透技术笔记

CTF网络安全大赛web题目:baby lfi 2

红帝
1年前发布

题目来源于:bugku
题目难度:难
题目 描  述: What about making things a bit harder ?

题目源代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link
      rel="stylesheet"
      href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/css/bootstrap.min.css"
      integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
      crossorigin="anonymous"
    />
    <link rel="stylesheet" href="main.css" />
    <title>Say Hello to our Gentelmen | LFI Warmups</title>
</head>
<body>
<br /><br />
    <div class="container">
        <h1 id="h1">LFI Warmups - level 2</h1>
        <hr />
        <h2 id="challenge">Hello I can speak 2 languages !</h2>
        <hr />
        <u><b>Rules</b></u>
        <ul>
        <li>include some critical file <code> why not /etc/passwd</code></li>
        </ul>
        <hr />
        <u><b>Challenge</b></u>
        <p>Please Select a language of your choice : en/fr </p>
        <p><b>HINT :</b> Approved Paths, there is a <code>languages </code> directory, I wont tell you what's stocked in it ? ;)</p>
        <hr />
        <p>
                    </p>
    </div>
</body>
</html>

这个HTML页面似乎是一个Web挑战或练习的一部分,特别是关于本地文件包含(Local File Inclusion, LFI)的。在这个挑战中,用户被要求通过某种方式访问一个名为languages的目录中的文件,以选择英语(en)或法语(fr)的语言设置。

不过,这个HTML页面本身并没有包含任何执行LFI的代码。它只是一个前端界面,用于向用户展示挑战的规则和提示。

这里有一些关键点:

  1. 挑战规则:规则中提到要“include some critical file”,并给出了一个例子/etc/passwd。但在一个真正的Web应用中,直接包含像/etc/passwd这样的系统文件是不安全的,也是不可能的(除非存在严重的安全漏洞)。
  2. 挑战内容:用户被要求选择一种语言(en/fr)。这可能意味着后端代码会根据用户的选择来包含或读取languages目录下的某个文件(例如en.txtfr.txt)。
  3. HINT:提示说“Approved Paths, there is a languages directory”。这意味着用户应该尝试访问languages目录下的文件。
  4. 潜在的LFI风险:虽然这个HTML页面本身没有LFI风险,但后端代码(可能是PHP、Python等)可能会根据用户输入来动态包含文件。如果后端代码没有正确验证或转义用户输入,就可能导致LFI漏洞。

为了完成这个挑战,你可能需要:

  • 访问后端代码(如果可用)以了解它是如何处理用户输入的。
  • 尝试通过修改URL或发送POST请求来传递不同的语言参数(例如?lang=en?lang=fr)。
  • 使用开发者工具(如浏览器的Network或Console标签页)来查看和调试HTTP请求和响应。
  • 根据后端代码的行为和响应来确定如何成功访问languages目录下的文件。

ctf.jpg
下面我们开始解题:
这个题目还是有点难度的,根据bugku的网友提供的解题思路
我们直接输入“ URL/?language=./languages/../../../../etc/passwd
这样就能成功获取到flag,题目就解决了

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
取消
易航博客
SSL