본문 바로가기

/LOB

LOB #4 goblin - argv[2] + NOP Sled이용

https://rsy99.tistory.com/42에서 main 함수에서 <main+194>에 breakpoint를 건 이후를 기준으로 한다!

 

먼저 argv[2]의 주소를 알아내야 한다.

 

일단 argv[1][47]이 "\xbf"가 되어야 하므로 "\xbf"*48을 해준다.

그 후 " "(공백)를 추가 후 argv[2]를 삽입해줘야 한다.

우리는 argv[2]와 NOP Sled를 모두 이용할 것이므로 argv[2]에 "\x90"*100+"25byte shellcode", 총 125byte가 필요하다.

위와 같이 payload를 작성해준다.

 

그 후 "A"(41)이 나타나는 주소공간을 찾아주어야한다.

위에서 "00" 이후가 argv[2]의 주소공간이다! argv[2]의 공간 중 하나를 골라 ret에 넣어준다

 

ret -> 0xbffffc10

 

- payload 작성

buffer(40)+sfp(4) = 44byte만큼 아무값으로 채워주고 ret에 방금 구한 argv[2]의 주소(0xbffffc10)을 넣어준다.

그 후 공백을 두고, "\x90"*100+"25byte 쉘코드"를 작성한다.

위와 같이 payload를 완성한다.

 

- exploit

공격에 성공한 것을 확인할 수 있다!

 

아래 블로그에서 argv[2]의 주소를 찾는 다른 방법을 알 수 있다

출처 : https://d4m0n.tistory.com/58

'Write Up > LOB' 카테고리의 다른 글

LOB #6 wolfman  (0) 2019.11.14
LOB #5 orc  (0) 2019.11.11
LOB #4 goblin - NOP Sled 이용  (0) 2019.11.11
LOB #3 cobolt  (0) 2019.10.10
LOB #2 gremlin  (0) 2019.10.10