telnet으로 접속해

open -l gate [주소]를 입력해주면 된다.

'war game > LOB' 카테고리의 다른 글

LOB-level20(remote BOF)  (0) 2019.07.04
LOB-level19(fgets + destroyers)  (0) 2019.07.04
LOB-level18(plt)  (0) 2019.07.03
LOB-level17(function calls)  (0) 2019.07.03
LOB-level16(fake ebp)  (0) 2019.07.03

이번 문제는 remote bof이다. 거의 처음 접해본 문제여서 이것 저것 찾아보느라 오래걸렸다. 문제를 보면 recv에서 bof가 일어나는것을 볼 수 있다. 공격방법은 [buffer+44]+[ret]+[nop]+[shellcode]이다.

다만 서버에 ret주소를 모름으로 brute force를 사용해야한다.

맥북이 먼가 잘 안되서 워룸컴으로 진행했다.

우선 해당 터미널의 주소를 파악하고

nc로 4444포트에 접속해 놓는다.

워룸컴에는 peda가 있음으로 이용해 쉘코드를 만들고

페이로드를 작성한 뒤

실행시켜주면

아까 열어둔 포트에서 연결이 되었다고 뜬다~

 

https://d4m0n.tistory.com/93

 

[Linux/x86] Shell Reverse TCP Shellcode

Shell Reverse TCP Shellcode 이번 글에서는 Shell Reverse TCP Shellcode를 만들어 볼 것이다. Shell Reverse TCP Shellcode는 Local이 아닌 Remote 환경에서 대상 시스템의 쉘을 탈취하고자 할 때 사용된다. Rem..

d4m0n.tistory.com

TCP Shellcode 만드는 법

https://eunice513.tistory.com/275

 

[LOB] Level20: xavius → death_knight [完]

death_knight /* The Lord of the BOF : The Fellowship of the BOF - dark knight - remote BOF */ #include #include #include #include #include #i..

eunice513.tistory.com

peda로 쉘코드 만드는 법

 

https://k1rha.tistory.com/entry/Hackerschool-몽이형이-쓰신-리모트-버퍼오버플로우-총-정리remote-buffer-overflow-theory-by-mongil

 

Hackerschool 몽이형이 쓰신 리모트 버퍼오버플로우 총 정리(remote buffer overflow theory by mongil)

리모트 버퍼 오버플로우 총정리 made by Hackerschool_mongil 이번 WGD에선 데몬 형태로 작동하는 네트워크 프로그램에 대한 버퍼 오버플로우 공격 기법들에 대해 학습해 보도록 하겠다. 지금까지 우리는 로컬 영..

k1rha.tistory.com

remote bof 총정리

'war game > LOB' 카테고리의 다른 글

mac OS LOB실행  (0) 2019.07.04
LOB-level19(fgets + destroyers)  (0) 2019.07.04
LOB-level18(plt)  (0) 2019.07.03
LOB-level17(function calls)  (0) 2019.07.03
LOB-level16(fake ebp)  (0) 2019.07.03

음 해당 문제를 보니 이번에는 stack, 코드영역 둘다 ret에 못 쓰고, 심지어 library를 사용해도 leave, ret를 만나면 나가리 되는 것 같다.

library함수중 leave, ret가 없는 함수를 찾거나 해야할 텐데... 고민하던중 이번에는 이전처럼 argv로 인자를 받지도 않고, gets가 아닌 fgets로 받는 것을 볼 수 있다.

보니 stdin에 입력받아 buffer에 씌우는 것 같은데 그럼 stdin주소를 보면 넣은 인자값이 있지 않을까 생각했다.

main+6부분이 stdin부분을 받는 것 같다. bp를 걸고 확인해 보니

저렇게 들어가 있다. 아마 아직 인자를 안받아서 텅 비어있는 듯 하다.

인자를 받으니 stdin에 공간이 생겼다.

확인해보니 0x40015000에 인자를 받아준다.

그럼 쉘코드를 저곳에 넣고 ret를 저 주소로 해주면 되지 않을까..?

성공~

'war game > LOB' 카테고리의 다른 글

mac OS LOB실행  (0) 2019.07.04
LOB-level20(remote BOF)  (0) 2019.07.04
LOB-level18(plt)  (0) 2019.07.03
LOB-level17(function calls)  (0) 2019.07.03
LOB-level16(fake ebp)  (0) 2019.07.03

우선 문제를 보니 ret자리에 strcpy의 주소를 맞춰줘야하고, strcpy의 ret는 AAAA로 초기화해준다.

공격은 [system주소]+[AAAA]+[/bin/sh주소]+[nop*35]+[strcpy주소]+[AAAA]+[buf+48주소]+[buf시작주소]로 하면 될 것 같다.

 

음 실패. 역시 주소가 안맞나보다...

주소를 확인해보면 buf시작주소 = 0xbffffbb0, buf+48주소 = 0xbffffbe0이다.

가볍게 해결~

'war game > LOB' 카테고리의 다른 글

LOB-level20(remote BOF)  (0) 2019.07.04
LOB-level19(fgets + destroyers)  (0) 2019.07.04
LOB-level17(function calls)  (0) 2019.07.03
LOB-level16(fake ebp)  (0) 2019.07.03
LOB-level15(no stack, no RTL)  (0) 2019.07.02

일단 main문 길이보고 한번 놀라고 이것저것 존재하는 함수보고 한번 더 놀랐다.  느낌을 보니 맨처음 ret주소는 DO를 가르켜야 된다 했으니 그 뒤로 계속 함수를 호출해주면 될 것 같다.

nm명령어를 써주면 각 함수의 주소가 순차적으로 나온다. 이제 공격로드를 작성해보자.
[버퍼44]+[DO]+[GYE]+[GUL]+[YUT]+[MO]+[/bin/sh]

역시 저렇게 넣으면 안되는 듯 하다.

/bin/sh주소를 찾아주자. 코드를 보면 버퍼 48부터 100자리까지 지우지 않는 것을 볼 수 있다.

A로 ret를 덮고, 인자 받을 부분을 B로 채운 뒤 C를 잔뜩 넣으니 이런식으로 나온다.

/bin/sh의 주소는 0xbffffc38이겠다.

잉 아니네.

적게 채워주면 주소가 달라지나보다. 

0xbffffc58로 다시 가면~

성공~

'war game > LOB' 카테고리의 다른 글

LOB-level19(fgets + destroyers)  (0) 2019.07.04
LOB-level18(plt)  (0) 2019.07.03
LOB-level16(fake ebp)  (0) 2019.07.03
LOB-level15(no stack, no RTL)  (0) 2019.07.02
LOB-level14(RTL2, only execve)  (0) 2019.07.02

라이브러리도, 스택도 사용할 수 없다. fake ebp로 풀어보자.

buf 주소를 찾고.

[쉘코드]+[nop]+[쉘코드-4]+[leave코드주소]로 공격하자

실패.

core을 분석해보니 주소가 다르다.

성공~

최종 공격로드는 [쉘코드주소]+[쉘코드]+[nop]+[buf-4]+[leave코드주소]였다.

'war game > LOB' 카테고리의 다른 글

LOB-level18(plt)  (0) 2019.07.03
LOB-level17(function calls)  (0) 2019.07.03
LOB-level15(no stack, no RTL)  (0) 2019.07.02
LOB-level14(RTL2, only execve)  (0) 2019.07.02
LOB-level13(RTL1)  (0) 2019.07.02

+ Recent posts