본문 바로가기
워게임/LOB

LOB - goblin

by meanjung 2021. 7. 31.

extern?

c언어의 외부 변수

즉, 외부에 있는 변수를 사용하기 위한 키워드

 

extern char **environ 은 외부에 있는 environ이라는 변수를 가져오겠단 말이군!!

 

근데 environ이 환경변수를 뜻하는 것 같아서 "c언어 environ"을 찾아봤다.

 

<프로그램 실행 환경 값을 가지고 있는 광역 변수 environ> - [출처 : https://badayak.com/4378]

extern char **environ; ☞ 외부 참조 변수로 선언 이라고 한다....

 

 

 

그렇다면 저 //egghunter 부분은 환경변수를 모두 호출해 0으로 바꿔버리는 놈이군...

내가 여태 했던 방식이 안 먹히겠다ㅜ

 

 


 

[gdb로 파악할 수 있는 것]

스택 구조를 파악할 수 있다.

------------------------

buffer[40] <- [ebp-40]

------------------------

ebp

------------------------

ret <- [ebp+4]

------------------------

argc <- [ebp+8]

------------------------

argv <- [ebp+12]

------------------------

 

 

[첫 번째 풀이]

환경변수는 이용할 수 없지만 argv를 이용하면 된다.

cat /proc/self/maps -> 스택의 가장 아래 주소를 알 수 있다. (또한, ASLR이 걸려있지 않은 것을 파악할 수 있다.)

환경변수가 차지하는 바이트는 그닥 많지 않을 것이다.. 다 복붙해서 len을 보면 대충 알 수 있다.

 

argv에 "A"*40 + "리턴주소" + "\x90"*0x1000 + "쉘코드" 를 넣고, 

"리턴주소"를 0xc0000000 - 0x1000 + 1로 잡으면

"리턴주소"에는 nop가 계속 위치하다가 쉘코드를 발견할 것이다.

 

즉, 이렇게 익스할 수 있다.

 


 

[두 번째 풀이]

cp orc tmp ☞ orc가 goblin 권한으로 복사되어 gdb로 분석할 수 있다. + 이렇게 해야 나중에 core 파일이 생성된다.

core 파일
- 비정상적으로 종료되었을 때 현재 프로그램의 상태를 기록하는 파일
- 디버깅 프로그램(gdb)을 이용해서 어떤 상태였는지 확인 할 수 있다.

[ 출처: https://jh911.tistory.com/entry/linuxCore파일-gdb-bt ]

./tmp `python -c 'print "A"*44+'\xbf"*4'` ☞ segmentation fault 발생, core 파일이 생성된다.

gdb -c core ☞ ret이 0xbfbfbfbf으로 덮이면서 eip=0xbfbfbfbf 이 되면서 jmp eip에서 오류가 발생해서 segmentation fault가 난 것이다.

 

core 파일을 분석하면 gdb 환경에서의 주소가 아닌, 실제 주소를 파악할 수 있다.

 

ret이 0xbfbfbfbf로 덮이면서 비정상 종료됐으니까 info reg으로 esp의 주소 = ret 바로 위(높은) 주소라는 것을 알 수 있다.

ret = pop eip; jmp eip인데

jmp eip에서 프로세스가 죽었으므로

esp는 ret(==ebp+4)+4의 주소를 담고 있음을 알 수 있다.

 

 

 

 

 

위에 나타낸 스택 구조이므로 buffer의 주소 == (원래)ebp-40 == (방금 구한)esp + 48

즉, 처음에 익스할 때 retbuffer의 주소 == esp + 48 == 0xbffffb10 + 0x30 == 0xbffffae0으로 하면 된다.

 

정리하면, "쉘코드(25bytes)" + "더미 char"*19 + "0xbffffae0" 로 익스할 수 있다.

'워게임 > LOB' 카테고리의 다른 글

LOB - troll (환경변수)  (0) 2021.08.01
LOB - darkelf  (0) 2021.07.31
LOB - wolfman (심볼릭 링크)  (0) 2021.07.31
LOB - orc  (0) 2021.07.31
[풀이X흐름O]LOB - gate  (0) 2021.07.30

댓글