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]의 주소를 찾는 다른 방법을 알 수 있다
'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 |