當前位置:首頁 » 網站資訊 » php網站怎麼攻擊
擴展閱讀
蘋果外來的軟體怎麼信任 2025-01-11 05:07:35
平板電腦如何提現 2025-01-11 05:07:30
移動網路用不了ssr 2025-01-11 04:57:51

php網站怎麼攻擊

發布時間: 2022-07-15 20:59:00

⑴ php如何黑別人網站

呃,心存善念。
黑別人網站,對方只是某些服務不到位,不能一桿子打死一堆人啊。
網上很多攻擊方式,如:sql注入攻擊、掛馬等等。
協商解決問題就好,如果被你試出了對方網站有bug,給對方提醒下。

最後,黑人家網站是不鼓勵滴。

⑵ html或php代碼怎麼寫攻擊的,就是,一個正常網站,背後一直在攻擊一個IP,求代碼(虛擬空間的)

很容易,curl可以實現,命令行ping也可以實現,html是xss攻擊,

⑶ 如何對php中常見漏洞進行攻擊與防護翻譯

[全局變數]
PHP中的變數不需要事先聲明,它們會在第一次使用時自動創建,它們的類型也不需要指定,它們會根據上下文環境自動確定。從程序員的角度來看,這無疑是一種極其方便的處理方法。很顯然,這也是快速開發語言的一個很有用的特點。一旦一個變數被創建了,就可以在程序中的任何地方使用。這個特點導致的結果就是程序員很少初始化變數,畢竟,當它們第一次創建時,他們是空的。

很顯然,基於PHP的應用程序的主函數一般都是接受用戶的輸入(主要是表單變數,上載文件和Cookie等),然後對輸入數據進行處理,然後把結果返回到客戶端瀏覽器。為了使PHP代碼訪問用戶的輸入盡可能容易,實際上PHP是把這些輸入數據看作全局變數來處理的。

例如:

<FORM METHOD="GET" ACTION="test.php">
<INPUT TYPE="TEXT" NAME="hello">
<INPUT TYPE="SUBMIT">
</FORM>

很顯然,這會顯示一個文本框和提交按鈕。當用戶點擊提交按鈕時,「test.php」會處理用戶的輸入,當「test.php」運行時,「$hello」會包含用戶在文本框輸入的數據。從這里我們應該看出,攻擊者可以按照自己的意願創建任意的全局變數。如果攻擊者不是通過表單輸入來調用「test.php」,而是直接在瀏覽器地址欄輸入http://server/test.php?hello=hi&setup=no,那麼,不止是「$hello」被創建,「$setup」也被創建了。

譯者註:這兩種方法也就是我們通常說的「POST」和「GET」方法。
下面的用戶認證代碼暴露了PHP的全局變數所導致的安全問題:

<?php
if ($pass == "hello")
$auth = 1;
...
if ($auth == 1)
echo "some important information";
?>

上面的代碼首先檢查用戶的密碼是否為「hello」,如果匹配的話,設置「$auth」為「1」,即通過認證。之後如果「$suth」為「1」的話,就會顯示一些重要信息。

表面看起來是正確的,而且我們中有相當一部分人是這樣做的,但是這段代碼犯了想當然的錯誤,它假定「$auth」在沒有設置值的時候是空的,卻沒有想到攻擊者可以創建任何全局變數並賦值,通過類似「http://server/test.php?auth=1」的方法,我們完全可以欺騙這段代碼,使它相信我們是已經認證過的。

因此,為了提高PHP程序的安全性,我們不能相信任何沒有明確定義的變數。如果程序中的變數很多的話,這可是一項非常艱巨的任務。

一種常用的保護方式就是檢查數組HTTP_GET[]或POST_VARS[]中的變數,這依賴於我們的提交方式(GET或POST)。當PHP配置為打開「track_vars」選項的話(這是預設值),用戶提交的變數就可以在全局變數和上面提到的數組中獲得。

但是值得說明的是,PHP有四個不同的數組變數用來處理用戶的輸入。HTTP_GET_VARS數組用來處理GET方式提交的變數,HTTP_POST_VARS數組用於處理POST方式提交的變數,HTTP_COOKIE_VARS數組用於處理作為cookie頭提交的變數,而對於HTTP_POST_FILES數組(比較新的PHP才提供),則完全是用戶用來提交變數的一種可選方式。用戶的一個請求可以很容易的把變數存在這四個數組中,因此一個安全的PHP程序應該檢查這四個數組。

[遠程文件]
PHP是一種具有豐富特性的語言,提供了大量的函數,使編程者實現某個功能很容易。但是從安全的角度來看,功能越多,要保證它的安全性就越難,遠程文件就是說明這個問題的一個很好的例子:

<?php
if (!($fd = fopen("$filename", "r"))
echo("Could not open file: $filename<BR>\n");
?>

上面的腳本試圖打開文件「$filename」,如果失敗就顯示錯誤信息。很明顯,如果我們能夠指定「$filename」的話,就能利用這個腳本瀏覽系統中的任何文件。但是,這個腳本還存在一個不太明顯的特性,那就是它可以從任何其它WEB或FTP站點讀取文件。實際上,PHP的大多數文件處理函數對遠程文件的處理是透明的。

例如:
如果指定「$filename」為「http://target/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir」
則上面的代碼實際上是利用主機target上的unicode漏洞,執行了dir命令。

這使得支持遠程文件的include(),require(),include_once()和require_once()在上下文環境中變得更有趣。這些函數主要功能是包含指定文件的內容,並且把它們按照PHP代碼解釋,主要是用在庫文件上。

例如:
<?php
include($libdir . "/languages.php");
?>

上例中「$libdir」一般是一個在執行代碼前已經設置好的路徑,如果攻擊者能夠使得「$libdir」沒有被設置的話,那麼他就可以改變這個路徑。但是攻擊者並不能做任何事情,因為他們只能在他們指定的路徑中訪問文件languages.php(perl中的「Poison null byte」攻擊對PHP沒有作用)。但是由於有了對遠程文件的支持,攻擊者就可以做任何事情。例如,攻擊者可以在某台伺服器上放一個文件languages.php,包含如下內容:

<?php
passthru("/bin/ls /etc");
?>

⑷ 如何使用php代碼攻擊網站

學校居然還有這樣的作業,就是你寫好的php文件,在.php文件名後面添加一個任意的後綴名,然後上傳上去,然後輸入剛剛上傳的文件名,就能執行php代碼了

⑸ 如何入侵php網站

很多方法啊,比如:
直接上0day,慢慢滲透,直接去問站長要伺服器鏈接信息~

⑹ 解決php網站開發常見的幾種攻擊方法

1.硬體防火牆
2.軟體防火牆
3.系統架構
4.數據驅動層
5.資料庫

⑺ 求高手回答 PHP網站怎麼侵入怎麼找後台

第一講:判斷有沒注射點
這個很簡單,我們最常用的就是看到頁面的格式為:index.php?id=2這樣的地址,我們知道PHP經常是和MYSQL資料庫一起用的,在MYSQL資料庫中一定存在一個表,比如setting_table,我們提交上面地址的時候,程序一般上這樣處理的:
1、用GET或者POST取我們提交的id=1把這個值傳給一個變數id.
2、查詢:select * from setting_table where id =$id
上面的語句就是查詢的語句,我們代入$id=1就是:
select * from setting_table where id=1
這話是沒什麼問題的,會取出id為1的信息進行顯示給我們,所以我們就能看到正常的頁面。 --------------
看我們是怎麼判斷的:
1、我們提交id=1 and 1=1
看看這個是什麼效果,這里的$id就是1 and 1=1,我們看看是什麼樣子的:
select * from setting_table where id =1 and 1=1
這個語句加了一個and 語句,後面是1=1是肯定成立的,所以就不影響上面語句的成立,它還會取出id=1的信息進行顯示給我們,所以我們看到的還是原來的正常頁面。
2、我們提交 id =1 and 1=2
看看這個是什麼效果,這里的$id就是 1 and 1=2,我們看看在SQL中怎麼執行
select * from setting_table where id =1 and 1=2
分析下這個語句,前面還是一樣的,只是最後加了個and 1=2,這個自然不成立啦!又因為是and連接的,so自然找不到符合條件的啦!只能回顯給我們一個錯誤或者空白的頁面拉~!!
上面就是一般我們採用and 1=1 & and 1=2來判斷的基本原來,但是這里還要注意幾點,如下:
1、程序處理的時候必須是where id =$id 而不是where id=$id,這個單引號是很不一樣的,怎麼不一樣,以後再說。。
2、程序對我們提交的參數沒有處理或者處理的不好,導致我們可以直接提交,如果程序多我們提交的參數進行處理,又會不一樣,也是後話!
第二講:快速判斷MYSQL版本
前提:你得到一個注射點,比如:news.php?id=1
這個點是你找到的,提交and 1=1 和and 1=2返回的是不同的。
我們就可以這樣來猜MYSQL的版本了。。步驟如下:
1、提交/news.php?id=1/*!40000%20s*/如果返回正常就說明MYSQL版本在4000版本以下,你可以依次調節最高位的數字,比如我改為39000提交,如果再正常,就提交38000....直到返回錯誤提示,最後固定的那個就是MYSQL的版本了。。
下面是我提交測試時的過程(只寫MYSQL版本)
40000(+)--39000(+)--38000(+)--370000(-)--37900(+)--37800(+)--37700(-)--結束!!
得到MYSQL版本是37700。
2、一般我們不去猜具體的版本,我們只關系MYSQL是不是在4.0以上,以為只有4.0以上的MYSQL才支持UNION查詢,以下是不支持的,所以我們經常只用/*!40000%20s*/看看是不是4.0以上的版本。
PS:/*!40000%20s*/這里的/*!......*/是mysql里一種特殊的注釋方式,也沒什麼好奇怪的,記得怎麼用就可以了~~
第三講:PHP注射怎樣得到表名。。
正准備寫,看到有人問到了,就總結下,算第三講吧! Quote:
Originally posted by spirit at 2006-5-16 05:57 PM:
看了好多 文章了 ....眼睛都花了
裡面涉及到的東西也比較全面
不過 一直不知道怎麼搞出 表
總不能直接搞 去 欄位吧..??
一個一個來啊
資料庫 表 欄位 值...
這個邏輯我認為是對的 ....
對了這里還是 感 ...
表確實不好搞,不像ASP可能直接暴出來,PHP到現在還是暴不出來的,我們一般有兩個辦法:
1、靠經驗猜:比如大家常用的admin,user,news,vote,wenzhang,guanliyuan等等,沒辦法的事。。
2、暴代碼查看:用Load_file暴出文件代碼,就可以看到數據插值到什麼表,什麼欄位了,這樣就很明白了,但是load_file也很有技巧的。。以後再講。。
--------------------------------------------
具體說一下吧:
1、這個沒什麼好說的,直接猜就可以了,比如你看到一個注射點,類似news.php?id=1這樣的點,你用union查詢得到具體的欄位,比如這樣:news.php?id=1 and 1=2 union select 1,2,3,4 是成立的,
你就可以這樣猜:news.php?id=1 and 1=2 union select 1,2,3,4 from admin/*如果存在admin表,就會返回真,否則就不存在表admin,其他和這個一樣的。
2、這個就有點終極了,比如你得到他的絕對路徑,可以load_file(file path)出文件的代碼,比如你暴得管理員登陸的頁面,就能看到他其中的SQL語句,可以看到他是從哪個表了取的值了,是吧》》
原理就是這樣的,多多思考,有什麼心得,希望能分享。。。。
第四講:有無引號的差別
很多朋友都對那個引號的作用不很了解,認為加引號和不加是一樣的效果..
引號(包括單、雙)對我們的注射是有著很大的影響的,這里主要還是和magic的狀態有關,當這個magic為off的時候倒沒什麼影響,當這個magic為on的時候就大不一樣了。。
小知識:magic為on時,為自動為我們提交的單引號(『),雙引號(「),(\),空格( )等加上轉意 符號\,使得上的都變成(\』),(\」),(\\)等,這就給我們注射太來麻煩,例子如下。
一、第一個例子(沒引號)
如果語句如下:
QUOTE:
select * from news where newsid=$id
1、magic為off時情況
為off時不會處理我們提交的數據信息,假設一個SQL語句是這樣的;
我們在URL中可以提交$id的值,就像我們前面說的給$id為:
$id=1 union select 1,2,3,4 from admin
就基本上可以取得我們想要的數據了。
2、magic為on時情況
這時沒什麼區別,因為我們沒有提交敏感的字元
二、第二個例子看它處理的SQL語句:
QUOTE:
select * from news where newsid=$id
這時要想成功利用$id這個沒過濾的參數,我們可以提交如下:
$id=1』 union select 1,2,3,4 from admin/*
開始要有一個()來閉合前面的,後面再加一個/*注釋掉後面的
1、magic為off時情況
如果magic為off,我們可以直接提交,成功利用
2、magic為on時情況
如果magic為on,那麼我們提交的語句變成:
$id=1\』 union select 1,2,3,4 from admin/*
看,就沒辦法利用了(盡管有漏洞)

⑻ PHP代碼網站如何防範SQL注入漏洞攻擊建議分享

做為網路開發者的你對這種黑客行為恨之入骨,當然也有必要了解一下SQL注入這種功能方式的原理並學會如何通過代碼來保護自己的網站資料庫。今天就通過PHP和MySQL資料庫為例,分享一下我所了解的SQL注入攻擊和一些簡單的防範措施和一些如何避免SQL注入攻擊的建議。
簡單來說,SQL注入是使用代碼漏洞來獲取網站或應用程序後台的SQL資料庫中的數據,進而可以取得資料庫的訪問許可權。比如,黑客可以利用網站代碼的漏洞,使用SQL注入的方式取得一個公司網站後台資料庫里所有的數據信息。拿到資料庫管理員登錄用戶名和密碼後黑客可以自由修改資料庫中的內容甚至刪除該資料庫。SQL注入也可以用來檢驗一個網站或應用的安全性。SQL注入的方式有很多種,但本文將只討論最基本的原理,我們將以PHP和MySQL為例。本文的例子很簡單,如果你使用其它語言理解起來也不會有難度,重點關注SQL命令即可。
一個簡單的SQL注入攻擊案例
假如我們有一個公司網站,在網站的後台資料庫中保存了所有的客戶數據等重要信息。假如網站登錄頁面的代碼中有這樣一條命令來讀取用戶信息。
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.$_GET['username'].
"
'
AND
`password`=
'
"
.$_GET['password'].
"
'
";?>現在有一個黑客想攻擊你的資料庫,他會嘗試在此登錄頁面的用戶名的輸入框中輸入以下代碼:
'
;
SHOW
TABLES;
點擊登陸鍵,這個頁面就會顯示出資料庫中的所有表。如果他現在使用下面這行命令:
';
DROP
TABLE
[table
name];
這樣他就把一張表刪除了!
防範SQL注入
-
使用mysql_real_escape_string()函數
在資料庫操作的代碼中用這個函數mysql_real_escape_string()可以將代碼中特殊字元過濾掉,如引號等。如下例:
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.mysql_real_escape_string(
$_GET['username']
).
"
'
AND
`password`=
'
"
.mysql_real_escape_string(
$_GET['password']
).
"
'
";?>防範SQL注入
-
使用mysql_query()函數
mysql_query()的特別是它將只執行SQL代碼的第一條,而後面的並不會執行。回想在最前面的例子中,黑客通過代碼來例後台執行了多條SQL命令,顯示出了所有表的名稱。所以mysql_query()函數可以取到進一步保護的作用。我們進一步演化剛才的代碼就得到了下面的代碼:
//connection
$database
=
mysql_connect("localhost",
"username","password");
//db
selection
$q
=
mysql_query("SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.mysql_real_escape_string(
$_GET['username']
).
"
'
AND
`password`=
'
"
.mysql_real_escape_string(
$_GET['password']
).
"
'
",
$database);?>除此之外,我們還可以在PHP代碼中判斷輸入值的長度,或者專門用一個函數來檢查輸入的值。所以在接受用戶輸入值的地方一定要做好輸入內容的過濾和檢查。當然學習和了解最新的SQL注入方式也非常重要,這樣才能做到有目的的防範。如果使用的是平台式的網站系統如Wordpress,要注意及時打上官方的補丁或升級到新的版本。

⑼ 如何攻擊php網站,欺騙後台程序!高手指點!

都是做php的,你卻來攻擊php程序!

⑽ 怎樣攻擊網站啊

網站是架設在伺服器上的。
也就是說,你只要找到那台電腦的漏洞,入侵他就可以了。
實在無恥點就發動肉雞DDOS就行了,如果流量大,馬上就無法訪問了!

開始>運行>cmd>ping xxx.xxx.xxx(那個網站的地址)>得到IP後用工具掃描他漏洞就可以了!不過一般找不到可用的漏洞,那你可以去嘗試找網站的漏洞!