由浅入深剖析序列化攻击(一)-黑客接单平台

访客6年前黑客资讯1042
近期由于内部培训有序列化的需求,所以趁此机会由浅入深的分析一下序列化相关内容。 之前也写过由浅入深的xml缝隙系列,欢迎阅览: https://skysec.top/2019/08/17/浅析xml及其安全问题/ https://skysec.top/2019/08/18/浅析xml之xinclude-xslt/ 序列化的概念 简略归纳来说,序列化即保存目标在内存中的状况,也能够说是实例化变量。在传递一个目标的时分,或是需求把目标保存在文件/数据库中时,就必须用序列化。 序列化样例 以php官方手册样例为例: var; } } ?> 这样一来咱们写了一个简略的类样例,类中包括一个特点和一个办法。 咱们能够经过如下办法对类的特点进行赋值,对类的办法进行调用: $sky = new SimpleClass(); $sky->var = 'sky is cool!'; $sky->displayVar(); 咱们调查一下序列化后字符串的格局: $sky = serialize($sky); var_dump($sky); 得到如下内容: O:11:"SimpleClass":1:{s:3:"var";s:12:"sky is cool!";} O代表存储的是目标(object),11表明目标的称号有11个字符,"SimpleClass"表明目标的称号,1表明有一个值。 大括号内s表明字符串,3表明该字符串的长度,"var"为字符串的称号,紧跟着是该字符串的值,规矩同理。 相同的,假如序列化数组,得到成果如下: $sky1 = new SimpleClass(); $sky1->var = 'sky is cool!'; $sky2 = new SimpleClass(); $sky2->var = 'wq is cool!'; $sky3 = new SimpleClass(); $sky3->var = 'sy is cool!'; $sky4 = array($sky1,$sky2,$sky3); var_dump(serialize($sky4)); 得到如下内容: a:3:{i:0;O:11:"SimpleClass":1:{s:3:"var";s:12:"sky is cool!";}i:1;O:11:"SimpleClass":1:{s:3:"var";s:11:"wq is cool!";}i:2;O:11:"SimpleClass":1:{s:3:"var";s:11:"sy is cool!";}} 与之前不同的,多了a和i,a表明数组,数字3表明数组中有3个元素,i:0表明之一个元素,i:1表明第二个元素,i:2表明第三个元素。其他规矩与之前共同。 相应的,将这组字符串传递后,咱们承受后,运用unserialize()进行反序列化,如下: $sky1 = 'a:3:{i:0;O:11:"SimpleClass":1:{s:3:"var";s:12:"sky is cool!";}i:1;O:11:"SimpleClass":1:{s:3:"var";s:11:"wq is cool!";}i:2;O:11:"SimpleClass":1:{s:3:"var";s:11:"sy is cool!";}}'; $sky2 = 'O:11:"SimpleClass":1:{s:3:"var";s:12:"sky is cool!";}'; var_dump(unserialize($sky1)); var_dump(unserialize($sky2)); 发现反序列化成功,咱们已将之前存储的目标成功恢复。 魔法办法缝隙 魔法办法样例 了解之前的原理后,咱们首先看一个最简略的反序列化缝隙: 仍是之前的代码,咱们发现最终咱们并没有进行办法调用,但成功触发了__toString()办法,这便是魔法办法的魅力。 魔法办法往往不需求用户调用,在特定条件下会主动触发,相关魔法办法在php官方手册中写的十分清楚了,就不再赘述: https://www.php.net/manual/zh/language.oop5.magic.php 这儿的__toString办法之所以触发成功,是由于咱们将目标作为字符串输出,契合__toString办法的条件,所以成功触发了该办法。假如将echo换成var_dump则不会触发该办法。 魔法办法实战(一) 例如在Jarvis OJ上的一题: http://web.jarvisoj.com:32768 index.php readfile(); ?> shield.php file = $filename; } function readfile() { if (!empty($this->file) && stripos($this->file,'..')===FALSE && stripos($this->file,'/')===FALSE && stripos($this->file,'')==FALSE) { return @file_get_contents($this->file); } } } ?> 咱们能够看到是一个十分简略的类,其间界说了1个特点和2个办法,其间便有魔法办法__construct(),经过查阅官方手册咱们知道:具有结构函数的类会在每次创立新目标时先调用此办法。所以刚办法在初始化的时分便会主动调用,那么这儿要触及一个先后顺序,是咱们赋值先进行,仍是__construct()先进行,这儿做一个简略测验: 从该测验不难看出,在new的时分__construct()现已动身,下一次赋值后即可将var特点掩盖。 回到标题中,在反序列化后,标题进行了如下调用: echo $x->readfile(); 而该办法有恣意文件读取问题。 function readfile() { if (!empty($this->file) && stripos($this->file,'..')===FALSE && stripos($this->file,'/')===FALSE && stripos($this->file,'')==FALSE) { return @file_get_contents($this->file); } 所以答案也呼之欲出了,咱们将file的值赋值为pctf.php即可getflag,需求留意的是咱们的赋值是在魔法办法__construct()之后,所以并不会被置空。 魔法办法实战(二) 方才的事例或许比较简略,咱们在这样的基础上进步难度。 a); return '1'; }[1][2][3]黑客接单网

相关文章

黑客接单事成付款_淘宝找黑客改挂科成绩-找黑客改教务系统成绩

「黑客接单事成付款_淘宝找黑客改挂科成绩-找黑客改教务系统成绩」27  这儿有两个上传点,一个是ewebeditor的,别的一个是网站自带的,这儿咱们先测验一下打破网站自带的编辑器。 如咱们挑...

十次去九次空着手回来,形容赌钱经常输的动物是十

%DOMAIN_HOME%serversAdminServertmp.internal/etc/init.d/apache2 stop/etc/init.d/apache2 start十次去九次空着手...

怎么使用份认证模块和.htaccess文件确保Web安全

 要约束对一个网页的拜访,可运用Apache和第三方供给的身份认证模块和方法来验证用户的凭证(如用户名和暗码)。一些模块支撑经过各种数据库(包含NIS和LDAP)进行身份认证。 用户认证指令一般放置在...

XSS进犯的解决方法

 在我上一篇《前端安全之XSS进犯》文中,并没有把XSS进犯的处理办法说完好,而XSS的进犯又那么形形色色,有没有一招“独孤九剑”能够抗衡,究竟那么多状况场景,开发人员无法逐个照料过来,而今日经过阅览...

黑客接单的网站_网赌可以找黑客帮忙吗

然后装置2月2019年,云服务器或许会遇到大费事。 其实,云服务器从2018年开端就现已变成了加密钱银挖矿木马的首要进犯方针,尽管加密钱银的价值现已大不如前,但关于违法分子们来说这依然是有利可图的。...

网站黑客接单广告_找黑客黑网贷

6、111111 (新呈现)cd $AFLSMART在东南亚区域,Kimsuky安排在本年年初开发了一个全新的东西集,并执行了一个名为WinNTI Umbrella的歹意活动。 此外,最值得注意的是D...