티스토리 뷰

카테고리 없음

and esp, 0xfffffff0

mhibio 2020. 11. 17. 09:56

가끔씩 익스플로잇을 할 때, ida에 나온 stack dummy 가 아래와 같이 나오는 경우가 있다.

이런 상황에서 보통 ebp - 0x40을 보고 dummy0x40 + sfp 이런식으로 준다.

하지만 실제로 계산해보면 dummy0x4c개 만큼 줘야한다.

한번 디버깅을 해보자..

Disasm

해당 바이너리는 32bit 바이너리였는데, 함수 프롤로그를 보면

이렇게 되어있다.

보면은 and esp, 0xfffffff0h 어셈을 실행한다.

Debugging

현재 ESP 값은 0xffffd168이다.

하지만 저 어셈블리를 실행하고 나서는, 당연하게도

당연하게도 ESP값은 0xffffd160이 된다.

간단하게 스택을 정렬해주는 작업인거 같은데, 이렇게 되니까 스택에 0x8 짜리 쓰레기 더미가 생긴다.

그러므로 익스할 때, 0x40 + sfp( 0x4 ) + dummy( 0x8 ) 해서 총 0x4c의 더미가 되는거다.

참고로 ROP payload나 다른 페이로드를 통해서 다시 main으로 돌렸을때, ESP하위 4bit0으로 정렬되있다면 다시 버퍼는 0x44만큼 주면 될것이다.

 

정렬하는 이유도 많이 찾아봤지만 제각각 말이 달라서 일단 포스팅은 보류했다.

대충 CPU에서 특정 바이트 만큼 읽어온다, 속도나 메모리 효율을 향상 시킨다거나 이런 이유들이 있었다.

댓글
댓글쓰기 폼
공지사항
Total
7,033
Today
1
Yesterday
4
TAG
more
«   2021/12   »
      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 29 30 31  
글 보관함