window.addEventListener("load", function(){ alert("کانال تلگرام ما : www.telegram.me/PulseLab"); }); ترشحات ذهنی | perl
جسارت های در باب امنیت اطلاعات و الکترونیک .
Learning Perl - Writing Exploits5-2
یکشنبه دوازدهم شهریور ۱۳۹۱ ساعت 14:56 | نوشته ‌شده به دست سیروس | ( )

این بخش برای کسانی مورد مفهوم است که در مورد پرل از قبل مطالعه داشتند . در زیر کد اصلی این کتاب رو می بینید که در مورد حلقه بحث شده است که کار هر خط در جلوی آن بعد از عملگر # نوشته شده است .

#!/usr/bin/perl -w
#Loop Tutorial
##################################
#                         FULLY Commented                       #
#################################
 
#While Loops
#Format
# while (Comparison) {
# Action }
#While loops will loop while the comparison is true, if it changes to false, it will no longer continue to loop through its set of action(s).
$i = 1;
while($i <= 5) {
print "While:" . $i . "\n";
$i++;
}
 
#For Loops
#Format
# for (init_expr; test_expr; step_expr;) {
#   ACTION  }
##
# Init expression is done first, then the test expression is tested to be true or false then --
#  the step expression is executed.
for($t = 1; $t <= 5; $t++) {
print "For:" . $t . "\n";
}
 
#Until Loops
#Format
# until (Comparison) {
# Action }
##
# An until loop tests the true false comparison, if it is true, it will continue to loop until the comparison changes to a
# false state.
$p = 1;
until($p == 6) { #It's six because when $p becomes = 5, it doesnt go through the set of action sequences; therefore, 5 isn't printed.
print "Until:" . $p . "\n";
$p++;
}
#Foreach Loops
#Used most commonly to loop through lists
#Format
# foreach $num (@array) {
# Action }
$n = 1;
foreach $n (1..5) {
print "Foreach:" . $n . "\n";
$n++;
}

 

این بخش هم ترجمه بالا است ولی با این فرق که خودم قسمت بالا رو بازنویسی کردم و این بخش رو هم می زارم تا خودتون بخونید ، تقریبا همونائی بودند که در بالا تفصیر کردیم ولی با مثالهای واقعی تر . ( البته گفته نویسنده ای اصلی )


Learning Perl - Writing Exploits5
دوشنبه ششم شهریور ۱۳۹۱ ساعت 20:43 | نوشته ‌شده به دست سیروس | ( )

حلقه ها

با استفاده از ساختارهای تکراری می توانیم تصمیم بگیریم که که چه دستوراتی در چه وضیعتی اجرا و چه دستراتی اجرا نشوند . سه دستور مورد استفاده در تکرار و درست کرده حلقه عبارتند از while ، Untilو از همه مهمتر for و برای تکرار در آرایه ها هم می توان foreach که ما درر این کتاب نحوه ای کار while و for را که برای ما پر کاربردتر از بقیه هستند تفصیر می کنیم :

ساختار While را می توان به دوگونه استفاده کرد به مثال زیر توجه فرمائید :

Do

{

دستور 1

. . . .

 دستور n

{

While(Conditionals)

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

While(Conditionals)

{

دستور 1 

. . .

دستور n

};

ساختار دیگری که باعث اجاد حلقه در پرل می شود ساختار Until می باشد که آن هم به دو نوع در برنامه نویسی وشباهت زیادی به while دارد که به دلیل کاربرد کم از توضیح آن چشم پوشی می کنم .

یکی از مهمترین و پر کاربردترین ساختارها برای حلقه ساختار for می باشد که می توان به شکل زیر از آن استفاده کد :

 )گام افزایش/گام کاهش ; شرط حلقه ; مقدار اولیه شمارنده حلقه ( for

{

     دستورات حلقه

};

این مثال حالت کلی برای نحوه استفاده از ساختار for است یه مثال و نحوه ای کار این ساختار رو در پایئن می بینید :

For ($s=1;$s<=4;$s++)

{

دستورات حلقه

};

یک مثال ساده می باشد که در آن متغییر $S برابر با 1 است و در شرط حلقه گفته شده که اگر $s کوچکتر ویا مساوی 4 باشد گام افزایش رو ادامه بده .  $s++ یعنی اینکه یکی به $s اضافه کن .

برچسب‌ها: perl, socket, socket programming, exploit

Learning Perl - Writing Exploits4
شنبه چهارم شهریور ۱۳۹۱ ساعت 20:46 | نوشته ‌شده به دست سیروس | ( )

شرطی

در هر زبان برنامه نویسی توابه شرطی وجود دارد و زبان پرل نیز از این قاعده خارج نیست . برای این منظور بیشتر در زبان پرل از If استفاده می شود .

کار توبع شرطی به این صورت است که یک شرط را بیان می شود اگر ورودی طبق شرط تعریف شده بود عمل ادامه برنامه در غیر این صورت error به برای مثال بچه که بودم بابام به من گفته اگه درس بخونی معدلت بالا بشه برات به PS می گیرم در غیر این صورت باید تابستان می رفتم سر کلاسهای سال آینده صورت کلی این تابع به صورت زیر است .

#!/usr/bin/perl –w

$variables[1]=  XXXXXX

$Variables[2]= YYYYY

If ($Variables[1]>$Variables[2])

{

ادامه برنامه دنبال شود ...........

}

Else

{

نمایش خطاء .......

};

حالا بیاید توی این یک برنامه واقعی ایجاد کنیم . به کد زیر توجه کنید :

#!/usr/bin/perl –w

$s1=22

$s2=11 

If ($s1>$s2)

{

Print “$s1 is Greater”

}

Else

{

Print “$s2 is Greater”

};

بیایئد ببینیم چی کار کردیم ما در ابتدا دو متغییر تعریف کردیم که به ترتیب عبارتند از$s1 و $s2 که به ترتیب مقدار آنها برابر با 22 و 11 بوده است . با تابع if شرط را اینگونه بیان کردیک که اگر$s1 از$s2 بزرگتر باشد در خروجی چاپ کن $s1 is Greater که بعد از آن هم با else که با if می اید گفیتم اگه شرط درست نبود در خروجی $s2 is greater رو چاپ کن .

در کد بالا از دستور else استفاده شده ، اما همیشه این طور نیست گاهی اوقات برنامه نویسی فقط درستی را چک میکند و در صورت اینکه شرط درست نباشد چی می شه چیزی رو تعیین نمی کنه  برای مثال بالا اگر از else استفاده نکنیم موردی پیش نمی اید بری مثال کوتاه شده ای کد بالا را مشاهده کنید :

#!/usr/bin/perl –w

$s1=22

$s2=11

If ($s1>$s2)

{

Print “$s1 is Greater”

};

البته روشهای دیگر نیز برای استفاده از ساختار وجود دارد که در این مقاله نمی گنجد . برای مطالعه بیشتر می توانید به کتابهای در این زمینه مراجعه فرمائید.  ;)


Learning Perl - Writing Exploits3
سه شنبه هفدهم مرداد ۱۳۹۱ ساعت 21:18 | نوشته ‌شده به دست سیروس | ( )

آرایه ها

تا کنون برای مقدار دهی از توابع استفاده می کردیم ولی از این پس می خواهیم با ساختار دیگر آشنا شویم که به آن Array می گویند . ارایه بر خلاف متغییر ها دارای چندین عنصر است و می توان که هر عنصر می تواند محتوی مقدار باشد ، هر عنصر را می توان با یک اندیس از دیگری جدا کرد . (اندیس شماره ای شناسائی عنصر در array می باشد.)

شاید در عمل سخت به نظر بیاد ولی یاد گرفتن اون راحتتر و بهتر از به کار بردن ان است . در زیر برنامه Hello World رو با array نوشته شده است توجه فرمائید .

در زیر برنامه ای Hello World با ساختار آرایه نوشته شده است با هم به آن توجه می کنیم :

#!/usr/bin/perl –w

@Hello=(‘hello’.’world’);

Print Join(‘ ‘.@Hello) . “\n”;

این یک مثال بود با دومقدار همان طور که می بینید Array با @ آغاز می شود و مقادیر در داخل () قرار می گیرد که هر مقدار به تنهائی در ‘ و یا “ بنا به کار برد برنامه نویس قرار می گیرد و هر مقدار هم با , از یکدیگر جداسازی می شوند ، عنصرها (مقدارها) به در این آرایه برابر با hello و world هستند . به یک مثال دیگر توجه کنید این خیلی ساده تر است :

#!/usr/bin/perl –w

@Names=(‘Siroos’,’Backpacker’.’N0t_F0und’.’AliAkbar’);

   Print @Names;

در آرایه ای به نام @Names از 4 عنصر استفاده شده است که به ترتیب عبارتند از : Siroos و Backpacker و N0t_F0und و در آخر هم AliAkbar است حالا در پایین به نوع شماره گذاری ( اندیس ) ها می پردازیم که چگونه یک عنصر را از ارایه استفاده کنیم . به شکل زیر توجه کنید :

    0                     1                     2                    3

Siroos            Backpacker      N0t_F0und        AliAkbar

اندیس هرعنصر در بالای آن نوشته شده است ولی چگونه در برنامه استفاده کنیم برای این کار باید اسم آرایه را نوشته سپس شماره ای آن را در داخل [] بنویسید به شکل زیر توجه کنید :

@Names       $Names[0]        $Names[1]       $Names[2]        $Names[3]

 

                      Siroos            Backpacker       N0t_F0und         AliAkbar

برای اینکه یک مثال عملی رو ببینید به مثال زیر توجه کنید  :

#!/usr/bin/perl -w

@Names=(‘Siroos’,’Backpacker’,’N0t_F0und’,’AliAkbar’,’AliAkbar’);

Print $Names[1];

در مثال بالا فقط مقدار Backpacker چاپ می شود به نحوه ای استفاده از اندیس در این مثال توجه فرمائید .

روشهای زیادی برای فراخوانی توابع وجو دارد که در این بخش از آن صرف نظر می کنیم . البته شما می توانید برای مطالعه بیشتر می توانید به کتاب Perl Programming مراجعه کنید .

برچسب‌ها: perl, socket, socket programming, exploit

Learning Perl - Writing Exploits2
شنبه چهاردهم مرداد ۱۳۹۱ ساعت 22:52 | نوشته ‌شده به دست سیروس | ( )

مقدمه :

Perl مخفف ( Practical Extraction and Report Language ) می باشد که یک زبان اسکریپت نویسی می باشد .

منظور از اسکریپت نویسی این است که این نوع زبان نیازی به کامپایلر ندارد  و برای استفاده از آن به مفصر آن نیاز داریم ، مفصر زبان پرل ActivePerl می باشد .

امروزه پرل در تمامی سیستم عامل ها استفاده می شود و  بین برنامه نویسان دوست داشتنی و منحصر به فرد می باشد .

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

چرا پرل ؟

پرل در منظر هک بسیار جا افتاده است ، در حدود 70% Exploit ها را با زبان پرل می نویسند بیشتر هکرها در ابتدا پرل را برای Exploting انتخاب می کنن و دلیل آن هم آسان بود ، انعطاف پذیری ، دانلود راحت ( اوپن سورس بودن ) و استفاده راحت از مفصر آن می باشد .

چنین صفتهای هر هکری رو علاقمند به  پیدا کردن آسیبپذیری و نوشتن Exploit با پرل می شود .

( واقعا نمی دانید پیدا کردن یک آسیبپذیری و نوشتن Exploit چه احساسی رو به یک فرد میده و می تونه منشا خیلی از پیشرفتها بشه یادم نمی ره اولین باری رو که با PHP یک Exploit برای یک آسیبپذیری BOF نوشتم البته درست بود که اولین Exploit رو برای باگی نوشتم که خودم پیدا نکرده بودم ولی لذت نوشتن Exploit و نتیجه دادن آن چه حسی داره .

الان هم روی آسیب پذیریهای ActiveX کار می کنم و به نتایجی هم رسیدم که برای Ba X تیم محفوظ است .)

 

پایه

قبل از شروع  اسکریپت نویسی با perl به دو ابزار نیاز دارید اولین ابزار مفصر perl است که برای اجرای کدها بر روی سیستم خود به آن نیاز دارید که نام این مفصر ActviePerl می باشد و می توانید www.activestate.us دریافت و استفاده کنید .

دومین ابزار که به آن نیاز داریم یک نرمافزار متن نویسی است که ما از DZSofts Perl editor استفاده می کنیم که آن رو هم می توانید از www.dzsoft.com دریافت کنید .

البته texteditor های زیادی وجو دارد که ما از DZsofts perl editor استفاده می کنیم . اگر حاله دانلود ندارید notepad بهترین گزینه برای این کار است .

همه ای فایلهای پرل نیز مانند دیگر زبانهای برنامه نویسی پسوند خاص خود را دارند . تمامی فایلها در پرل با پسوند .pl ذخیره می شوند .

حالا تمامی ابزار مورد نیاز رو روی سیستم خود نصب کرده و سوار کشتی شوید که هدایت گر آن خود شما هستید ( اصطلاح است شاید به انگلیسی معنی بهتری بده .)

ساختار ساده ای این زبان به شما کمک می کنه تا به راحتی به آن عادت کنید در ضمن با فرا گرفتن این زبان زبانهای دیگر هم برای شما قابل فهمتر می شوند زیرا تمامی زبانهای برنامه نویسی همه یکی هستند فقط با کمی تغییرات ( کمی هم با تغییرات زیاد .)

پایه و اساس هر زبان برنامه نویسی با برنامه hello World است که ساده ترین مثال برای هر زبان است ما هم این شروع می کنیم .

اجازه بدهید یک کد ساده رو با هم بررسی کنیم ;

#!/usr/bin/perl –w

Print “HelloWorld\n”;

کدهای بالا را در texteditor خود نوشته و آن را با پسوند helloworld.pl ذخیره کنید . سپس آن را در command prompt خود فراخوانی کنید حالا به هر نحوه به نظر بگیرید و یندازید تو command prompt و کلید enter رو فشار دهید .

چیزی که مشاهده می کنید دو کلمه زیر می باشد .

Hello World

حالا کد مورد نظر رو با هم تفصیر می کنیم .

خط اول #!/usr/bin/perl –w که نشان می دهد این برنامه به زبان پرل نوشته شده است .

در آخر خط –w بررسی می کنه  متغییر به طور صحیح در برنامه به کار بره البته خیلی ساده است .

خط دوم print “Hello World\n”; هستش.

Print کار چاپ مقدار ها رو انجام می ده یعنی هر چی بعد از print بیاد در خروجی چاپ می شه . مانند دستور echo در زبان PHP و یا دستور Printf در C++ که کار مشابه ای انجام می دهند .

استفاده از ; هم مهم است و در پایان هر سطر باید از آن استفاده کرد این به مفصر می گه که این سطر به پایان رسیده و لطف کن  برو خط بعدی  ;)  …..,

علامت ( کاراکتر ) \n هم به معنی این است که کلمات بعدی باید به سطر زیر روند .

در perl کاراکترهای مخصوص زیادی وجود دارد که در جدول پایین مهمترینها را با هم بررسی می کنی :

Character ( علامت)

Meaning ( مفهوم)

\n

\r

\t

\b

\a

\L

\l

\U

\u

هر نوشته بعد از این کاراکتر به خط بعدی منتقل می شود .

کلمه ای بعد از خودش رو به اول سطر بر می گردونه .

وقتی که بخواهیم بین کدها اندازه یک tab فاصله بیندازیم استفاده می شود .   .1tab=5Character

با استفاده از این کاراکتر فاصله ای تمامی کدها از یکدیگر به یک اندازه خواهد بود .

با این دستور می توانید یک اختار بدید (Alert) .بر ای تون بوق می زنه .

تمامی حروف بعد از خود را به حروف کوچک تبدیل میکند .

حرفی که بعد از این علامت قرار گیرد به حرف کوچک تبدیل می شود .

این علامت عکس \L عمل میکند تمامی حرفهای بعد از به حروف بزرگ تبدیل می شوند .

حرفی که بعد از علامت بیائید به حرف بزرگ تبدیل می شود .

در جدول بالا مهمترین کارکترهای مورد استفاده در perl دیدید . از دیگر کاراکترها می توان به \f و \v و \e اشاره کرد .(کار هر یک را می توانید خود یکی یک تست کنید و ببینید .)

برای مثال میتوانیم استفاده کنیم از کاکترهای ویژه در زیر

برای نحوه ای استفاده از این کاکترها به مثال زیر توجه کنید ;

#!/usr/bin/perl –w

print "Hello\tWorld\n\a";

پرل هم مثل دیگر زبانهای برنامه نویسی دارای متغییر است (Variables ) است . متغییرها در پرل نگه داری می شوند ( دایمی یا موقت ) و میتوان شامل بشه Numbers و Strings و almost و Length .

متغییرها در پرل با $ شناسائی میشوند یعنی در واقع $ بخشی از متغییر است برای مثال متغییر $Hello که می توان به آن مقدار داد برای مثال $Hello=”Hello World\n”; که بعد از قرار دادن = می توان به متغییر مقدار داد .

برای درک بهتر یک کد رو با هم می بینیم ;

#!/usr/bin/perl –w

$Hello=”Hello World\n”;

   Print $Hello;

همان طور که گفته شد متغییر در این برنامه $Hello می باشد و  مقدار آن هم معلوم می باشد که برابر با “Hello World\n” است .

در پرل فقط double quotation marks وجود ندارد ، ولی نحوه ای استفاده مهم است . استفاده از Single Quotation Marks در آرایه ها است و می توان عوض کرد و از double quotation Marks استفاده کرد .

برای مثال اگکر در کدی که در بالا استفاده کردین به جای ( ) از ( ) استفاده کنیم هر چی که در quotation marks هست نشون می دهد و دیگر عملگر \n کار نمی کند و مانند Hello World در خروجی چاپ می شود . برای درک بهتر به دو کد زیر توجه کنید :

#!/usr/bin/perl –w

$Hello=”Hello World\n”;

  Print $Hello;

در این کد خروجی به صورت =>    Hello World  چاپ می شود .

حالا کد دوم را که از Single quotation Marks استفاده شده رو با هم تست می کنیم :

#!/usr/bin/perl –w

$Hello=’Hello World\n’;

  Print $Hello;

خروجی در این برنامه به صورت  Hello World\n  چاپ می شود در واقع عملگر \n بی اثر می شود .

تفوت اصلی بین این نوع نقل قول چزیری بود که گفته شد . در نقل قول ( “ ) مقدار تفصیر می شود ولی در نقل قول ( ‘ ) فقط مقدار چاپ می شود .

حال خود برنامه نویس بر حسب نیاز خود از  ( “ ) و ( ‘ ) استفاده می کند .

در پرل برای مقدارهای دمدستی از متغییر استفاده کرد و بنا استفاده برنامه نویس در مواقع نیاز آن را فراخوانی می کند و در واقع به یک تابع String استفاده کنیم . و می توانیم هر وقت که بخواهیم از آن استفاده کنیم . به مثال زیر توجه فرمائید :

#!/usr/bin/perl –w

$Yourname=”TOURNAME”;

Print “Hello” . “ “ . “World” . “ “ . “MY” . “ “ . “ Name” . “ “ . “ Is” . “ “ . “$Yourname” .”\n”;

در بالا Hello World My Name Is YOURNAME در خروجی چاپ می شود  ،این یک مثال در نحوه ای اضافه کردن رشته به یک تابع بود .

به نظر می آید که این نوع کد نویسی و استفاده از String سخت و شلوغ باشد و هکرهای کند ذهن مثل من نفهمند روشهای دستی برای انجام این کار را بعدا با هم مرور می کنیم .

           پرل یک زبان قدرتمند و شگفت انگیز در محاسبات اعداد و ارقام می باشد  .

در پایین می توانید یک مثال را در این مورد ببینید :

#!/usr/bin/perl
#Adding, Subtracting, Multiplying, and Dividing in Perl
#Perl can do all basic math functions and more.
$a = 3 + 5 ; #Addition
$b = 5 * 5; #Multiplication
$c = 10 / 2 ; #Division
$x = 12 - 5; #Subtraction
print $a . " " . "ADDITION: The solution should be 8.\n";
print $b . " " . "MULTIPLICATION: The solution should be 25.\n";
print $c . " " . "DIVISION: The solution should be 5.\n";
print $x . " " . "SUBTRACTION: The solution should be 7.\n";#Autoincrementing and Autodecrementing
$Count = $Count + 1;
print "$Count\n";#The Same Thing but easier to read
$Count1 += 1 ; #Decrement $Count1 -=1 1
print "$Count1\n";#Square Root
$Square = sqrt(121) ;
print "The square root of 121 is $Square\n";#Exponents
$Exp = 2**5 ;
print "$Exp\n";
برچسب‌ها: perl, socket, socket programming, exploit

Learning Perl - Writing Exploits
جمعه سیزدهم مرداد ۱۳۹۱ ساعت 22:15 | نوشته ‌شده به دست سیروس | ( )

Learning Perl

Writing Exploits

در این سری برای شما کتاب Learning Perl – writing Exploit رو برای شما ترجمه کردم از Warpboy که این کتاب کتابی برای نوشتن exploit با پرل میباشد . که در ابتدا پیش نیاز perl برای socket Programming رو گفته و بعد از معرفی کتابخانه LibWWW که کتابخانه مربوط به اینترنت و ساکت پروگرامینگ می باشد و بعد هم چند مثال برای Exploiting با perl گفته شده است .

لیست بخش های کتاب بصورت لیست پایین می باشد . هر 2 سه روز 1 بار یک بخش رو برای شما در اینجا قرار می دم و در آخر کل سورس کدها رو برای upload می کنم که بتونید دانلود کنید .

در آخر اگر سوالی داشتید می تونید با من تماس حاصل فرمائید /...

هر کمکی از دستم بر بیاد براتون انجام می دم . برای دیدن بخش ها به ادامه مطلب مراجعه فرمائید /....

موفق و شاد باشید /....

برچسب‌ها: perl, socket, socket programming, exploit

 
دیگر موارد