'RTL'에 해당되는 글 2건

  1. 2010.03.28 [ CodeGate 2010 ] Challenge 5 풀이 (2)
  2. 2010.03.16 [ Padocon 2010 ] Warmup 100

2010.03.28 18:42 WarGame


문제 4번과 소스는 같습니다



분명 4번의 문제에 BOF 방어 기법이 추가 되어있는 것이겠죠

혹시 몰라 시도해봤습니다만

여지없이막히는군요

아마 stack 내에서 쉘 코드 실행은 막는 매커니즘이라고 생각됩니다

그럼 RTL 기법으로 한번 해볼까요



먼저 main 함수를 disasm 했을때 나온 결과인데

ebp가 아닌 esp로 인자들을 참조 하는 것을 볼 수 있습니다

ebp를 조절해서 공격하는 Fake ebp 보다

esp를 조절할 수 있는 Ret 를 이용해야 하겠죠

그럼 우리가 조작 해야 할 부분을 봅시다

다음은 func 함수의 EBP 부분입니다



노란색으로 칠한 부분이 바로 우리가 입력한 값이 들어있는 곳을 가리키는 포인터 입니다

2번째로 칠한 노란색 부분은 뒤에 00 부분도 있어 execl의 인자가 되기 적합하군요

그러니까 우린 0x8048568 부분을 참조하고 있는 곳을 앞으로 6단계 만큼 당겨야 합니다

 전에도 몇번 나온 적이 있었죠

RET을 이용합니다





그럼 전체적 코드의 구성을 살펴봅시다

1.execl 의 인자 [ /bin/sh ]

2 ebp까지 덮을 dummmy code

3. RET 코드 6번

4. execl 함수의 주소


execl 함수는 ctf4.codegate.org 에 접속해서

디버거를 실행하고 주소를 확인하시면 됩니다

물론 그 주소도 랜덤하지만 stack 에 비해서 상당히 좁기 때문에

몇번 하다보면 설정한 주소에 걸릴 겁니다

최종 코드는 다음과 같습니다

"/bin/sh\x00" + "\x90"*260 + "\x75\x85\x04\x08"*6 + "\xc0\x70\x1a\x00"




P.S 이 방법은 4번에서도 유효합니다

Posted by LinkC

2010.03.16 10:20 WarGame


Padocon 의 시스템 쪽 문제로군요

물론 문제를 입수하진 못했고 어떤 식으로 문제가 이루어졌는지만

파악 하고 있습니다

자세한 풀이는 http://nibbles.tuxfamily.org/?p=775 에 올라와 있군요

프랑스어로 짐작되는 글이지만 -,.-

풀이 보는데는 지장이 없습니다

어셈블리어는 만국 공통어라 편하군요 :D

이번 포스팅은 이런 방법도 있구나~ 하는 걸 소개 하기 위함입니다

먼저 문제 소스는




보편적인 BOF 취약점 소스로군용

처음 봤을땐

RTL로 될 것 같았는데 생각해보니

Libc 크기가 16MB 이하라서 앞에 널 바이트가 들어가버리게 되는군요

그렇다면 Fedora Core 4에서 썼던

Ret Execl Overflow 는 어떨 까요

[ 이에 관한 문서는 http://linkc.tistory.com/entry/26-kernel-에서의-BOF 에서 확인 하실수 있답니다 :D ]

execl 함수에 접근하는 것은 좋으나 

그 폴더엔 쓰기 권한이 없어서

symbolic link 로 연결해 주는 것도 곤란합니다

그 때 발견한게 저 프랑스 친구가 쓴 글인데요

시나리오는 간단합니다

스택 값을 하나씩 쫓아올라가서

argv[0] 의 값을 execl 함수로 바꿔버리는 거죠

그렇게 되면 인자 전달에 있어서 고민 할 이유도 없고 말입니다





여기 보이는 stack 값에서 쭉쭉 위로 올라가면 된다는 거죠



이 때 이용하게 되는게 ret 명령어 입니다

execl 함수 값을 argv[0] 값에 넣어주면

나머지 인자는 주르륵 execl 로 타고 들어가는 겁니다

argv[0] 값 까지 ret으로 박아넣고 나머지는 execl 인자를 넣으면 되겠죠

자세한 결과는 위 링크를 타고 들어가서 보시면 됩니다

간단하지만 확실한 방법이죠 음음

기억도 되살리고 배운것도 있는 좋은 경험이었네요  :D

'WarGame' 카테고리의 다른 글

[ CodeGate 2010 ] Challenge 11 풀이  (0) 2010.03.19
[ Codegate 2010 ] Chanllenge 1 풀이  (2) 2010.03.17
[ Padocon 2010 ] Warmup 100  (0) 2010.03.16
[Python Challenge] level5 풀이  (2) 2010.03.11
[Python Challenge] level4 풀이  (0) 2010.03.10
[Python Challenge] level3 풀이  (0) 2010.03.09
Posted by LinkC
이전버튼 1 이전버튼

블로그 이미지
LinkC

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

공지사항

Yesterday73
Today54
Total320,227

달력

 « |  » 2018.10
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

최근에 받은 트랙백

글 보관함


. .