LOB orc Write-Up

2019. 7. 30. 22:04
728x90
728x90
728x90

LOB orc 풀어보자.

 

[사진 1]

이전 문제와 다른 점은 마지막에 buffer 변수를 0으로 초기화 한다. 하지만 이전 문제와 동일하게 풀면 이미 ret가 shellcode의 주소로 변조되기 때문에 이전 문제와 동일하게 풀면 된다.

 

[사진 2]

위와 같이 전달 인자의 48번째 값을 "\xbf"로 주면 바로 종료되지는 않는다.

 

 

[사진 3]
[사진 4]

wolfman 파일을 다른 이름(kolfman)으로 복사하고 main 함수의 어셈블리어 코드를 보면 main+135 ~ main+146 구간이 argv[1][47]이 "\xbf"인지를 확인하는 곳이다. 그리고 main+189의 strcpy 함수를 호출하기 전에 ebp-0x28 주소를 eax 레지스터에 저장하고 있다. 즉, 이 곳이 buffer 변수의 시작점이다.

 

 

[사진 5]

따라서 스택은 위와 같이 형성될 것이고 argv 인자를 통해 44bytes를 입력하면 ebp까지 변조할 수 있다.

 

 

[사진 6]

gdb를 통해 [사진 3]에서 확인했던 main+146에 브레이크 포인트를 설정하고 인자로 임의의 값 "\x90" 47bytes와 "\xbf", shellcode 용도의 50bytes를 입력하였다. 그리고 edx 레지스터를 확인하면 0xbffffc59에 "\xbf" 값이 들어가고 이후엔 shellcode 용도로 입력한 "\x90" 값이 들어가 있다.

그리고 그 주소는 0xbffffc5a이다.

 

 

[사진 6]

따라서 위와 같이 임의의 값 "\x90" 44bytes로 ebp까지 변조하고 ret는 [사진 6]에서 확인한 shellcode 주소인 0xbffffc5a + @로 변조하자. 그리고 shellcode를 추가로 입력해주면 변조된 ret는 shellcode를 실행할 것이다.

그러면 wolfman 계정의 password를 확인할 수 있다.

728x90
728x90

'Wargame > LOB' 카테고리의 다른 글

LOB darkelf Write-UP  (0) 2019.07.30
LOB wolfman Write-Up  (0) 2019.07.30
LOB goblin Write-Up  (0) 2019.07.30
LOB cobolt Write-Up  (0) 2019.07.30
LOB gremlin Write-Up  (0) 2019.07.30

+ Recent posts