;============================================================================================================================================= ; cgi_2.asm ;This program shows the environment variables ; Algorithm ;C1: Configure the page properties ;C2: Show all present variables ;(C)I don't take any responsibility for the use of this program ; Zedr0n -- connection closed ;============================================================================================================================================= ;============================================================================================================================================= ; Options/Declarations ;============================================================================================================================================= .386 .model flat, stdcall option casemap:none include windows.inc include kernel32.inc includelib \masm32\lib\kernel32.lib CR equ 0Dh LF equ 0Ah ;============================================================================================================================================= ; Data segment ;============================================================================================================================================= .data HTML db "Content-type: text/html",CR,LF,CR,LF db "" db "" db "" db "" db "" db "" db "CGI variables" db "" db "" HTML_size equ $-HTML end_html db "" db "",0 end_size equ $-end_html var_name_1 db "REQUEST_METHOD",0 var_size_1 equ $-var_name_1 var_name_2 db "QUERY_STRING",0 var_size_2 equ $-var_name_2 var_name_3 db "CONTENT_LENGTH",0 var_size_3 equ $-var_name_3 var_name_4 db "CONTENT_TYPE",0 var_size_4 equ $-var_name_4 var_name_5 db "GATEWAY_INTERFACE",0 var_size_5 equ $-var_name_5 var_name_6 db "REMOTE_ADDR",0 var_size_6 equ $-var_name_6 var_name_7 db "REMOTE_HOST",0 var_size_7 equ $-var_name_7 var_name_8 db "SCRIPT_NAME",0 var_size_8 equ $-var_name_8 var_name_9 db "SCRIPT_FILENAME",0 var_size_9 equ $-var_name_9 var_name_10 db "SERVER_NAME",0 var_size_10 equ $-var_name_10 var_name_11 db "SERVER_PORT",0 var_size_11 equ $-var_name_11 var_name_12 db "SERVER_PROTOCOL",0 var_size_12 equ $-var_name_12 var_name_13 db "SERVER_SOFTWARE",0 var_size_13 equ $-var_name_13 var_name_14 db "HTTP_ACCEPT",0 var_size_14 equ $-var_name_14 var_name_15 db "HTTP_USER_AGENT",0 var_size_15 equ $-var_name_15 var_name_16 db "HTTP_HOST",0 var_size_16 equ $-var_name_16 br db "
",0 br_size equ $-br buf_var dd offset var_name_1,offset var_name_2,offset var_name_3,offset var_name_4,offset var_name_5,offset var_name_6 dd offset var_name_7,offset var_name_8,offset var_name_9,offset var_name_10,offset var_name_11,offset var_name_12 dd offset var_name_13,offset var_name_14,offset var_name_15,offset var_name_16,0 bufv_size equ $-buf_var bufvar_size dd var_size_1,var_size_2,var_size_3,var_size_4, var_size_5, var_size_6 dd var_size_7,var_size_8,var_size_9,var_size_10,var_size_11,var_size_12 dd var_size_13,var_size_14,var_size_15,var_size_16,0 bufvar equ $-bufvar_size space db "     ",0 space_size equ $-space ;============================================================================================================================================ ; Variables segment ;============================================================================================================================================ .data? OutHandle dd ? Written dd ? buffer db 256 dup(?) buf_size equ $-buffer i dd ? temp dd ? funt dd ? ;============================================================================================================================================= ; Code segment ;============================================================================================================================================= .code start: pusha invoke GetStdHandle,STD_OUTPUT_HANDLE mov OutHandle,eax cmp eax,INVALID_HANDLE_VALUE jz Exit C1: invoke WriteFile,OutHandle,offset HTML,HTML_size,offset Written,NULL C2: mov i,0 mov temp,1 .while temp!=0 mov ebx,i lea ebx,[ebx*4] mov eax,buf_var[ebx] mov temp,eax invoke GetEnvironmentVariable,temp,offset buffer,buf_size .if eax==0 jmp Go .endif mov funt,eax mov ecx,bufvar_size[ebx] invoke WriteFile,OutHandle,temp,ecx,offset Written,NULL invoke WriteFile,OutHandle,offset space,space_size,offset Written,NULL invoke WriteFile,OutHandle,offset buffer,funt,offset Written,NULL invoke WriteFile,OutHandle,offset br,br_size,offset Written,NULL Go: inc i .endw Exit: invoke WriteFile,OutHandle,offset end_html,end_size,offset Written,NULL popa invoke ExitProcess,NULL end start