ctfhub 信息收集 && Root-me(未完待续.......)

这是ChaMd5团队搞的网站,故而来刷一刷。本来是不想写的,因为大多数虽然没针对性写过,但是基本上很多题目的第一步都会有所涉及。

信息收集

目录遍历

一般思路是利用../../往上级目录查找。但是这里用的是从当前目录往下找。可以分第一级目录为1,第二级目录为1、2、3、4,然后第一级目录为2,第二级目录为1、2、3、4......的思路查找。
Snipaste_2025-08-03_10-31-55

如果嫌麻烦可以自己写脚本验证。

PHPINFO

点击可以查看的按钮。Ctrl+F -->FLAG。

Snipaste_2025-08-03_10-40-11

备份文件下载

网站源码

dirsearch --help。
Snipaste_2025-08-03_11-04-09

-i,-x可以对状态码进行筛选。

dirsearch -u "targat_url" -t 50 -e tar,tar.gz,zip,rar -i 200

Snipaste_2025-08-03_11-05-15

然后url拼接www.zip。
Snipaste_2025-08-03_11-13-37

打开flag开头的txt文件,文件里只有where is flag ??

所以url拼接flag_2878827692.txt后,这种方法可行,马上就能查看到flag。

bak文件

 dirsearch -u "target_url"   -t 50 -e bak,php,php.bak 

Snipaste_2025-08-03_11-44-14

查找这个index.php.bak的过程比较漫长。-x 503去除503状态码后,无法得到这个文件。
但是不去除503状态码,日志量又很大。

一个可靠方案是将其输出为csv文件,然后Ctrl+F -->index.php或bak,多次尝试后就能查看到index.php.bak。

 --format=FORMAT     Report format (Available: simple, plain, json, xml,
                        md, csv, html, sqlite)

所以访问index.php.bak。
Snipaste_2025-08-03_11-27-18

vim缓存

什么是vim缓存?
Snipaste_2025-08-03_11-54-33

所以勾选文件扩展名.swp,.swo,.swn。

 dirsearch -u "http://challenge-fa5d0c39345b0019.sandbox.ctfhub.com:10800/"   -t 50 -e .swp,.swo,.swn

Snipaste_2025-08-03_12-02-04

url拼接.index.php.swp后,打开这个文件快速查找(Ctrl+F) FLAG。
Snipaste_2025-08-03_12-02-58

.DS_Store

这次使用通配符或者.DS_Store。

dirsearch -u "http://challenge-8099c57dc2b94316.sandbox.ctfhub.com:10800/"   -t 50 -e*

Snipaste_2025-08-03_12-07-57

url拼接.DS_Store。下载后进入相关目录查看。
Snipaste_2025-08-03_12-24-01

windows机里面可以复制出来,然后将多余的符号删除掉。

Snipaste_2025-08-03_12-24-25

$�3�a�6�d�e�d�3�3�b�2�b�9�b�8�c�1�6�1�9�d�4�d�0�b�3�7�e�c�e�f�0�b�.�t�x�tnoteustr���
# 3a6ded33b2b9b8c1619d4d0b37ecef0b.txt

url拼接txt文件。

http://challenge-8099c57dc2b94316.sandbox.ctfhub.com:10800/3a6ded33b2b9b8c1619d4d0b37ecef0b.txt

就能够在前端得到FLAG。

剩下的跟git有关(已做过类似题目)或者感觉比较冷门,所以不想花时间写了。有兴趣的参考。CTFHUB技能树(全详细解析含进阶)-CSDN博客

Web-CLIENT

HTML - disabled buttons

Ctrl-u。input 后面接着disabled,将其删去随便提交啥即可。

Javascript - Authentication

查看到login.js后,填入对应的值。最后一句意思是只用提交password相关的值到Validation就能通过。以后的关卡同理。

image

Javascript - Source

输入框提交123456azerty,Validation下面输入123456azerty,Well done!

<html>
    <head>
	<script type="text/javascript">
	/* <![CDATA[ */
	    function login(){
		pass=prompt("Entrez le mot de passe / Enter password");
		if ( pass == "123456azerty" ) {
		    alert("Mot de passe accepté, vous pouvez valider le challenge avec ce mot de passe.\nYou can validate the challenge using this password.");  }
		else {
		    alert("Mauvais mot de passe / wrong password !");
		}
	    }
	/* ]]> */
	</script>
    </head>
   <body onload="login();"><link rel='stylesheet' property='stylesheet' id='s' type='text/css' href='/template/s.css' media='all' /><iframe id='iframe' src='https://www.root-me.org/?page=externe_header'></iframe>

    </body>
</html>

Javascript - Authentication 2

看split的作用,:将"GOD:HIDDEN"分割成两部分,一个是username(GOD),一个是password(HIDDEN)。提交两个后,临时看到alert后的字符串。拿password对应的值HIDDEN提交。

function connexion(){
    var username = prompt("Username :", "");
    var password = prompt("Password :", "");
    var TheLists = ["GOD:HIDDEN"];
    for (i = 0; i < TheLists.length; i++)
    {
        if (TheLists[i].indexOf(username) == 0)
        {
            var TheSplit = TheLists[i].split(":");
            var TheUsername = TheSplit[0];
            var ThePassword = TheSplit[1];
            if (username == TheUsername && password == ThePassword)
            {
                alert("Vous pouvez utiliser ce mot de passe pour valider ce challenge (en majuscules) / You can use this password to validate this challenge (uppercase)");
            }
        }
        else
        {
            alert("Nope, you're a naughty hacker.")
        }
    }
}


Javascript - Obfuscation 1

% + 十六进制,想到url解码。

<?php
echo urldecode('%63%70%61%73%62%69%65%6e%64%75%72%70%61%73%73%77%6f%72%64');
?>

得cpasbiendurpassword。
源码:

<html>
    <head>
        <title>Obfuscation JS</title>

          <script type="text/javascript">
              /* <![CDATA[ */

              pass = '%63%70%61%73%62%69%65%6e%64%75%72%70%61%73%73%77%6f%72%64';
              h = window.prompt('Entrez le mot de passe / Enter password');
              if(h == unescape(pass)) {
                  alert('Password accepté, vous pouvez valider le challenge avec ce mot de passe.\nYou an validate the challenge using this pass.');
              } else {
                  alert('Mauvais mot de passe / wrong password');
              }

              /* ]]> */
          </script>
    </head>
   <body><link rel='stylesheet' property='stylesheet' id='s' type='text/css' href='/template/s.css' media='all' /><iframe id='iframe' src='https://www.root-me.org/?page=externe_header'></iframe>
    </body>
</html>


Javascript - Obfuscation 2

源码
javascript
<html>

<head>
	<title>Obfuscation JS</title>
<!-- 
Obfuscation 
.Niveau : Facile 
.By Hel0ck
.The mission : 
	Retrouver le password contenu dans la var pass.
	You need my help ? IRC : irc.root-me.org #root-me
-->
<script type="text/javascript">
	var pass = unescape("unescape%28%22String.fromCharCode%2528104%252C68%252C117%252C102%252C106%252C100%252C107%252C105%252C49%252C53%252C54%2529%22%29");
</script>
</head>

</html>



因为vpn问题被禁ip了,后续解决了再刷。
posted @ 2025-06-24 19:26  河东式贺喜  阅读(36)  评论(0)    收藏  举报