slide-image

LOB

[Load Of Buffer overflow]

#05 :orc->wolfman

 

 

이번에도 정리용.

일단 wolfman.c의 코드는 밑과 같다.

orc문제와 크게 다를 게 없지만 추가된 점은 bufferhunter라고 buffer도 앞에서 40바이트는 0으로 초기화한다.

그러면 이제 RTL을 쓰거나 뒤에 쉘코드를 삽입해 그 쉘코드 시작부분의 주소를 리턴 어드레스로 넣는 것을 생각할 수 있었다.

(근데, 48번째 인자가 bf여야하므로, RTL은 불가능하다. (공유 라이브러리의 주소는 0xbf로 시작하지 않음))

 

...더보기

 

일단 카피하고 디버깅해서 버퍼의 크기를 혹시 모르니 체크한다.

 

캡처를 못했는데 buffer 크기는 40바이트가 나왔고, 그러면 sfp까지 4바이트, 그리고 리턴어드레스 4바이트, 뒤에 쉘코드는 25바이트 짜리를 쓰려고 한다. 그러면 총 44바이트를 아무거나 채운 후에, 일단 임시로 \xbf\xbf\xbf\xbf을 리턴어드레스로 주고(인자의 인덱스 47번째 바이트가 \xbf인지를 검사하므로), 쉘코드를 삽입하고 gdb를 통해 스택의 값을 살펴보았다.

 

esp전의 40바이트부터 100워드바이트만큼을 살펴보았더니, 0xbffffe0부터가 쉘코드 값이 들어있는 것을 알 수 있었다. (사진에는 없다..)

그래서 이번에는 temp가 아닌 wolfman으로 리턴어드레스를 \xe0\xfe\xff\xbf로 바꾸어서 똑같이 페이로드를 작성했다. 성공.

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

[LOB] darkelf->orge  (0) 2019.03.28
[LOB] wolfman->darkelf  (0) 2019.03.28
[LOB] goblin->orc  (0) 2019.03.28
[LOB] cobolt->goblin  (0) 2019.03.28
[LOB] gremlin->cobolt  (0) 2019.03.28