!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/usr/share/gimp/2.0/help/cs/   drwxr-xr-x
Free 45.72 GB of 127.8 GB (35.77%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ch07s02s02.html (13.29 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
2.2. PromД›nnГ© a funkce

2.2. PromД›nnГ© a funkce

NynГ­, kdyЕѕ vГ­te, Еѕe kaЕѕdГЅ vГЅrok ve Scheme je uzavЕ™en v kulatГЅch zГЎvorkГЎch a Еѕe jmГ©no funkce ДЌi operГЎtor je v zГЎvorkГЎch uveden na prvnГ­m mГ­stД›, je tЕ™eba se nauДЌit a vytvГЎЕ™et promД›nnГ© a funkce. ZaДЌneme promД›nnГЅmi.

2.2.1. Deklarace promД›nnГЅch

I kdyЕѕ existuje vГ­ce zpЕЇsobЕЇ, jak promД›nnГ© vytvГЎЕ™et, je preferovГЎna metoda pomocГ­ konstrukce let*. Pokud znГЎte jinГ© programovacГ­ jazyky, je tato metoda ekvivalentnГ­ definici seznamu lokГЎlnГ­ch promД›nnГЅch a rozsahu jejich platnosti. Jako pЕ™Г­klad deklarujeme dvД› promД›nnГ©, a a b, inicializovanГ© na hodnoty 1 a 2:

         (let*  (
                   (a 1)
                   (b 2)
                )
                (+ a b)
         )
      

nebo na jednГ© Е™ГЎdce:

        (let* ( (a 1) (b 2) ) (+ a b) )
      
[PoznГЎmka] PoznГЎmka

PouЕѕГ­vГЎte-li Script-Fu konzoli, je tЕ™eba zadat vЕЎe na jednom Е™ГЎdku. V ostatnГ­ch pЕ™Г­padech je vЕЎak dobrГ© pouЕѕГ­vat pЕ™ehlednГ© odsazovГЎnГ­ pro zvГЅЕЎeni ДЌitelnosti kГіdu. VГ­ce si o tom povГ­me v ДЌГЎsti vД›novanГ© bГ­lГЅm znakЕЇm.

Takto jsou deklarovГЎny dvД› lokГЎlnГ­ promД›nnГ©, a a b, inicializovГЎny a je vypsГЎn jejich souДЌet.

2.2.2. Co je lokГЎlnГ­ promД›nnГЎ?

JistД› jste si vЕЎimli, Еѕe souДЌet (+ a b) byl zapsГЎn uvnitЕ™ zГЎvorek vГЅrazu let*, nikoliv za nimi.

Je to tak, protoЕѕe vГЅrok let* definuje oblast skriptu, ve kterГ© jsou deklarovanГ© promД›nnГ© pouЕѕitelnГ©. Pokud by byl vГЅraz (+ a b) aЕѕ za vГЅrazem (let* ...), vznikla by chyba, protoЕѕe deklarovanГ© promД›nnГ© jsou platnГ© pouze uvnitЕ™ vГЅroku let*; jednГЎ se o tzv. lokГЎlnГ­ promД›nnГ©.

2.2.3. ObecnГЎ syntaxe let*

ZГЎpis vГЅroku let* je obecnД› nГЎsledujГ­cГ­:

        (let* ( promД›nnГ© ) vГЅrazy )
      

Proměnné jsou deklarovány v závorkách, např. (a 2), a výrazy jsou jakékoliv platné Scheme výrazy. Nezapomeňte, že takto deklarované proměnné jsou platné pouze uvnitř výroku let* – jsou to lokální proměnné.

2.2.4. BГ­lГ© znaky

JiЕѕ dЕ™Г­ve jsme poznamenali, Еѕe je dobrГ© kГіd skriptЕЇ zpЕ™ehlednit pouЕѕitГ­m odsazovГЎnГ­. SkuteДЌnД› se to vyplatГ­. Ve Scheme nenГ­ s odsazovГЎnГ­m ЕѕГЎdnГЅ problГ©m; protoЕѕe interpretr bГ­lГ© znaky (tj. mezery, tabulГЎtory, novГ© Е™ГЎdky a podobnГ©) zcela ignoruje, je proto moЕѕnГ© je pro formГЎtovГЎnГ­ a zpЕ™ehlednД›nГ­ skriptu libovolnД› pouЕѕГ­vat. Ve Script-Fu konzoli ale musГ­te psГЎt vЕѕdy celГЅ vГЅraz na jeden Е™ГЎdek; vЕЎe mezi otevГ­racГ­ a uzavГ­racГ­ zГЎvorkou vГЅrazu musГ­ bГЅt ve Script-Fu konzoli na jednom Е™ГЎdku.

2.2.5. PЕ™iЕ™azenГ­ novГ© hodnoty promД›nnГ©

ДЊasto je tЕ™eba zmД›nit hodnotu jiЕѕ inicializovanГ© promД›nnГ©. Ke zmД›nД› hodnoty promД›nnГ© se pouЕѕГ­vГЎ vГЅrok set!:

        (let* ( (theNum 10) ) (set! theNum (+ theNum \
        theNum)) )
      

Pokuste se odhadnout, co vГЅЕЎe uvedenГЅ vГЅrok dД›lГЎ, a pak ho zadejte do Script-Fu konzole.

[PoznГЎmka] PoznГЎmka

Znak \ znaДЌГ­ pouze, Еѕe na jeho mГ­stД› nenГ­ konec Е™ГЎdky. NezadГЎvejte ho do konzoly, netisknД›te na jeho mГ­stД› Enter, prostД› pokraДЌujte dalЕЎГ­ Е™ГЎdkou.

2.2.6. Funkce

NynГ­, kdyЕѕ umГ­te pracovat s promД›nnГЅmi, se podГ­vГЎme na funkce. K deklaraci funkce slouЕѕГ­ nГЎsledujГ­cГ­ syntaxe:

        (define (jmeno
        seznam-parametru)
        vyrazy)
      

kde jmeno je jmГ©no funkce, seznam-parametru je mezerami oddД›lenГЅ seznam jmen parametrЕЇ funkce a vyrazy je Е™ada vГЅrazЕЇ, kterГ© funkce pЕ™i svГ©m zavolГЎnГ­ vykonГЎ. NapЕ™Г­klad:

        (define (AddXY inX inY) (+ inX inY) )
      

Tato funkce se jmenuje AddXY a mГЎ dva parametry, promД›nnГ© inX a inY. Funkce oba svГ© parametry seДЌte.

Pokud jste programovali v jinГЅch imperativnГ­ch jazycГ­ch (napЕ™. v C/C++, JavД›, Pascalu atd.), moЕѕnГЎ jste si vЕЎimli, Еѕe definice funkce neobsahuje ve srovnГЎnГ­ s jinГЅmi jazyky Е™adu poloЕѕek.

  • Parametry nemajГ­ ЕѕГЎdnГ© typy (nejsou deklarovanГ© jako Е™etД›zce, celГЎ ДЌГ­sla apod.). Scheme je jazyk bez typovГ© kontroly. To je velmi praktickГ© a usnadЕ€uje rychlГ© psanГ­ skriptЕЇ.

  • NavГ­c se takГ© ve Scheme nemusГ­me zabГЅvat vracenГ­m vГЅsledku funkce, vrГЎcenou hodnotou pЕ™i zavolГЎnГ­ funkce je poslednГ­ vГЅrok. Zadejte vГЅЕЎe uvedenou funkci do Script-Fu konzole a pak zkuste nГЎsledujГ­cГ­:

                (AddXY (AddXY 5 6) 4)
              

:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0122 ]--