일단 코드를 보면 preg_match함수가 있다. 이것은 preg_match(패턴, 비교할 변수)로 php에서 패턴이 일치하는 문자 혹은 숫자를 판단하기 위해서 사용되는 함수라고 한다.그럼 $pat이 패턴이고 $_GET[val]이 비교할 변수 인 것 같다. get함수로 val의 값을 get함수의 폼에 넣는 것으로 val과 pat을 비교하면 될 것 같다.그럼 이제 pat을 보면 정규식인데 ""은 패턴 만들 때의 기본 이고/은 처음과 끝[]은 안에 존재하는 문자나 숫자 중 하나로 -는 범위를 나타낸다.{}은 앞에 있는 문자를 안에 있는 개수만큼 출력*은 *의 문자를 0개 이상으로 포함한다.\t은 tap으로 url로 인코딩하면 %09가 나온다. 그래서 해석을 하면2bbbbb_.*124.195.162.239.*..
23번 문제는 xss로 악성 스크립트가 담긴 글을 올려 이 글을 읽으면 악성코드가 심어지도록 하는 해킹기법이다.그래서 를 올리면 되므로 제출을 하였더니 no hack이 떴다. 소스를 보면 get방식을 가지고 alert나 script를 쳐도 다 no hack으로 나온다. 그래서 1이나 a를 쳐봤는데 그대로 나오는 것이다 또한 s c r i p t로 띄어서 쓰면 그대로 나온다. 그럼 이 문자들을 연결해서 만들어주면 될 것 같다. url에서 code=에 alert(1);인데 문자 사이에 아무것도 들어가면 안되므로 null을 url인코딩 시키면 a%00l%00e%00r%00t(1);로 적어준다.
문제를 보면 hello world라 쓰여져 있다. 그리고 url을 보면 file=hello라 되어있다.아마 hello world가 hello.txt의 내용인 것 같다. file=hello를 보면 뒤에 확장자가 없다. 그러므로 확장자와 관련해서 풀어야 할 것 같다. password.php를 보면 패스워드를 알수 있을 것 같으므로 세번째 파일을 읽어봐야 할 것 같다. file=password를 쳐봤지만 hello word 가 뜨고 file=password.php를 쳐도 hello word가 뜬다.모르겠어서 해답을 찾아봤는데 리눅스 구조로 되어있다고 한다. 리눅스의 특징 중에서는 파일을 읽을 때 확장자는 상관없이 이름만 같으면 읽을 수 있다하는데 왜 패스워드가 안뜨는 것일까?file변수값이 변조가 되었을 가능..
test.txt를 들어가면 test~~~가 나온다. 뭐지?하고 test.zip을 다운받으니 다운이 안받아진다. 그래서 F12를 누르고 보니까 download이 나오는데 dGVzdC50eHQ=를 base64로 디코딩 시키면 test.txt가 나온다.그러니 test.zip을 인코딩하면 dGVzdC56aXA=이 나와 주소창에 ?down=dGVzdC56aXA=을 뒤에 쓰면 이 나오는데 들어가서 readme를 눌러보면암호를 쓰라고 나온다. 코드에서 주석처리가 된 부분을 보면 암호는 숫자로만 이루어져 있다.이 다음부터는 어떻게 풀어야 할지 몰랐다. 크랙툴을 사용하라 하는데 어떻게 사용하는지 잘 모르겠다...질문: 크랙툴 어떻게 하는건가요??
index.phps를 누르고 들어가보면 index.phps 여기서 get[id]값이 admin이면 문제가 풀리는데if(eregi("admin",$_GET[id])) { echo("no!"); exit(); } $_GET[id]=urldecode($_GET[id]); 에서 urldecode가 있어서 admin을 인코딩해서 넣어보았다. 하지만 문제가 안 풀렸다.admin을 인코딩하면 %61%64%6d%69%6e인데알고보니 주소창에서 %61%64%6d%69%6e값은 url이라 디코드를 하면 admin이 나와 eregi함수에 걸려서 안된다는 것이다.따라서 %61%64%6d%69%6e한번 더 인코딩한 %2561%2564%256d%2569%256e값을 하면 url이라 디코드를 한 뒤에 %61%64%6d%69%6e이..
24번의 코드 소스를 보면 로 주석처리가 되어있어서코드를sourece:index.phps로 고쳐서index.phps가 뜨면 그것을 누르고 주소 창을 이동하였다.그러면 소스코드가 나오는데 여기서 ip가 127.0.0.1이면 문제가 해결된다.만약 쿠키에 REMOTE_ADDR가 있으면 ip가 들어가게 된다.그런데 12 대신 제거되고 7. 0.대신 제거가 되므로127.0.0.1이 되기 위해서는 RMOTE_ADDR에 112277..00..00..1이 들어가야 한다.그러므로 쿠키를 새로 생성을 하였다.생성하여 실행하면 문제가 풀린다.
4번 문제에 들어가보니YzQwMzNiZmY5NGI1NjdhMTkwZTMzZmFhNTUxZjQxMWNhZWY0NDRmMg==이런 코드가 있었다. 끝에 ==이 있는 것보니 base64코드 인것같다. 그래서 디코딩 해보았더니c4033bff94b567a190e33faa551f411caef444f2로 되었다. 그래서 base64로 계속 디코딩해보았지만 다른 이상한 글자가 나와서 다른 코드라 생각을 하였다.이것 저것 찾아보고 SHA-1인 것을 알았다.그래서 코드를 돌려보면 test가 나와 password에 쓰면 끝
