Posts

Showing posts from March, 2012

My article: Analysis excute code of easy program in Vietnamese

Image
Demo disassembly Mở file vidu.exe, chọn E ( excute), chọn tới vidu.exe
Ta thấy nội dung chương trình sau khi disassemly. Đây chính là code thực thi của chương trình:
Trước tiên cần tìm chương trình chính, source code là:
#include
int tong(int a, int b)
{
    int t=0;
    t=a+b;
    return t;
}
int main (){
printf("Ket qua: %i",tong(1,2));
return 0;
}
Nhận thấy là có một chương trình con là tính tổng, như vậy trong chương trình chính sẽ gọi hàm tong với 2 tham số truyền vào là 1 và 2. Sau đó, hàm main sẽ phải in ra “Ket qua: “.
Với 2 dữ kiện đó, chúng ta tạm xác định hàm main bắt đầu từ: 00401020
Vì:
Bắt đầu bằng việc PUSH EBP và MOV EBP,ESP. Việc này là thủ tục đầu tiên khi gọi hàm.
Tiếp theo, hàm main sẽ gọi hàm tính tổng. Tại sao?
Ở vị trí 00401023, tiến hành PUSH 2 rồi tiếp theo PUSH 1. Đây chính là quá trình truyền tham số cho chương trình con thông qua stack ( hoạt động theo cơ chế LIFO). Các tham số được push vào theo chiều ngược lại với code là từ phải qua trái. Tiếp đến, hàm …

My article: Run Assembly instruction in OllyDBG in Vietnamese

Image
Trong phần này sẽ hướng dẫn cách thực thi câu lệnh trong OllyDBG, đây cũng là cách cho phép người dùng sửa lại code sau khi disassemly để thay đổi hoạt động của chương trình.
Mở file thực thi, ví dụ như vidu.exe:
Bấm chọn M, tức memory tab. Tạo vùng nhớ dành cho data, chọn chuột phải:
Chọn Allocate Memory, nhập kích thước vùng nhớ muốn cấp:
Ta có kết quả:
Di chuyển tới vùng nhớ:
Chọn Dump in CPU
Lưu ý tới:
Góc trên trái: Code thực thi
Góc dưới trái: Nội dung vùng nhớ
Góc trên phải: Giá trị các thanh ghi
Góc dưới phải: Giá trị trong stack.
Để sửa lệnh, chọn Assemble:
Lưu ý là thanh ghi EAX đang có giá trị là 0.
Sau khi sửa:
Để chạy lệnh cần trỏ EIP tới địa chỉ chứa lệnh đó:
Chọn New origin here, sẽ có:
Lưu ý tới EIP, lúc này đã trỏ lới 00401286.
Để thực thi, bấm F7, step ino nhảy vào lệnh đó:
Kết quả sau khi thực thi lệnh.

------------------------------------------------------------
Thanks for reading
--------------------------------------------------------------------------
All my Lab:
Linux Lab -- w…

Exploit writing tutorial part 2 : Stack Based Overflows – jumping to shellcode

Image
Exploit writing tutorial part 2 : Stack Based Overflows – jumping to shellcode     Ở phần trước tôi đã trình bày về cách cơ bản để tìm kiếm một lỗ hổng và cách để xây dựng một exploit hoạt động được. Trong ví dụ đó, chúng ta đã thấy ESP trỏ trực tiếp đến điểm bắt đầu trong buffer ( chúng ta chỉ phải thêm 4bytes để ESP trỏ trực tiếp tới shell code) và chúng ta sử dụng “jmp esp” để cho shell code chạy.    Lưu ý: Phần hai này được viết nối tiếp phần một, chính vì vậy nên dành thời gian để đọc và hiểu đầy đủ phần một trước khi đọc phần hai này.     Chúng ta thấy rằng việc sử dụng “jmp esp” là một kịch bản quá hoàn hảo. Điều đó là không dễ trong mọi hoàn cảnh. Hôm nay tôi sẽ trình bày một số cách để execute/jump tới shell code. Cuối cùng sẽ trình bày về cách bạn phải xử lý khi đối mặt với trường hợp kích thước của buffer quá nhỏ.     Có nhiều phương pháp để buộc phải thực thi shellcode, đó là:     Jump ( hoặc call) thanh ghi trỏ trực tiếp đến shellcode. Với kỹ thuật này, cơ bản là…