|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


1576, 1/79 |
![]() |
![]() |
![]() |
![]() |
|
supershop | ||||||
|
Phrack 14-49 문서 내용 중 질문입니다. | ||||||
|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1500 [복사]
Hit : 3778 Date : 2011/07/09 04:46
|
|||||||
| ![]() |
| |
| W.H. | 음... 제가 이해력이 부족한건지 이해를 못하겟네요.. http://www.hackerschool.org/HS_Boards/data/Lib_system/aleph.txt 이게 한글 번역본인데 이거 한번 보세요 아 이해했네요 d) 문자열 "/bin/sh"의 주소의 주소를 EBX 레지스터에 복사한다. e) 문자열 "/bin/sh"의 주소를 ECX 레지스터에 복사한다. 이고 소스에선 0x80002c5 <__execve+9>: movl 0x8(%ebp),%ebx "/bin/sh"의 주소를 EBX로 복사한다. 0x80002c8 <__execve+12>: movl 0xc(%ebp),%ecx name[]의 주소를 ECX로 복사한다. 인데 /bin/sh 가 0x00010000에 있다고 하고 0x10101010에 0x00010000란 값있으면 아규먼트에는 그 0x00010000이란 값이 아니라 0x00010000을 가리키고 있는 0x10101010이 들어가야 하는겁니다. 그래서 d) 문자열 "/bin/sh"의 주소의 주소를 EBX 레지스터에 복사한다. 입니다. |
2011/07/12 | |
| supershop | 답변 감사합니다. 제가 이상하게 여겼던 것은 스택을 그려가며 분석을 해보면 /bin/sh의 주소의 주소는 ECX에 저장되고 /bin/sh의 주소는 EBX에 저장이 되기 때문입니다. 그리고 저 a)~g) 다음에 보면, movl string_addr,string_addr_addr movb $0x0,null_byte_addr movl $0x0,null_addr movl $0xb,%eax movl string_addr,%ebx ; /bin/sh의 주소를 EBX에 복사 leal string_addr,%ecx ; /bin/sh의 주소의 주소를 ECX에 복사 leal null_string,%edx int $0x80 movl $0x1, %eax movl $0x0, %ebx int $0x80 /bin/sh string goes here. 처럼 d)와 e)랑 아귀가 맞지 않습니다. 이를 저자가 실수로 d)와 e)를 잘못 쓴것이 아닌가요? |
2011/07/12 | |
|
|