欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

強悍的PHP腳本注入技巧(圖)

 更新時間:2007年01月16日 00:00:00   作者:  

起因:
 聽承諾說CASI出2.0了,而且承諾也給了一個有漏洞的地址,正好沒事就測試了一下,最近非常郁悶,學不下去,正好今天承諾勾起了我學習php的美好時光,看看自己還能不能搞這樣的站吧.

過程:
承諾給的地址是http://www.gametea.com//showboard.php?id=282
很標準的php注入形式,我們也按照標準的php注入方法來進行注入,首先再后面加一個',

http://www.gametea.com/showboard.php?id=282' 

如圖1

他告訴我們2個方面的信息,第一是magic_quotes_gpc = off
第二個就是web路徑/home/newgt/showboard.php

再提交語句以前我們還是先來說明一下php注入的原理和一個小例子,php注入就是利用變量過濾不足造成的

看看下面兩句SQL語句:

①SELECT * FROM article WHERE articleid='$id'
②SELECT * FROM article WHERE articleid=$id

  兩種寫法在各種程序中都很普遍,但安全性是不同的,第一句由于把變量$id放在一對單引號中,這樣使得我們所提交的變量都變成了字符串,即使包含了正確的SQL語句,也不會正常執(zhí)行,而第二句不同,由于沒有把變量放進單引號中,那我們所提交的一切,只要包含空格,那空格后的變量都會作為SQL語句執(zhí)行,我們針對兩個句子分別提交兩個成功注入的畸形語句,來看看不同之處。

① 指定變量$id為:
1' and 1=2 union select * from user where userid=1/*
此時整個SQL語句變?yōu)椋?BR>SELECT * FROM article WHERE articleid='1' and 1=2 union select * from user where userid=1/*'

②指定變量$id為:
1 and 1=2 union select * from user where userid=1
此時整個SQL語句變?yōu)椋?BR>SELECT * FROM article WHERE articleid=1 and 1=2 union select * from user where userid=1

  看出來了嗎?由于第一句有單引號,我們必須先閉合前面的單引號,這樣才能使后面的語句作為SQL執(zhí)行,并要注釋掉后面原SQL語句中的后面的單引號,這樣才可以成功注入,如果php.ini中magic_quotes_gpc設置為on或者變量前使用了addslashes()函數(shù),我們的攻擊就會化為烏有,但第二句沒有用引號包含變量,那我們也不用考慮去閉合、注釋,直接提交就OK了。


好了現(xiàn)在我們就要按照angel的方法來提交語句了http://www.gametea.com/showboard.php?id=282%20and%2

01=2%20union%20select%2050,9,8,7,6,5,4,3,2,1

如圖2

再這里我們可以得知7和9這兩個地方是文本的,也就是說可以顯示我們想要的文件的內(nèi)容,下面我們就是要讀取服務器上的文件了從web路徑上看這臺機器應該是UNIX的,那么我們的目標就是拿到/etc/passwd這個文件了

我們知道,在SQL語句中,可以使用各種MySQL內(nèi)置的函數(shù),經(jīng)常使用的就是DATABASE()、USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()這些函數(shù)來獲取一些系統(tǒng)的信息,還有一個應用得比較多的函數(shù),就是load_file(),該函數(shù)的作用是讀入文件,并將文件內(nèi)容作為一個字符串返回。
  看到這里,應該可以想到我們可以做什么了,就是讀取一些機密文件,但是也是有條件限制的:

  • 欲讀取文件必須在服務器上
  • 必須指定文件完整的路徑
  • 必須有權限讀取并且文件必須完全可讀
  • 欲讀取文件必須小于 max_allowed_packet

  如果該文件不存在,或因為上面的任一原因而不能被讀出,函數(shù)返回空。比較難滿足的就是權限,在windows下,如果NTFS設置得當,是不能讀取相關的文件的,當遇到只有administrators才能訪問的文件,users就別想load_file出來。

  在實際的注入中,我們有兩個難點需要解決:

  • 絕對物理路徑
  • 構造有效的畸形語句

  在很多PHP程序中,當提交一個錯誤的Query,如果display_errors = on,程序就會暴露WEB目錄的絕對路徑,只要知道路徑,那么對于一個可以注入的PHP程序來說,整個服務器的安全將受到嚴重的威脅。構造語句已經(jīng)是小意思了。

我們這里用的load_file(char())這個函數(shù)我們需要把/etc/passwd轉(zhuǎn)化成16進制的我們請出asc2chr這個工具來幫我們完成轉(zhuǎn)化工作

如圖三

相關文章

最新評論