PDA

View Full Version : قرار دادن کوکی هنگام بالا آمدن سایت در php



mhabat
دوشنبه 07 مرداد 1392, 02:41 صبح
سلام.کد زیر رو ببینید:
توقسمت patch باید چیزی بنویسم؟
دقیقا بلد نیستم با کد زیر کار کنم.

<?php
session_start();
$strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
session_write_close();
$ch = curl_init('http://barnamenevis.org');
curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );
curl_exec($ch);
curl_close($ch);
?>

mhabat
دوشنبه 07 مرداد 1392, 18:27 عصر
سلام. ببینید من می خوام از طریق curl کوکی رو برداشت کنم و ازش استفاده کنم برای این کار کد کوکی شو به 2 صورت نوشتم
که اگر ممکنه بگید اشتباهش کجاست.
کد اول:


<?php
$data = array('username'=>'','password'=>'','submit'=>'sign in');
$data= http_build_query($data);
$ch=curl_init('url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
$result=curl_exec($ch);
if($result) {

preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);
parse_str($m[1], $cookies);
var_dump($cookies);
curl_setopt($ch, CURLOPT_COOKIE,'$cookies');
curl_setopt ($ch, CURLOPT_REFERER,'');
$result1=curl_exec($ch);
echo $result1;
}
curl_close($ch);
?>


کد دوم:

<?php
$data = array('username'=>'','password'=>'','submit'=>'sign in');
$data= http_build_query($data);
$ch=curl_init('url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_COOKIEJAR,'C://COOKIEX1');
$result=curl_exec($ch);
if($result) {
curl_setopt($ch, CURLOPT_COOKIE,'C://COOKIEX1');
curl_setopt ($ch, CURLOPT_REFERER,'');
$result1=curl_exec($ch);
echo $result1;
}
curl_close($ch);
?>

ممنون

abolfazl-z
سه شنبه 08 مرداد 1392, 11:27 صبح
$ch = curl_init('http://www.google.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// get headers too with this line
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
// get cookie
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);

parse_str($m[1], $cookies);
print_r($cookies);

mhabat
سه شنبه 08 مرداد 1392, 17:26 عصر
سلام .تشکر بابت کد .
خوب من الان می خوام لوگین کنم به پرشین گیگ. ابتدا یوزر پسورد رو میفرستم بعدش کوکی هارو میگیریم و بعدش پیج مربوط به پرشین گیگ رو همراه با لود کردن کوکی باز می کنم.
کار بالا رو به صورت کد نوشتم ولی کار نمی کنه.....!


<?php
$data = array('username'=>'','password'=>'','submit'=>'');
$data= http_build_query($data);
$ch = curl_init('http://www.persiangig.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);
parse_str($m[1], $cookies);
curl_setopt($ch, CURLOPT_URL,'http://www.persiangig.com/');
curl_setopt($ch, CURLOPT_COOKIE, $cookies);
$result1=curl_exec($ch);
curl_close($ch);
echo $result1;
?>

mhabat
سه شنبه 08 مرداد 1392, 17:36 عصر
این هم یک کد دیگه که کوکی های گرفته شده رو برنامه میده ولی کار نمی کنه.

<?php
$username="";
$password="";
$url="";

$postdata = "username=".$username."&password=".$password;
$agent = $_SERVER["HTTP_USER_AGENT"];
$ch = curl_init();
curl_setopt ($ch, CURLOPT_USERAGENT, $agent);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result=curl_exec($ch);
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);
parse_str($m[1], $cookies);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookies);
curl_setopt ($ch, CURLOPT_REFERER, $url);
$result1 = curl_exec ($ch);
echo $result1;
curl_close($ch);
?>

abolfazl-z
سه شنبه 08 مرداد 1392, 19:24 عصر
دوست عزیز اون کد کوکی درست هست.

ولی توجه داشته باشید که همه جا نام فیلد نام کاربری username و نام فیلد رمز عبور password نیست و ممکن هست برای امنیت متغیر باشد ولی پرشین گیگ اینطور نیست ولی اینطور که معلومه نمیشه بصورت مستقیم وارد شد اگر دقت کرده باشید توی فرم ورود پرشین گیگ یک فیلد به نام p_given وجود دارد که قبل از ارسال فرم توسط تابع calcMD5 (تابع جاوا اسکریپت) که ورودی های ان اطلاعاتی از همین فرم هست را مگیرد و خروجی هش شده را در داخل فیلد p_given قرار میدهد و سپس فرم را به آدرس http://www.persiangig.com/redirect/ ارسال می کند.

اگر شما بتوانید از تابع calcMD5 استفاده کنید و فیلد p_given رو همراه با یوزر نیم و پسورد ارسال کنید میتوانید لاگ این کنید.

abolfazl-z
سه شنبه 08 مرداد 1392, 19:43 عصر
البته خیلی راحت میتونین اینکار را انجام دهید.
ابتدا با کروم سرس را باز کنید و سپس کد زیر را بیابید :

<form name="lform" method="post" action="/redirect/" onsubmit="this.p_given.value=(calcMD5('NewNew!!!FreeWebsite! !! Free Web!!!'+this.p_tmp.value));if (this.p_tmp.value) this.p_tmp.value=Math.pow(10,this.p_tmp.value.leng th)-1;">

سپس با تزریق کد زیر به انتهای آن میتوانید مقدار هش شده نام کاربری و رمز عبور خود را بیابید و در فیلد p_given قرار دهید :
alert(this.p_given.value);

یعنی میشه این :

<form name="lform" method="post" action="/redirect/" onsubmit="this.p_given.value=(calcMD5('NewNew!!!FreeWebsite! !! Free Web!!!'+this.p_tmp.value));if (this.p_tmp.value) this.p_tmp.value=Math.pow(10,this.p_tmp.value.leng th)-1;alert(this.p_given.value);">

mhabat
سه شنبه 08 مرداد 1392, 20:06 عصر
تشکر فراوان بابت توضیحات خوبتون.
یک سوال نمیشه از تابع calcMD5 که در جاوا اسکریپت هست در کد های خودمون استفاده کنیم؟
یعنی خودمون اینکودش کنیم و بفرستیم؟....!

abolfazl-z
سه شنبه 08 مرداد 1392, 20:33 عصر
بله میشود(ولی امتحان نکردم)

اینم کد جاوا اسکریپت اش :
http://www.persiangig.com/js/core90325.js

mhabat
سه شنبه 08 مرداد 1392, 20:49 عصر
عذر می خوام ولی بلد نیستم از کد استفاده کنم.
اگر میشه با اون کد یک مثال شبیه این کد بزنید:

$username=md5(" ");
$password=md5(" ");
ممنون

abolfazl-z
سه شنبه 08 مرداد 1392, 20:59 عصر
اگر شما فقط می خواهید از یک یوزر نیم پسورد استفاده کنید بهتر است همان کار را انجام دهید و از اون کد بدست آمده برای همیشه استفاده کنید.
ولی اگر برای یوزر نیم پسورد های دیگر می خواهید استفاده کنید باید صفحه جدا بسازید و پردازش های لازم را انجام دهید تا کد ها را هش کنید!

mhabat
سه شنبه 08 مرداد 1392, 21:14 عصر
من می خوام از یوزر پسورد های دیگه استفاده کنم.
اما چه پردازشی؟ مگه بیشتر از یک تابع باید استفاده کنیم؟

mhabat
سه شنبه 08 مرداد 1392, 23:40 عصر
اگه مقادیر رو md5 می کنه بعد برای سرور ارسال می کنه(پرشین گیگ ) خوب باید یه این صورت هم چواب بده.
اینو ببینید:
<?php
$data = array('username'=>md5(''),'password'=>md5(''),'submit'=>'redirect');
$data= http_build_query($data);

echo $data;
$ch = curl_init('http://www.persiangig.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);
parse_str($m[1], $cookies);
curl_setopt($ch, CURLOPT_URL,'http://www.persiangig.com/');
curl_setopt($ch, CURLOPT_COOKIE, $cookies);
$result1=curl_exec($ch);
curl_close($ch);
echo $result1;
?>
ولی کار نمی کنه!

abolfazl-z
چهارشنبه 09 مرداد 1392, 11:59 صبح
اگه مقادیر رو md5 می کنه بعد برای سرور ارسال می کنه(پرشین گیگ ) خوب باید یه این صورت هم چواب بده.خوب اون همه هش کردن ها که یکی نیستند!

باز شما در این قسمت اشتباه کرده اید که ؟؟

$data = array('username'=>md5(''),'password'=>md5(''),'sub mit'=>'redirect');
بنده عرض کردم که باید نام فیلد یوزر نیم راu_given و پسورد راp_tmp بگذارید!
دوست عزیز یک نمونه درست کردم. دیگه بقیه کار ها بستگی به قدرت خودتون داره و بسیاری از آموزش های بالا را نا دیده گرفته اید دوباره بخوانید.

فایل ضمیمه شد.

فایل را دانلود کنید سپس آن را بر روی لوکال هاست خود کپی کنید سپس به آدرس مثلا اینطوری وارد شوید :
http://localhost/test/index.php?password=mypassword
آدرس بالا فرضی هست شما باید به آدرسی که کپی می کنید بروید
سپس پس از ارسال پسورد مقدار هش شده پسورد و همچنین مقدار تغییر کرده پسورد را می بینید که به راحتی می توانید با وارد کردن یوزر نیم (u_given) و پسورد(p_tmp) و مقدار هش شده (p_given) و مقدار خالی (submit)وارد سایت شوید.

فقط توجه داشته باشید که ابتدا باید به آدرس http://localhost/test/index.php?password=mypassword روجوع کنید و مقدار پسورد را از بین تگ pass بگیرید و همچنین مقدار هش شده اش را از بین تگ hash دریافت کنید.و بصورت پست ارسال کنید.


کلا فرم پرشین بصورت زیر هست :


<form name="lform" method="post" action="/redirect/" >
<input name="u_given" type="text" value="">
<input name="p_tmp" type="password" value="">
<input type="submit" value="">
<input type="hidden" name="p_given">
</form>تمامی توضیحات بنده روشن هست!

abolfazl-z
چهارشنبه 09 مرداد 1392, 12:02 عصر
دوست عزیز من این کار را بصورت دستی انجام دادم و وارد شدم.

موفق باشید :لبخندساده:

mhabat
چهارشنبه 09 مرداد 1392, 16:19 عصر
سلام.
1- این کد رو به پیج اضافه می کنم ولی alert نمی ده...!

<form name="lform" method="post" action="/redirect/" onsubmit="this.p_given.value=(calcMD5('NewNew!!!Fr eeWebsite!!! Free Web!!!'+this.p_tmp.value));if (this.p_tmp.value) this.p_tmp.value=Math.pow(10,this.p_tmp.value.leng th)-1;alert(this.p_given.value);">

2-مرسی بابت کدی که نوشتین. اما بجزه پسورد باید فیلدش و هچنین فیلد یوزر باید باهم هش بشن ! درسته؟
من به این شکل کد رو هش می کنم وبرای فیلد given میفرستم ولی باز اتفاقی نمی افته.
کد:
http://localhost/test/index.php?password=u_given=username&p_temp=password
راستی بجز کد هش یک مقدار عددی هم برای مثال به این شکل میده بهم:
99999999
این رو هم باید بفرستم؟ اگه آره به کدوم فیلد؟

آقا شرمنده کردین.

mhabat
چهارشنبه 09 مرداد 1392, 16:23 عصر
راستی شما که دستی تست کردین .یک تست هم با این بکنید شاید خوده برنامه هم مشکل داشته باشه!

<?php
$data = array('u_given'=>'','p_tmp'=>'','p_given'=>'','submit'=>'');
$data= http_build_query($data);

echo $data;
$ch = curl_init('http://www.persiangig.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);
parse_str($m[1], $cookies);
curl_setopt($ch, CURLOPT_URL,'http://www.persiangig.com/');
curl_setopt($ch, CURLOPT_COOKIE, $cookies);
$result1=curl_exec($ch);
curl_close($ch);
echo $result1;
?>

abolfazl-z
چهارشنبه 09 مرداد 1392, 16:42 عصر
دوست عزیز بنده همه مطلب رو واضح بیان کردم.


2-مرسی بابت کدی که نوشتین. اما بجزه پسورد باید فیلدش و هچنین فیلد یوزر باید باهم هش بشن ! درسته؟
اصلا ما با یوزر نیم کاری نداریم فقط با پسورد کار داریم.
دوست من شما بصورت html همین فرم را ارسال کنید اونم به ادرس http://www.persiangig.com/redirect/ (http://www.persiangig.com/)
می بینید که درست عمل می کند.



راستی بجز کد هش یک مقدار عددی هم برای مثال به این شکل میده بهم:
99999999
بله این رو بجای پسورد باید بفرستید.(یعنی همون فیل پسورد)
یوزر نیم هم همون یوزر نیم
پسورد هش شده رو هم باید در فیلد p_given قرار داده و بفرستید دیگر از این واضح تر ؟

mhabat
چهارشنبه 09 مرداد 1392, 17:36 عصر
مرسی آقا شما کارتون درسته. و از طریق Html بله دیتا رو ارسال کردم. کار می کنه.
ولی من میخوام برنامم کار کنه...! این تایپک هم زدم که مشکل برنامم حل بشه.
حالا نمیشه ببینید برنامه کجاش مشکل داره؟
خوب الان ما میدونیم که فیلد هارو چطور باید ارسال کنیم.
کوکی هارو هم که گرفتیم.
پس مشکل کجاست واسه لوگین کردن؟
سورس رو هم که قرار دادم.

<?php
$data = array('u_given'=>','p_tmp'=>'','p_given'=>'');
$data= http_build_query($data);


$ch = curl_init(' http://www.persiangig.com/redirect');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);
parse_str($m[1], $cookies);

curl_setopt($ch, CURLOPT_COOKIE, $cookies);
$result1=curl_exec($ch);
curl_close($ch);
echo $result1;
?>

abolfazl-z
چهارشنبه 09 مرداد 1392, 17:58 عصر
شاید باورتون نشه من با توابع curl کار نکردم و تا زمانی که نیاز ندانم سمت اش نمیرم(یکی از ویژگی های بد من)
خوب از دوستان می خواهم به دوستمان کمک کنن.

دوستان بزارید اینطور منظورشون رو بیان کنم که :

ما می خواهیم به صفحه http://www.persiangig.com/redirect با توابع curl چهار فیلد رو بصورت پست ارسال کنیم و پس از ارسال و لاگ این شدن کوکی هایی دریافت کنیم.همین.

اینم فیلد ها(مقادیرشون مشخص هست)


<form name="lform" method="post" action="/redirect/" > <input name="u_given" type="text" value=""> <input name="p_tmp" type="password" value=""> <input type="submit" value=""> <input type="hidden" name="p_given"> </form>