banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận thâm nhập [Thảo luận] Lỗi ở đâu và đây là lỗi gì !?  XML
  [Question]   [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 22/11/2007 10:30:42 (+0700) | #1 | 99244
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
Hình như QVT "có duyên" với PBLang Forum (1).
Cách đây vài ngày, có dịp ngó sơ qua nó lần nữa thì thấy nó lại có bug.
Bug lần này nằm tại file sendpm.php (có thể các file khác vẫn có bug, nhưng QVT ko có thời gian để mò tiếp). Đây là source code của nó:

Code:
<?php
/***************************************************************************
 *                            sendpm.php  - PBLang
 *                            -------------------
 *
 *                  see docs/copyright.txt for more details
 *
 *			Last modified 1 March 2005
 ***************************************************************************/

require('header.php');
include($dbpath."/settings/styles/styles.php");
include_once("functions.php");

$liusername=$_COOKIE[$cookieid];
$permit=CheckLoginStatus($liusername,"1","0");
if ($permit=="1") {
	$language=SetLanguage($liusername);
	include($temppath."/pb/language/lang_".$language.".php");
	$reg=$_GET['id'];
	writeheader($newestm,0,0,0,$liusername,"1",$SendPM);
	if ($reg!="2") {
		if (isset($_GET['num']) && strlen($_GET['num'])< 8){
			$num=$_GET['num'];
		}else{
			$num='';
		}
		if (isset($_GET['to']) && strlen($_GET['to'])< 26){
			$to=$_GET['to'];
		}else{
			$to='';
		}
		$subj=strip_tags(stripslashes($_GET['subj']));
		$msg=strip_tags(stripslashes($_GET['msg']));
		$orgp=strip_tags(stripslashes($_GET['orig']));
		$orgp=str_replace('/','',$orgp);		//make sure no other URL is being used
		$orgp=str_replace(chr(92),'',$orgp);		//make sure no other URL is being used
		$pmstat="3";
		$fp = fopen($dbpath."/pm/".$liusername."_".$num."_pmstat", "w");
		fputs($fp, $pmstat);
		fclose($fp);
//          sendpm($to,$subj,$msg,$orgp,$liusername);
		if (trim($orgp)!=''){
			$filename=$dbpath.'/pm/'.$orgp;
			if (file_exists($filename)){
				$fd=@fopen($filename,"r");
				$rmsg=@fread($fd,filesize($filename));
				@fclose($fd);
			}else{
				$rmsg='';
			}
		}else{
			$rmsg='';
		}
		$form_tag="\n";
		$form_tag.='<form action="sendpm.php?id=2" method="POST" target="'.$frameset.'">'."\n";
		WriteTableTop($form_tag);
		echo "<tr><td bgcolor=\"$headercolor\" height=\"15\" background=\"$headergif\" colspan=\"2\">";
		echo "<a href=\"index.php\">$sitetitle</a> :: <a href=\"sendpm.php\">$PrivateMessaging</a> :: $VSendMessage</td></tr>";
		echo "<tr><td class=\"subheader\" colspan=\"2\"><a href=\"pm.php\">$VInbox</a>";
		echo " :: <a href=\"sendpm.php\">$VSendPM</a></td></tr>";
		if ($rmsg){
			echo "<tr><td bgcolor=\"$fmenucolor\" height=\"15\" colspan=\"2\">";
			echo "$VOriginalPM $VFrom <b>$to</b>:<br><br>$rmsg<br></td></tr>";
			echo "<tr>";
		}
		echo "<td height=\"5\" align=\"right\" bgcolor=\"$fmenucolor\" width=\"18%\"><p>$VTo:</p></td>";
		echo "<td height=\"5\" bgcolor=\"$menucolor\" width=\"82%\"><input type=\"text\" name=\"to\" value=\"$to\"></td></tr>";
		echo "<tr bgcolor=\"$subheadercolor\" valign=\"top\"><td height=\"5\" align=\"right\" bgcolor=\"$fmenucolor\" width=\"18%\"><p>$VSubject:</p></td>";
		echo "<td height=\"5\" bgcolor=\"$menucolor\" width=\"82%\"><input type=\"text\" name=\"subj\" value=\"$subj\"></td></tr>";
		echo "<tr bgcolor=\"$subheadercolor\" valign=\"top\"><td height=\"15\" align=\"right\" bgcolor=\"$fmenucolor\" width=\"18%\">$VMessage:</td>";
		echo "<td height=\"15\" bgcolor=\"$menucolor\" width=\"82%\"><textarea name=\"msg\" cols=\"60\" rows=\"10\">$msg</textarea></td></tr>";
		echo "<tr bgcolor=\"$subheadercolor\" valign=\"top\"><td height=\"15\" align=\"right\" bgcolor=\"$fmenucolor\" width=\"18%\"> </td>";
		echo "<td height=\"15\" bgcolor=\"$menucolor\" width=\"82%\"><input type=\"submit\" name=\"Submit\" value=\"$VSubmit\">";
		sbot(1);
	} else {
		$to=strip_tags($_POST['to']);
		$msg=strip_tags(stripslashes($_POST['msg']));
		$subj=strip_tags(stripslashes($_POST['subj']));
		$pmstat="1";
		if (trim($to)=="") {
			ErrorMessage($AuthorRequired,$liusername);
		} else {
			$filet=$dbpath."/pm/".$to;
			if (file_exists($filet)) {
				$filename = "$dbpath/pm/$to"."_tot";
				if (!file_exists($filename))
						{$filename=str_replace("_"," ",$filename);}
				$fd = fopen ($filename, "r");
				$num = fread ($fd, filesize ($filename));
				fclose ($fd);
				$num++;
				$fp = fopen("$dbpath/pm/$to"."_tot", "w");
				fputs($fp, $num);
				fclose($fp);
				$filename = "$dbpath/pm/$to";
				$fd = fopen ($filename, "r");
				$num = fread ($fd, filesize ($filename));
				fclose ($fd);
				$num++;
				$fp = fopen("$dbpath/pm/$to", "w");
				fputs($fp, $num);
				fclose($fp);

				setlocale(LC_TIME,$LangLocale);
				$date = time()+($timezone*3600);
				$fp = fopen("$dbpath/pm/$to"."_$num"."_a", "w");
				fputs($fp, $liusername);
				fclose($fp);
				$fp = fopen("$dbpath/pm/$to"."_$num"."_d", "w");
				fputs($fp, $date);
				fclose($fp);
				$fp = fopen("$dbpath/pm/$to"."_$num"."_c", "w");
				if ($msg==''){
					$msg='-- '.$VEmpty.' --';
				}
				fputs($fp, $msg);
				fclose($fp);
				$fp = fopen("$dbpath/pm/$to"."_$num"."_s", "w");
				fputs($fp, $subj);
				fclose($fp);
				$fp = fopen("$dbpath/pm/$to"."_$num"."_pmstat", "w");
				fputs($fp, $pmstat);
				fclose($fp);
				msg($VSent,"$MessageSent!");
//				echo "<meta http-equiv=\"Refresh\" content=\"0; URL=pm.php\">";
			} else {
					ErrorMessage($InvalidUsername,$liusername);
			}
		}
	}
	writefooter($newestm);
}else{
     include("login.php");
}
ob_end_flush();
?>


Xin mời mọi người cùng thảo luận xem: Lỗi ở đâu và đây là lỗi gì. Cuối cùng là nguyên nhân chính phát sinh ra lỗi cùng với cách khắc phục nó.



(1): PBLang Forum là 1 sản phẩm của Dr. Martinus (Download tại: http://sourceforge.net/projects/pblang/).
Đây là 1 source code diễn đàn khá tiện dụng vì không cần đến DB mà chỉ sử dụng file để lưu giữ thông tin. Các hoạt động của PBLang đều dựa trên việc thao tác với file, chính vì điều này đã làm cho nó trở nên dễ phát sinh lỗi.
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 22/11/2007 11:04:49 (+0700) | #2 | 99248
[Avatar]
ThíchHắcKinh
Member

[Minus]    0    [Plus]
Joined: 05/11/2007 21:56:23
Messages: 85
Location: Thiếu Lâm Tự
Offline
[Profile] [PM]


Mới soi thêm cái này biến này nữa $dbpath
$to=strip_tags($_POST['to']);
 


Nhìn qua nhìn lại chỉ thấy các chỗ đó có vấn đề. Và mấu chốt quanh đi quẩn lại cái biến đó. Vì chưa dùng qua forum PBLang này nên chưa thử với nó. Vả lại thẻ code hơi khó đọc . Mong diễn đàn sớm đưa cái google-syntax-highlighter vào hy vọng code sẽ rõ ràng hơn.

[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 22/11/2007 12:21:42 (+0700) | #3 | 99270
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
@ThíchHắcKinh: Theo anh là "có vấn đề" như thế nào ạh smilie ?? Mời thảo luận smilie..
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 23/11/2007 01:20:35 (+0700) | #4 | 99384
gái quê
Member

[Minus]    0    [Plus]
Joined: 22/11/2007 12:52:14
Messages: 12
Offline
[Profile] [PM]
ko thấy ai nói gì nên em gái xin phép múa rìu xíu :
$subj=strip_tags(stripslashes($_GET['subj']));
$msg=strip_tags(stripslashes($_GET['msg']));
$orgp=strip_tags(stripslashes($_GET['orig']));
$orgp=str_replace('/','',$orgp); //make sure no other URL is being used
$orgp=str_replace(chr(92),'',$orgp); //make sure no other URL is being used
$pmstat="3";
$fp = fopen($dbpath."/pm/".$liusername."_".$num."_pmstat", "w");
fputs($fp, $pmstat);
fclose($fp) 

xem đoạn code trên, mặc dù biến $orgp đã được "làm sạch" các ký tự meta bằng các hàm stripslashes, $orgp=str_replace('/','',$orgp); để tránh bị XSSDirectory transversal nhưng vẫn có thể bị lợi dụng ..
Lợi dụng như thế nào ??
PBLang save các tin nhắn của member trong thư mục /db/pm với format $member_$i_$x
trong đó $i là số thứ tự tên tin nhắn của $member đó, $x=c (c= content) để lưu nội dung tin nhắn, hoặc $x=s (s=subject)
..Vì thế mặc dù ko tấn công kiểu Directory transversal được qua biến $_GET['orig'] được, nhưng dùng biến này có thể đọc lén được những tin nhắn của người khác
if (trim($orgp)!=''){
$filename=$dbpath.'/pm/'.$orgp;
if (file_exists($filename)){
$fd=@fopen($filename,"r");
$rmsg=@fread($fd,filesize($filename));
@fclose($fd);

ex:
http://localhost/PBlang/sendpm.php?to=admin&subj=aaa&num=1&orig=admin_1_c 


--> đọc nội dung tin nhắn thứ 1 của account admin
(còn tiếp )


smilie
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 23/11/2007 02:21:14 (+0700) | #5 | 99393
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
@gái quê: chính xác smilie. Đó là 1 bug.
Bật mí thêm tí xíu. Nó vẫn bị path transversal đấy smilie..
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 23/11/2007 03:33:05 (+0700) | #6 | 99404
[Avatar]
ThíchHắcKinh
Member

[Minus]    0    [Plus]
Joined: 05/11/2007 21:56:23
Messages: 85
Location: Thiếu Lâm Tự
Offline
[Profile] [PM]
Chỉ theo kinh nghiệm thấy nó có vấn đề. smilie

$filename = "$dbpath/pm/$to";
$fd = fopen ($filename, "r");
$num = fread ($fd, filesize ($filename));
fclose ($fd);
$num++;
$fp = fopen("$dbpath/pm/$to", "w");
fputs($fp, $num);
fclose($fp);
 


Hehe ... Dạo này đang tập tành code với PHP nên không dám lạm bàn nữa .. vả lại cái PBLang chưa có dịp ngâm qua nên chưa hiểu rõ nó hehe ...xin rút lui .. Quan Van Trường chỉ điểm vậy smilie smilie
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 23/11/2007 17:59:14 (+0700) | #7 | 99524
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
Những ứng dụng web dính dáng đến khả năng viết trực tiếp vào filesystem luôn luôn có những hiểm họa bảo mật. Đặc biệt quy trình input validation thiếu chặt chẽ thì không ít thì nhiều sẽ bị lỗi bảo mật.

Cách khắc phục an toàn nhất có lẽ là thiết kế lại ứng dụng và dùng một DB hoàn chỉnh thay vì dùng file trên filesystem.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 24/11/2007 13:28:50 (+0700) | #8 | 99662
[Avatar]
lion_king_lovely_1985
Member

[Minus]    0    [Plus]
Joined: 05/09/2006 20:13:20
Messages: 156
Location: HTTP://HTVSITE.COM
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!]
Việc chèn trực tiếp nội dung tin vào file như thế.
Điều gì sẽ xảy ra nếu chúng ta chèn vào file đó 1 dãy các code PHP hoặc code có khả năng bind được.
Và chúng ta xài script hoặc shell run trực tiếp các mã lệnh trong file đó -> đưa file $to, $filename trở thành 1 file có khả năng run các mã lệnh PHP.
với những biến nhạy cảm trong đó!!!???!!!
Kiếm tra cấu trúc của cái file pm này của mỗi thành viên đều lưu lại ở dạng khá đơn giản. Vậy có run được ko???
Lại cùng thảo luận nào!!!

$filename = "$dbpath/pm/$to";
$fd = fopen ($filename, "r");

HỌC THIẾT KẾ WEBSITE | HỌC LẬP TRÌNH WEBSITE | HỌC QUẢN TRỊ WEBSITE | HỌC LẬP TRÌNH PHP & MySQL
HTTP://HTVSITE.COM
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 24/11/2007 13:58:33 (+0700) | #9 | 99668
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
Hi LKL, nếu là PBLang cách đây 2 năm thì có thể chèn code được như vậy (vì khi ấy nó ko lọc các input, XSS tè le). Còn bi giờ, nó đã lọc XSS nên các code php chèn vào cũng sẽ bị vô hiệu luôn smilie.

Thân.
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 27/11/2007 09:09:49 (+0700) | #10 | 100432
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
Thêm gợi ý để "cứu ế" chủ đề: code phát sinh lỗi nằm từ dòng 83 trở đi.
Xin mới tiếp tục thảo luận..

Thân.
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 27/11/2007 13:58:46 (+0700) | #11 | 100512
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa&quot;&gt;
Offline
[Profile] [PM] [ICQ]
Các bác khi test lỗi "Path transversal" trong trường hợp này lưu ý là biến nhận vào dạng $_POST nên phải test theo kiểu POST thì mới ra vấn đề nhé, chứ test kiểu $_GET bằng cách input ../../../ này nọ ngay trên URL thì ko ra đâu
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 27/11/2007 14:13:26 (+0700) | #12 | 100516
[Avatar]
lion_king_lovely_1985
Member

[Minus]    0    [Plus]
Joined: 05/09/2006 20:13:20
Messages: 156
Location: HTTP://HTVSITE.COM
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!]

Quan Vân Trường wrote:
Thêm gợi ý để "cứu ế" chủ đề: code phát sinh lỗi nằm từ dòng 83 trở đi.
Xin mới tiếp tục thảo luận..

Thân. 


Đoạn này theo nhận định của LKL thì chỉ toàn là cách thức đặt tên file, và ghi giữ liệu vào file của người nhận messenger.

Vậy có phải ý QVT muốn nói ở đây là dựa vào nguyên tắc đó, hoàn toàn chúng ta có thể dịch ra được đường dẫn và tên file kia rồi down về và đọc đựoc PM đó?

Ko biết đó có phải là ý mà QVT muốn nhắc đến!?!

Thân LKL!!!
HỌC THIẾT KẾ WEBSITE | HỌC LẬP TRÌNH WEBSITE | HỌC QUẢN TRỊ WEBSITE | HỌC LẬP TRÌNH PHP & MySQL
HTTP://HTVSITE.COM
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 27/11/2007 14:19:38 (+0700) | #13 | 100519
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]

lion_king_lovely_1985 wrote:

Quan Vân Trường wrote:
Thêm gợi ý để "cứu ế" chủ đề: code phát sinh lỗi nằm từ dòng 83 trở đi.
Xin mới tiếp tục thảo luận..

Thân. 


Đoạn này theo nhận định của LKL thì chỉ toàn là cách thức đặt tên file, và ghi giữ liệu vào file của người nhận messenger.

Vậy có phải ý QVT muốn nói ở đây là dựa vào nguyên tắc đó, hoàn toàn chúng ta có thể dịch ra được đường dẫn và tên file kia rồi down về và đọc đựoc PM đó?

Ko biết đó có phải là ý mà QVT muốn nhắc đến!?!

Thân LKL!!! 


Gần gần đúng rồi đây. Nhưng cái chúng ta cần không chỉ là các PM đó thôi đâu, còn nhiều thứ khác nữa mà smilie.

Thân.

Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 06/12/2007 12:34:45 (+0700) | #14 | 102242
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
Gợi ý tiếp theo: lợi dụng Debug Error..
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 07/12/2007 08:52:36 (+0700) | #15 | 102415
[Avatar]
Luke
Elite Member

[Minus]    0    [Plus]
Joined: 05/09/2002 13:21:20
Messages: 83
Offline
[Profile] [PM]
Lập trình kiểu này đọc đau cả mắt T_T
QVT định hại anh em hả, cả lũ cận lòi rồi.
Anh bó tay ^smilie^
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 07/12/2007 09:27:46 (+0700) | #16 | 102422
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

Luke wrote:
Lập trình kiểu này đọc đau cả mắt T_T
QVT định hại anh em hả, cả lũ cận lòi rồi.
Anh bó tay ^smilie

Thế kiểu nào mới ko đau mắt vậy? Ko phải của mình viết ra thì tất nhiên là đau mắt rồi, nếu chưa đọc nó bao giờ thì càng nhức hơn.

Với lại QVT cho biết thêm là để exploit được thì có cần phải đọc toàn bộ code của PBLang(để xem có nên tiếp tục ko) ko vậy, chứ chỉ riêng file này thôi thì nó chỉ có mục đích là tạo 1 số file, có thể dùng path traversal(thấy mọi người toàn dùng transversal) để tạo file ở các thư mục khác, nên cũng chưa thấy lỗi lãi gì lắm.

Còn cái hint Debug error, thì quả thật mình chịu thua.
Mind your thought.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 07/12/2007 10:18:42 (+0700) | #17 | 102430
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
@StarGhost: tất cả nằm trong file đó hết smilie..

Thân.
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 07/12/2007 12:20:20 (+0700) | #18 | 102450
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

Quan Vân Trường wrote:
Gợi ý tiếp theo: lợi dụng Debug Error.. 


Hmm, nếu display_errors=Off (by default) thì làm sao lợi dụng được hả bro.
Mind your thought.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 07/12/2007 12:47:09 (+0700) | #19 | 102456
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
Thì ko lợi dụng được ạh smilie.. Mời thảo luận tiếp smilie..
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 07/12/2007 13:13:04 (+0700) | #20 | 102460
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

Quan Vân Trường wrote:
Thì ko lợi dụng được ạh smilie.. Mời thảo luận tiếp smilie..
 


hì hì, nếu vậy thì chỉ cần gửi pm to: ../members/admin thì lập tức mọi thông tin về user admin (quan trọng nhất là pass md5) sẽ được display dưới dạng error của fopen.

Thường thì display_errors chỉ nên để On trong giai đoạn developing thôi, nếu ko thì risk vô cùng. Thực ra mình nghĩ là người phát triển PBLang cũng giả định như thế, vì trước kia sendpm.php cũng bị lỗi directory traversal, nên chắc chắn sau đó phải được kiểm tra lại rất cẩn thận.
Mind your thought.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 07/12/2007 13:21:36 (+0700) | #21 | 102462
Quan Vân Trường
HVA Friend

Joined: 19/07/2002 10:13:30
Messages: 115
Location: 9:00PM-6:00AM
Offline
[Profile] [PM]
@StarGhost: Đáp án chính xác smilie.. Phiền bạn chỉ ra đoạn code đó cho mọi người cùng thấy smilie..
Cám ơn bạn đã tham gia vào chủ đề.

Thân.
Kernel Panic.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 07/12/2007 13:50:52 (+0700) | #22 | 102465
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

Quan Vân Trường wrote:
@StarGhost: Đáp án chính xác smilie.. Phiền bạn chỉ ra đoạn code đó cho mọi người cùng thấy smilie..
Cám ơn bạn đã tham gia vào chủ đề.

Thân.
 

giả sử đường dẫn đến thư mục PBLang là /html/PBLang.

Đầu tiên, user type vào mục to ở trang sendpm.php với nội dung: ../members/admin
Như vậy ở dòng 77, biến $to sẽ được gán với giá trị "../members/admin"

Sau đó ở dòng 96, biến $filename sẽ được gán với giá trị: "/html/PBLang/db/pm/../members/admin", thực chất sẽ là "html/PBLang/db/members/admin", tức là file chứa toàn bộ thông tin về admin.

Ở dòng 98, toàn bộ thông tin trong file ở trên sẽ được đọc ra biến $num, mà sau đó ở các dòng 107, 110, 113, 119, 122 biến này sẽ được dùng làm tên file. Và hiển nhiên fopen sẽ báo lỗi, như vậy tên file sẽ được hiển thị, tức là toàn bộ giá trị của $num hay là toàn bộ thông tin về admin sẽ được hiển thị lên màn hình.

Lỗi này thực ra khá đơn giản (đến 1 noob PHP như mình còn phát hiện được), tuy nhiên, sở dĩ ko ai trả lời chắc là vì ai cũng đinh ninh rằng error debugging đã bị tắt rồi. Có lẽ lần sau QVT nên chú thích rõ hơn.
Mind your thought.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 09/02/2008 17:38:48 (+0700) | #23 | 114036
[Avatar]
lion_king_lovely_1985
Member

[Minus]    0    [Plus]
Joined: 05/09/2006 20:13:20
Messages: 156
Location: HTTP://HTVSITE.COM
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!]
The End!!!

Mục đích thì ai cũng biết là gì rồi ^^.

Chỉ có điều phương thức thì quả thực đôi khi ngẩn ngơ thế nào ấy hjx...!!! ( about myself -> tránh hỉu lầm ^^)

Thân LKL!!!
HỌC THIẾT KẾ WEBSITE | HỌC LẬP TRÌNH WEBSITE | HỌC QUẢN TRỊ WEBSITE | HỌC LẬP TRÌNH PHP & MySQL
HTTP://HTVSITE.COM
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Lỗi ở đâu và đây là lỗi gì !? 10/02/2008 11:21:28 (+0700) | #24 | 114107
[Avatar]
vivashadow
Member

[Minus]    0    [Plus]
Joined: 08/01/2008 12:36:49
Messages: 95
Offline
[Profile] [PM]
Đoạn code có 1 số điểm yếu, trên phần if với GET thì kiểm tra độ dài input, phần else cho POST thì bỏ qua.
2 dòng check slash lại bỏ qua với $to
Code:
$to=strip_tags($_POST['to']);
$msg=strip_tags(stripslashes($_POST['msg']));
$subj=strip_tags(stripslashes($_POST['subj']));



Ngôn ngữ có auto type casting mềm dẻo quá thường dễ mắc lỗi hơn, nếu ngôn ngữ khác thì $num theo mong muốn sẽ không thể chứa chuỗi, $num++ sẽ bung lỗi.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|