티스토리 뷰

문제풀이/bof원정대

BOF 기본

Oth 2016. 8. 14. 18:53

Main


main 부분에 해당하는 변수는 나중에 들어올 수록 더 낮은 주소에 저장된다. 이는 밑으로 쌓이지 않고 위로 쌓이는 스택 구조 때문이다. 



이 때 char[256] 이 있다고 치자 그리고 이 부분에 들어가는 char 배열에 대해 길이 검사를 하지 않는다면 변수가 역순으로 지정되지만 데이터는 반대로 커지는 순서로 저장되는 점을 이용해서 char넘어서서 다른 스택을 침범할 수 있으며 이를 통해서 스택 버퍼 오버플로우 공격이 가능하다. 


디버거 상의 스택에 해당하는 부분인데 더 최근에 해당하는 위부분일 수 록 더 주소가 낮아지는 것을 볼 수 있다. 


char형의 경우 1바이트이지만 실제 저장될 때는 4바이트가 부여되며 3바이트는 쓰레기 값이 들어간다. 


함수 


main에서 함수가 실행될 때의 순서 


1. 매개변수를 저장한다.(함수를 실행할 때 넣는 것들)

2. 리턴 주소와 SFP를 저장한다. 

3. 지역변수를 저장한다.

이 때 SFP, 매개변수, 지역변수를 모두 합친 것을 스택 프레임 이라고 한다. 



'문제풀이 > bof원정대' 카테고리의 다른 글

bof 원정대 wolfman -> darkelf  (0) 2016.08.15
bof 원정대 orc -> wolfman  (0) 2016.08.15
bof 원정대 goblin -> orc  (0) 2016.08.15
bof원정대 gremlin -> cobolt  (0) 2016.08.15
bof원정대 gate -> gremlin  (0) 2016.08.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함