22019, 1/1101 회원가입  로그인  
   kes0608
   [re] 스택 때려부수기 문서 보다가 의문점

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


===============================================================================

> char shellcode[] =
>        "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
>        "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
>        "\x80\xe8\xdc\xff\xff\xff/bin/sh";
>
>void main() {
>   int *ret;
>
>   ret = (int *)&ret + 2;
>   (*ret) = (int)shellcode;
>
>}
>
> 이렇게 c언어를 만들면 프로그램이 실행이 되잖아요.
> 왜 실행이 되는건가요. 그냥 포인터 선언만 해놓은거 아닌가요.
===============================================================================

간단하게 설명드리자면..
프로그램 내에서 int 형 포인터 변수 ret하나만 선언하므로
이 변수의 위치는 스택상에서 ebp 바로 아래에 위치합니다.
(물론 컴파일러 버전에 따라 약간의 차이가 생길수도...)

ret = (int *)&ret + 2;
그리고 이 코드가 ret이라는 포인터가 가리키는 주소를
자기 자신의 주소 +2로 바꾸는데, 여기서 +2는 int형은 4바이트이므로
8바이트 상위 주소를 가리키도록 합니다

따라서 ret의 8바이트 상위주소는 ebp+4, 즉 프로그램의 리턴어드레스죠.

이 위치에 shellcode의 주소를 저장함으로써
프로그램이 종료되면서 shellcode가 실행되게 합니다.

정상적인 쉘코드라면 쉘이 실행되겠죠.

  Hit : 12488     Date : 2007/12/12 03:16



    
     [공지]해커스쿨 이용수칙 2021/04/11 수정판 [55] 한승재 01/05 12827
22018   카타고 AI[1]     해킹잘하고싶다
10/01 60
22017   시스코 라우터랑 스위치 케이블 장비 질문이에요.[1]     해킹잘하고싶다
09/22 122
22016   ㅇㅅㅇ     해킹잘하고싶다
08/15 297
22015   요즘 하고 있는 거     해킹잘하고싶다
07/13 508
22014   2위 ㅇㅅㅇ     해킹잘하고싶다
07/13 444
22013   ...     해킹잘하고싶다
03/31 834
22012   ...     해킹잘하고싶다
03/25 817
22011   15년전쯤 이 사이트 보고 꿈을 정했었는데~~~[1]     ambition65
03/20 1219
22010   으앙!!![1]     해킹잘하고싶다
02/05 957
22009   오랜만~     DarkSlayer
12/11 1157
22008   해커스쿨 옛날 BGM[1]     wkfhddl4041
11/07 1260
22007   히잉...     해킹잘하고싶다
11/02 1083
22006   바둑과 장기     해킹잘하고싶다
10/30 1170
22005   나는 언제 애인이 생기나욤...     해킹잘하고싶다
10/27 1248
22004   전국 1위     해킹잘하고싶다
10/27 1191
22003   담배 ㅋㅋ[1]     해킹잘하고싶다
10/27 1196
22002   매트릭스의 파란약을 아십니까..?     해킹잘하고싶다
10/27 1149
22001   ㅇㅇ[1]     해킹잘하고싶다
10/20 1119
22000   옵치 핵감지 프로그램좀 만들어주세요[1]     powerima
10/15 1243
1 [2][3][4][5][6][7][8][9][10]..[1101]

Copyright 1999-2026 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org