22074, 1/1104 회원가입  로그인  
   p0wermilk
   System.png (31.0 KB), Download : 0     [오른쪽 버튼 눌러 다운 받기]
   이 책에 오류라고 봐야 되나요?

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Board&no=37511 [복사]



"윈도우 시스템 해킹 가이드"라는 책인데요.

182페이지에 보면 소스 코드가...




#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
    char readbuf[2000]={0,};
    char printbuf[500]={0,];
    printf("# text reader #\n");
    if(argc!=2) {
        printf(" Usage : reader.exe filename\n", argv[0]);
        exit(1);
    }
    FILE *f = fopen(argv[1], "r");
    fgets(readbuf, 2000, f);
    strcpy(printbuf, readbuf);
    printf("File Contents : %s\n", printbuf);
}

위와 같은데요.
소스 코드는 메개변수(오른쪽에서 왼쪽 순서)부터 지역변수(위에서 아래순서)까지
높은 주소에서 낮은 주소로 할당합니다.
책에서 나오는 내용은

"버퍼는 500바이트인데 500개 이상의 바이트가 복사되면 과연 어떤 일이 벌어질까?
다음 그림과 같이 예상치 못한 값들이 덮어씌워져서 변조가 된다. SFP가 변조되어
이전 스택 프레임으로 돌아갈 수 없으며, RET가 변조되었으므로 함수 호출 이전의
코드로 돌아갈 때에도 에러가 발생한다"



만약 책에서 나오는 내용이 논리적으로 맞을려면
printbuf 변수와 readbuf 변수의 위치가 바뀌어야 되는 거 아닙니까?
strcpy에 의해 readbuf에서 printbuf로 복사한다 하더라도
결국은 printbuf에서 오버플로우 되지만 readbuf에선 1500바이트까지 덮여지고
500바이트가 남게 되잖아요. 그럼 SFP랑 RET까진 덮어씌워지지 않을건데...

  Hit : 199     Date : 2021/05/16 12:48
[불법/스팸글로 신고하기]



    
turttle2s 먼저 선언되었다고 해서, 항상 높은 주소에 위치하는게 아니더라구요 2021/05/22  
p0wermilk turttle2s // 아, 그렇습니까? 저는 먼저 선언된 변수가 높은 주소에 위치해 있다고 알고 있는데
제 생각이 틀린 이유가 뭔지 알려주실 수 있나요?
2021/05/22  
p0wermilk 다른 해커분들이 당연히 아실 것 같은 지식도 저는 모르는 게 있으니...
저는 무지한 수준입니다.
2021/05/22  
cd80 먼저 선언된 변수가 높은 주소에 위치해 있게 만드는 컴파일러 또는 컴파일 옵션이 있을 뿐 C표준에서 규정해놓은것은 없습니다
소스코드만 보고 메모리 레이아웃을 그리는건 별로 신뢰성이 높지 않아요
2021/05/23  
p0wermilk cd80 // 그렇다면 메모리 레이아웃을 정확히 알려면 디버깅을 해야 되는 겁니까? 2021/05/23  
turttle2s 네 소스코드 분석만으로는 부족한 이유 중 하나에여 2021/05/23  
     [공지]해커스쿨 이용수칙 2021/04/11 수정판 [11] 한승재 01/05 3630
22073   동기부여할 말이 필요합니다.     ntcrash
06/08 68
22072 비밀글입니다  스승님구하고있습니다 도움을주세요     JGX004
06/07 3
22071   해커즈[3]     scube
06/04 130
22070   해킹 보안 관련 과외를 진행합니다.[1]     bluewindsoul
05/29 219
22069   그 경지까지 올라가신 분들 인정합니다.     p0wermilk
05/18 356
22068   더 이상 멘붕하지 않을렵니다.     p0wermilk
05/16 181
  이 책에 오류라고 봐야 되나요?[6]     p0wermilk
05/16 198
22066   윈도우 디버깅 심볼 다운로드 작동 안 되나요?[1]     p0wermilk
05/16 128
22065   해킹과외선생님있으신가요[1]     dfdrdc1211
05/12 286
22064   프로젝트 같이 할 동무 모집합니다.[2]     eonion88
05/04 300
22063   웹해킹 과외 선생님[1]     corverous67
04/30 338
22062   디지털 포렌식 챌린지 2021     한승재
04/29 310
22061   연구소 문서실을 이용하고 있습니다.     p0wermilk
04/27 275
22060   도움 좀 주세요     shbj030100
04/27 190
22059   해킹과외 선생님찾습니다[1]     donghyun1012
04/24 383
22058   해킹과외 선생님 찾습니다.     ploplo33
04/23 209
22057   보안 귀족한테 고소먹었습니다.     nninni79
04/20 624
22056   저처럼 공부하시는 분 계시나요?[2]     p0wermilk
04/19 417
22055   약간의 암기? 아니면 이해?[2]     p0wermilk
04/18 235
1 [2][3][4][5][6][7][8][9][10]..[1104]

Copyright 1999-2021 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com