خرید بک لینک

با سلام .
این باگ ناشی از تابع [برای مشاهده لینک ها شما باید عضو سایت باشید ] در PHP هست .

کار تابع parse_str اینه که متغیر ها و آرایه هایی رو در یک استرینگ که به سبک Url نوشته شده تعریف کرد .

به این صورت :

کد PHP:

<?php
parse_str
('var1=Hello There&var2=Im ....&arr[]=22&arr[]=23');
echo
$var1." ".$var2; // Output Hello There Im ....
echo "</br>";
echo
$arr[0]+$arr[1]; // Output 45 (22+23)
?>

----------------------------------------

خوب باگ Possible Flow Control به این صورت هست که ما یک ورودی که از کاربر گرفته میشه رو در تابع

parse_str قرار بدیم .

خوب معلومه که مقدار تمام متغیر ها دست کاربر قرار میگیره .

بهره هایی که میشه از این باگ برد .

XSS

SQLi

Include و ....

چند تا مثال میزنیم و تمام ....

----------------------------------------
XSS :

کد PHP:

<?php
if(isset($_GET['error']) and isset($_GET['vars'])) {

$message=htmlspecialchars($_GET['error']);
parse_str($_GET['vars']);

echo

$message;

}

?>
کد بالا یک ورودی مثلا امن رو میگیره و بعد تعریف متغیر مربوطه از تابع استفاده میکنه .

خوب کاربر عزیز به این صورت کاملا میتونه امنیت رو دور بزنه

کد:

localhost/pfc.php?error=23&vars=message=<h1>Hello There</h1>
اگه امتحان کنید میبینید html اجرا میشه .

-----------------------------------------------
در SQLi
اگر به این صورت باشه .

کد PHP:

<?php
$con
=mysqli_coect('localhost','user','pass','db');
$id=(int)$_GET['id'];
$sql='Select * From news where id='.$_GET['id'];
parse_str($_GET['vars']);
$query=mysqli_query($con,$sql);
while(
$i=mysqli_fetch_array($query)) {

echo
$i['content'];
}
?>

در اینجا اجرای کوئری دست کاربر قرار میگیره با تعریف متغیر sql در vars
به این صورت مثلا
اگر یک تیبل news داشتیم
id content title
به این صورت

کد:

localhost/pfc.php?id=23&vars=sql=insert into news values(1,'s','d')
میشه دیتا توی تیبل تعریف کرد .

موفق باشید.

- - , .

برچسب: نویسنده: محمد رضا جوادیان تاريخ: سه شنبه 29 دی 1394 ساعت: 23:53

صفحه بندی