最新消息:图 床

phpjiami 數種解密方法

COOL IAM 362浏览 0评论

作者:phith0n@長亭科技

Pwnhub 公開賽出了個簡單的 PHP 代碼審計題目,考點有兩個:

  1. http://www.phpjiami.com/ 加密過的源碼還原
  2. 上傳取後綴方式不同導致的文件上傳漏洞

如果說僅為了做出題目拿到 flag,這個題目太簡單,後台也有數十名選手提交了答案和 writeup。但深入研究一下這兩個知識點,還是很有意思的。

首先通過簡單的目錄掃描,找到備份文件 index.php.bak。下載后發現文件是經過了混淆加密處理的,大部分同學是直接網上找了付費解密的網站給解的,也有少數幾個人說明了解密方法,我挑幾種方法說一下。

0x01 phpjiami 代碼分析破解法

這種方法我最佩服了,作者甚至給出了解密腳本,文章如下: http://sec2hack.com/web/phpjiami-decode.html

我自己在出題目之前也進行過分析,但後面並沒有耐心寫一個完整的腳本出來,所以我十分佩服這個作者。

我們分析 phpjiami 后的文件,可以看到他有如下特點:

  1. 函數名、變量名全部變成“亂碼”
  2. 改動任意一個地方,將導致文件不能運行

之所以函數名、變量名可以變成“亂碼”,是因為PHP的函數名、變量名是支持除了特殊符號以外大部分字符的,比如漢字等。利用這一特點,phpjiami 就將所有正常的英文變量給轉換了一下形式,其實沒有什麼特別的奧秘。

那麼,為了方便分析,我們可以想辦法再將其轉換回英文和數字。比如,作者使用的是 http://zhaoyuanma.com/phpcodefix.html 對混淆過的代碼進行美化;而我是使用 https://github.com/nikic/PHP-Parser 對整個代碼進行了結構化的分析,並將所有變量和函數名進行了美化。

方法一的好處是我不需要寫任何代碼,就可以大致進行美化,但顯然,美化后的代碼是有錯誤的,原文中也提到了這一點;方法二,雖然需要自己寫代碼,但美化后的代碼沒有語法錯誤,看起來更加直觀,並且我還能進一步的進行美化,比如將字符串中的亂碼轉換成/x的形式。

我美化后的代碼如下:

转载请注明:IAMCOOL » phpjiami 數種解密方法

0 0 vote
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x