LOB 4번 goblin
Wargame/Load Of Buffer overflow2017. 5. 7. 14:55
#LOB 문제를 풀 때는 bash2 명령어를 꼭 입력해야한다. LOB는 더미가 없다.
코드를 보면
길다.
이전과는 다르게 에그헌터라는 환경변수를 비워주는 코드가 적용되어있고
argv[1][47]이 \xbf가 아니라면 stack is still your friend라는 문구가 나오게 되어있다.
환경변수에 쉘 코드를 넣는 풀이는 이제 안 된다.
그래서 argv[2]를 이용하여 문제를 풀기로 했다.
argv[2]의 주소를 알아야한다. argv[2]의 주소는 ebp 기준 8byte+argv[1]의 길이라고 한다.
그러니 ebp의 주소를 알아야한다. ebp 주소는 gdb 명령어를 이용하여 알아낼 수 있다.
지금부터 알아내보자.
strcpy 부분에 break를 걸고 stack is still your friend 문구가 뜨지않게 하기 위하여 48바이트 때는 \xbf를 채우고
그 뒤에는 nop와 쉘코드를 넣었다.
ebp 주소를 알아냈다. 이제 이 주소에 56파이트를 더하면 argv[2]의 주소가 나올 것 같다. 56은 16진수로 \x38이니 더하면
argv[2]의 주소가 나왔다. 이제 페이로드를 작성할 수 있겠다.
페이로드는 [버퍼 크기+sfp] + argv[2] 주소 + argv[2]에 들어갈 nop * 50 + shellcode + nop *50 으로 했다.
끗
'Wargame > Load Of Buffer overflow' 카테고리의 다른 글
LOB 6번 wolfman (0) | 2017.05.11 |
---|---|
LOB 5번 orc (0) | 2017.05.10 |
LOB 3번 cobolt (0) | 2017.05.02 |
LOB 2번 gremlin (0) | 2017.05.02 |
LOB 1번 gate (0) | 2017.05.02 |