Hack me - 35번 문제

Hack me 2015. 7. 15. 16:29

안녕하세요. 오늘은  Hack me 35번을 풀어보겠습니다.

홈페이지로 들어가 35번문제를 눌러주세요.

제목이 RQ코드라고 되어있네요? QR코드가 아니고  RQ코드라 뭔가 이상하네요. 사진을 보시면 QR코드처럼 보이는 그림이 있습니다. 하지만 이건 QR코드가 아닙니다.

위의 코드가 정상적인 코드인데요. 보시면 사각형 구석 쪽에 네모난 그림이 있습니다. 이것을 위치찾기심볼이라고 하는데 모든 qr코드에는 이 심볼이 들어있습니다. 그런데 문제에 나온 QR코드에는 이 심볼이 없네요. 

문제를 보시면 당신의 눈을 믿으시나요. 라고 되어있네요. 한마디로 보이는게 다가 아니란 것입니다. 일단 보이지 않는것을 보기 위해 사진을 다운받아봅시다.

그런데 막상 보니까 별로 숨겨진것이 없습니다. 혹시 몰라서 메모장으로도 열어보았습니다만 알아들을 수 있는 글자를 찾을 수가 없었습니다. 이럴때 우리는 문제제목에서 힌트를 찾을 수 있습니다.

RQ코드 즉 QR코드의 반대말입니다. 반대하니까 또 생각나는 것이 있죠. 색깔입니다.

흰색과 검은색으로 이루어진 QR코드를 반전시켜 RQ코드라 한것은 아닐까? 하고 생각이 들죠.

확인을 위해 그림판에서 그림을 불러옵시다. 그리고 아래 사진처럼 모두 선택을 눌러주세요.

일단 덜완성된 RQ코드입니다. 심볼기호를 한번 그려봅시다. 검은색 페인트 통을 들고 테투리쪽을 찍어주세요.그리고 아래 그림처럼 수정해줍시다.

대충 RQ코드가 만들어졌군요. 우리는 QR코드가 필요하므로 색을 반전시켜 줄 필요가 있습니다. 모두 선택 후 오른쪽마우스 - 색반전을 눌러주세요.

오오 대충 완성이 된것 같습니다. 그런데! 여기서 끝이 아니죠.

문제의 칸을 보시면 텍스트칸입니다. 그림이 들어갈 수 없죠. 이럴땐 qr코드해석이 필요합니다. 간단하게 네이버앱으로 qr코드를 해석합시다.

바로 무언가의 텍스트가 뜨는군요. 텍스트는 Image_processing_for_fun_and_profit입니다. 그대로 입력해 줍시다.


네 이번문제는 간단하군요. 이것으로 문제해결을 마치겠습니다.





'Hack me' 카테고리의 다른 글

hack me - 15번 문제  (0) 2015.07.20
Hack me - 4번문제  (0) 2015.07.13
Hack me - 2번문제  (0) 2015.07.06
Posted by englishmath
,

Hack me - 4번문제

Hack me 2015. 7. 13. 18:57

안녕하세요. 오늘은 Hack me 4번 문제를 풀어보겠습니다.

홈페이지로 들어가 4번을 눌러주세요.

pcap로부터 파일을 추출할줄 아시나요? 라고 되어있군요. pcap란 패킷캡쳐파일을 의미합니다. 그럼 패킷이란 무엇일까요? 패킷은 쉽게 말하면 데이터의 단위라고 보시면 됩니다. 데이터가 네트워크를 통해 전송될때의 단위입니다. 그럼 이 패킷의 파일을 추출할 수 있냐고 물어보네요. 흠.. 밑에 Download가 있습니다. 아무래도 pcap같군요. 한번 다운 받아 봅시다.

알 수 없는 파일 형식이라고 뜨는군요. 평범한 파일이 아닙니다.

앞에서 pcap라고 언급을 하였으니 패킷을 캡쳐한 파일인것 같습니다. 그러면 패킷을 캡처하는 프로그램을 열 필요가 있습니다. 근데 그러한 프로그램이 없으니 일단 설치부터 해봅시다.

일반적으로 패킷을 캡쳐하는 프로그램으론 wireshark프로그램이 있습니다. 홈페이지가 존재하니 홈페이지에서 다운 받으시면 됩니다. www.wireshark.org에서 다운받으세요.

설치가 완료되었다면 실행시켜 봅시다.

네 이것이 와이어샤크의 기본화면입니다. 그러면 아까 받은 파일을 열어봅시다. 메뉴바의 File-open을 눌러주세요. 그리고 아래와 같이 아까 받은 파일을 열어봅시다.

네 열렸군요. 간단하게 설명하겠습니다.

1번은 패킷데이터들의 목록입니다. 

2,3번은 선택한 패킷의 세부내용이라고 보시면 되겠습니다.

자 그럼 여기서 우린 무언가를 추출해야 합니다. 그리고 그 무언가는 패스워드지요. 그럼 방법은 둘째치고 뭘 추출해야 할까요?

일반적으로 패스워드는 글자나 이미지 혹은 동영상입니다. 그리고 그 글자나 이미지 등은 문서에 적혀있겠죠. 즉 우리는 문서를 추출해내야 합니다. 문서를 전송하는 패킷을 찾아야 합니다. 그런데 이 많은 곳에서 어떻게 문서를 전송하는 패킷을 찾냐구요? 간단합니다. 일단 패킷을 보시면 프로토콜이 있습니다. 프로토콜이 무엇인지는 다들 아실겁니다. 어떠한 데이터를 보낼때 지켜야하는 규약이지요. 즉 문서를 보낼때는 문서를 보내다는 규약으로 보내야 합니다. 그럼 문서를 보낼때 쓰는 규약은? HTTP입니다. 지금부터 HTTP 패킷만 추출해 봅시다.

상단의 File - Export objects - HTTP를 눌러줍시다.

여기서 Export란 자신의 데이터를 다른 프로그램이 사용할 수 있는 형태로 저장하는 것을 의미합니다. 즉 HTTP패킷을 다른 형태로 저장시킨다는것을 의미하지요. 패킷만 봐서는 우리가 뭘 모르니 우리가 알아볼 수 있는 형태로 저장시킬 필요가 있습니다. 사진을 보니 한개가 나오는군요. 

host는 주최입니다. 즉 이 패킷은 hack me에서 왔다고 볼 수 있습니다.

형식은 text군요. 일단 저장시켜 봅시다. save As를 눌러 저장시킵시다.

저장 위치를 정하고 Save를 눌러줍시다.

저장이 완료되었습니다만 이것이 또 알수 없는 형식입니다. 음... 일단 우린 http에서 추출한 것이므로 text로 볼 필요가 있습니다. text형식으로 볼 수 있도록 메모장으로 열어줍시다.

더블클릭해서 메모장으로 열어줍시다.

더럽게 깨져있습니다. 우리는 알아들을 수 있는 문구만 봅시다. 쭉 찾아보니 아래 빨간상자 쪽에 Password is %s GzvtcevHkngHtqoRecrKuHwp라고 되어있네요. 음 일단 입력해봅시다.

.... 아니라면서 로그아웃 됩니다.. 다시 로그인해서 문제로 들어가주세요..

아무래도 패스워드이지만 암호화가 되어있는것 같습니다. 앞의 %s도 굉장히 거슬리네요.

그런데 뭘로 암호화를 한건지도 모르겠고.. 뭘로 번역해야 될지도 모르겠습니다. 그래서 다시한번 쭉 살펴봤습니다. 아래 그림을 한번 보시죠.

여기서 type을 보시면 text/plain이라고 되있습니다. 처음 봤을때는 그냥 text인줄 알았는데 지금 보니까 뒤쪽의 plain이 굉장히 거슬리는군요. 알아보니까 palin 솔직한 이란 뜻입니다.

그럼 솔직한 텍스트라는 건데.. 뭔가 이상하잖아요. 그래서 palin text라고 검색해봤더니 암호화되지 않은 텍스트 랍니다.. 즉 우리가 추출한 패스워드는 암호화 되어있지 않는 text라는 겁니다.

Password is %s GzvtcevHkngHtqoRecrKuHwp 이것이 암호화가 된것이 아닌 그냥 막친 것이라고 볼 수 있습니다. 그런데 이 패스워드가 답이 아니다.. 그렇다면 이 문구를 암호화한 패스워드가 진짜 정답아닐까 라고 생각이 드는군요. 그렇다면 이 문구를 암호화 해야 겠습니다.

그런데 대체 뭘로 암호화를 시켜야 할지 감도 안옵니다.. 후.. 

그럼 별수 있나요. 노가다를 뛰어야죠. base64 md5 등 될만한건 전부 해봅시다.

base64는 아니구요.

md5도 아니군요.

URL도 아니네요..

찾다가 무심코 생각이 났는데 혹시 홈페이지에 암호화 프로그램이 있을까 하는 생각이 들더군요. 홈페이지로 가봅시다.

홈, 이사이트에 관한 내용, 도전과제, 순위, 게시판, 채팅, 크랙,  연구내용, 링크 , 로그아웃

이중에서 눈에 띄는게 크랙이 있네요. 크랙은 여러 의미가 있지만 그 중에는 시스템 관리자를 위한 유닉스/리눅스 암호 프로그램의 이름도 포함됩니다. 일단 눌러봅시다.

딱 눈에 띄는 글자가 있습니다. plain text 크... 많이 봐왔습니다. 아무래도 암호화프로그램인 크랙이 맞는 것 같습니다. 그 위에 문구가 하나 있군요. 

  • Currently, we only support crack the ROT correctly
  • 지금 우리는 crack the ROT만 올바르게 지원한다. 뭐 대충 이런 뜻이네요. 그리고 중간에 type이 있습니다. type은 Rot, shift , Xor, vigenere가 있는데 vigenere은 비활성화 되어있구요 실질적으로 Rot, shift , Xor중 하나로 암호화가 가능한 것 같습니다. 그런데 이 셋중에 ROT만 올바르게 지원한다는 군요. ROT으로 한번 암호화 시켜 봅시다.

    입력하자마자 바로 무언가가 뜨는군요. 아 참고로 Cipher text는 암호화된 문구란 뜻입니다.

    이 출력된 문구를 입력해봅시다.

    예~~~~~~~~~ 너무 멋집니다. 아니 그전에 이 홈페이지부터 둘러볼걸 그랬네요. 괜히 시간만 날렸습니다... 암튼 문제해결을 마치겠습니다 . 감사합니다.




    'Hack me' 카테고리의 다른 글

    hack me - 15번 문제  (0) 2015.07.20
    Hack me - 35번 문제  (0) 2015.07.15
    Hack me - 2번문제  (0) 2015.07.06
    Posted by englishmath
    ,

    안녕하세요. 오늘은 Webhacking 33번 문제를 풀어보겠습니다.

    홈페이지로 들어가 33번 문제를 눌러주세요.


    음? 주소가 떠있군요. 한번 눌러봅시다.

    음 ... solve가 없군요. 일단 if문을 하나 봅시다. $_GET[get]의 값이 "hehe"이면 a href =어딘가로 이동된다는군요. get이 따로 없기 때문에 주소창에 입력해줍시다. 앞서 한것처럼 변수를 주소창에 적을때에는 ?를 붙여줘야 합니다.

    Next가 새로 생겼습니다. Next를 눌러주세요.

    ?? 원래대로 돌아왔다? 아 근데 자세히 보니 아까는 33-1이었는데 지금은 33-2입니다. 그리고 링크 주소도 바꼇네요. 바뀐 링크주소를 눌러봅시다.

    이번에도 post에 hehe를 넣어야 되나 봅니다.

    그런데 여기서 주의할점은 post변수의 형식이 $_POST입니다. 그럼$_POST가 뭘까요? 

    원래 데이터를 HTML에서 다른 페이지로 전송할때 두가지 방식이 있습니다.

    POST방식과 GET방식이죠. GET일 경우 편하게 주소창에 입력하면 되지만 POST는 조금 까다롭습니다. 일단 문제페이지에서 개발자 도구를 실행해 주세요. 그리고 아래그림처럼 Edit as HTML을 눌러주세요.


    그리곤 다음과 같이 입력해 주세요.

    이렇게 적어주시면


    다음과 같은 칸과 버튼이 생깁니다. 해석을 하자면

    1. <form method="post" action="lv2.php">

    일단 <form>은 HTML 문서에서 사용자의 입력을 서버로 전달하는 기능을 합니다. 우리는 저런 칸을 만들어야 하므로 당연히 이 내용이 서버로 전달되어야 하는거지요. 그리고 method는 용자 데이터를 넘겨주는 방식을 정하는 겁니다. 아까 말씀하다시피 GET과 POST가 있는데 우리는 POST를 해야하므로 post로 정했습니다. action은 이 입력한 데이터를 처리할 URL주소입니다. 현 문서가 lv2.php 이므로 적어줬습니다.

    2. POST<input type="text" name="post">

    앞의 POST는 말그대로 화면에 출력될 POST 글자 그 자체구요. 그다음에 쓰인 <input>은 웹브라우저 화면에 사용자 정보 입력 형식을 표시할때 쓰입니다. type=text 즉 종류는 텍스트 입력이며 name(이름)은 변수를 뜻하며 앞서 문제에 적힌 변수 post를 입력합니다.

    3. POST2<input type="text" name="post2">

    2번이랑 똑같습니다.

    4. <input type="submit" value="Submit">

    type=submit 는 종류가 submit라는 것으로 submit는 입력한 데이터를 전송하는 버튼을 만든다라는 뜻입니다. value(값)는 말 그대로 버튼의 값이라는 것으로 화면상에 표시할 버튼이름이라 보시면 됩니다.

    5. </form>

    다 끝났으면 슬래시를 붙여 끝냈음을 알립니다.


    자 이제 칸이 생겼으니 거기에 그대로 적어주시면 됩니다. post값은 hehe 그리고 post2의 값은 hehe2입니다. 넣어주시고 submit를 눌러주세요. next가 나오셨으면 눌러서 다음문제로 갑시다.


    후 눌러봅시다.


    변수이름이 myip이군요. 마이 아이피... 주소창에 자신의 ip 주소를 넣으면 될 것 같습니다.


    엔터~

    음? 일단 hint가 있네요. 상당히 어려운 문제 인것 같습니다. 일단 눌러봅시다.


    소스를 보니 password에 md5(time())란 값을 넣어야 되네요. md5란 base64와 같은 디인코딩 도구입니다. 그리고 안에 time이 적혀있는 걸로 보아 time을 md5로 인코딩하라는 뜻 같습니다. 그리고 밑에 힌트는 time이라고 적혀있습니다. time은 시간인데 .. 일단 뒤로가기를 눌러 힌트를 다시 봅시다.


    ??? 뭔가 달라졌습니다. hint값이 달라졌네요. 아무래도 여기 hint는 시간을 나타내는 걸 수도 있습니다. 새로고침을 연타로 해봅시다. 아무래도 점점 증가하는 걸로 보아 시간이 확실한것 같습니다. 그러면 이 값을 md5로 인코딩을 해줄 필요가 있겠습니다. 그런데 문제는 시간은 멈추지 않고 계속 흘러간다는 것입니다. 만약 현재시간에 딱 맞추어서 값을 보낼려면 미리 힌트의 값을 몇십초 더해서 값을 찾은다음 그 값이 나올때까지 계속 엔터를 연타해야 합니다. .... 암튼 현재시간을 잽시다. 그리고 잰 시간에 100정도 더해줘서 md5인코딩을 해주시면 됩니다.

    md5는 저는 http://www.mimul.com/examples/dencoder/에서 했습니다.


    엔터를 눌러줍시다.

    성공하셨나요? 그런데 전 연타를 너무 많이해서 실수로 1초 지났는데 값을 넣어버리고 말았습니다. ..... 타이밍에 맞춰 한번만 엔터칩시다..


    결국 다시 해서 성공했습니다.

    아아아아 왤케 많죠 대체... 누릅시다..


    ㄷㄷ 가장 무서운 소스가 보이는 군요.. 여러분은 아시겠나요?

    echo("<a href=###>Next</a>"); 아직 끝이 아니라는 거지요.. 어우 싫다.

    암튼 변수가 3개 나오는군요. GET, POST, COOKIE 크 정말 다양하게 나왓습


    니다.

    값이 없는 걸로 보아.. 아무래도 아무값이나 넣어도 될것 같군요. 간단하게 1로 합시다.

    일단 쿠키값부터 새로 만들어봅시다 쿠키모양그림을 눌러 관리자로 들어갑시다. 들어간후 +버튼을 눌러 새쿠키 만들기로 들어갑니다. 이름은 imcookie로 하고 값은 1로 줍시다. 그리고 체크버튼을 눌러주세요.

    네 만들어졌습니다.

    이제 GET변수와 POST변수를 만들어야 합니다. 그런데 둘다 방식이 다르니 따로 만들수 밖에 없습니다. 그런데 따로 따로 보내면 초기화가 되버리기 때문에 한꺼번에 같이 보내야 합니다. 간단합니다 GET변수가 그냥 주소창에 치기만 하면 되는 것이므로 POST를 보내기 위한 칸을 만들때 이렇게 만들시면 됩니다.

    차이점이 뭔지 아시겠습니까? action의 값이 md555.php?imget=1입니다. 원래라면 md555.php만 보내야 하지만 우린 GET이랑 같이 보내져야 하므로 보낼 주소를 imget이 정해진 주소로 적으면 post를 보낼때 동시에 get이 정해진 곳으로 데이터가 날라가는 겁니다.

    이제 값을 넣으시고 서브미트를 눌러봅시다.

    아아아 제발..  일단 눌러봅시다.


    $_SERVER[REMOTE_ADDR]의 값을 md5로 인코딩을 시켜 test에 넣고

    $_SERVER[HTTP_USER_AGENT]의 값을 md5로 인코딩을 시켜 kk에 넣어라는 군요.

    일단 $_SERVER[REMOTE_ADDR]은 자신의 컴퓨터의 ip주소를 가져오는 함수입니다. 그러면 한번 해봅시다.

    먼저 자기 ip주소를 md5 인코딩을 합니다. 그리고 인코딩된 글자를 쿠키값에 넣어줍시다.

    없기 때문에 새로 만들어주시면 됩니다.

    마지막으로 체크 버튼을 눌러주세요.

    자 이제 만들어졌으면 Hint쪽을 봐주세요.

    $_SERVER[HTTP_USER_AGENT]의 값을 md5로 인코딩을 시켜 kk에 넣어야 하는 데

    $_SERVER[HTTP_USER_AGENT]의 값이 hint이므로 저 hint를 인코딩 시키면 될 것 같군요.

    인코딩을 완료하였으면 또...post상자를 만들어 값을 넣어줍시다...(개발자도구)


    클 to the 릭 합시다.


    끝이란 무엇인가.... 하하하하하하하  암튼 눌러주세요.


    앞서 한 $_SERVER[REMOTE_ADDR]가 나오네요. 또 자기 ip주소를 받는 것 같습니다.

    그런데!!! str_replace 함수가 있습니다. 이 함수는 어떤 문자를 대신 바꿔준다는 함수입니다.

    저기서는 .이 나왔네요. 그런데 그 .을 그다음껏으로 대신한다. 즉 .을 공백으로 바꾼다라는 소리입니다. 


    즉 해석하면 $_SERVER[REMOTE_ADDR]에는

    str_replace 한 $_SERVER[REMOTE_ADDR]값을 저장시켜라. 그리고 저장시킨 $_SERVER[REMOTE_ADDR]값이 입력받은 $_SERVER[REMOTE_ADDR]값이랑 같을 때 next를 출력한다. 다 좋은데 왜 next를 보내는지...

    str_replace로 인해 .이 없어진 값이 저장이 되므로 자기 주소에서 .을 뺀 값을 넣어주시면 됩니다. 형식은 이렇게 적으셔야 합니다.


    123456789123은 자신의 ip주소입니다.

    자 그럼 엔터를 쳐주십시오.

    껄껄껄껄껄 진짜 드럽네요. 눌러주세요.

    어우 굉장히 간단한 문제네요. addr이 127.0.0.1이 되어야 한답니다. GET로 받았으니 얼릉 치고 넘어갑시다.



    후.. 10문제 채울 삘이군요.. 눌러주세요.

    딱봐도 answer의 값을 알아야 됩니다. for문부터 해석해봅시다.

    i의 값을 97로 주고 i<=122 가 거짓이 될때까지 반복한다.(즉 참이면 실행한다) 한 반복이 끝나면 i값에 2를 더한다. 자 그리고 그다음은 ch=chr(i)가 있군요. ch란 변수에 chr(i)를 넣어라

    그런데 여기서 chr이란 아스키코드값을 문자로 변환시켜준다는 함수입니다. 즉 처음 for문을 실행할때 i의 값 97에 해당되는 문자로 변환시켜 저장한다는 말입니다. 그리고 answer=ch , 이 저장된 문자 ch를 answer에 넣어라. 이것을 i<=122가 거짓이 될때까지 반복한다는 것입니다. 그러면 i가 97부터 시작해 97,99,101,103,105,107,109,111,113,115,117,119,121까지 반복하고 이러한 값들을 문자로 변환시켜 answer값에 저장시켰으니 위의 숫자값을 문자로 바꾸어 그대로 대입하면 끝나겠네요.

    아스키코드 표는 인터넷에 널려있습니다.

    다 변환시키면 acegikmoqsuwy란 값이 나옵니다.

    엔터누릅시다.

    아니? 늘 보이던 wrong이 없습니다. 크 드디어 마지막 문제인것 같네요. 기쁜 마음으로 눌러봅시다.


    아아아아 마지막 문제 답게 가장 어렵고 가장 치사한 소스입니다. 일단 solve가 없으니 곱게는 못해결하겠구요. 처음부터 차근 차근 해석해 봅시다.

    1.  $ip=$_SERVER[REMOTE_ADDR]

    자신의 ip주소값을 ip란 변수에 넣습니다. 여기까진 쉽네요.

    2.  for($i=0;$i<=strlen($ip);$i++)
       {
       $ip=str_replace($i,ord($i),$ip);
       }

    for문이군요. 해석하면 i란 변수를 선언하고 0의 값을 넣었습니다. 그리고 i의 값이 strlen($ip)보다 작거나 같을 경우 밑의 내용을 실행합니다. 물론 반대로 i값이 strlen($ip)보다 커지면 이 함수는 실행되지 않습니다.

    즉 i값이 strlen($ip)보다 커질때까지 함수를 반복해서 실행한다는 뜻입니다.

    그리고 여기서 strlen($ip) ip값의 길이를 의미합니다. 만약 ip값에 123이 들어가 있다면 strlen($ip)의 값은 3인것이지요. 그리고 그뒤의 i++은 이 함수가 한번 실행되고 난후 매번  i값을 1 더해줘라는 것입니다. 그럼 i의 값이 strlen($ip)보다 작거나 같을 때 뭘 실행하라는 걸까요? 밑에 보시면 $ip=str_replace($i,ord($i),$ip); 라고 되어있군요. replace는 앞서 많이 봐왔듯이 대신하는 함수입니다. 그럼 뭘 대신하냐? ip변수의 값에서 i의 값을 ord(i)로 대신하라고 되어있네요. ord는 문자열의 첫번째 문자에 해당하는 아스키코드값을 리턴해주는 함수입니다.

     즉 해석하면 i의 값의 문자열을 아스키코드값으로 대신해서 그걸 다시 ip에 저장시켜라 라는 뜻이네요.

    이제 for문을 끝냈으면 ip의 값에는 아스키코드값이 저장되어 있습니다. 다음걸 보죠.

    3.$ip=str_replace(".","",$ip)

    ip의 값에서 .을 없앱니다.

    4.$ip=substr($ip,0,10);

    substr은 문자를 추출합니다. 즉 ip변수에서 0번째부터 10개를 추출해서 ip에 저장하라는 소리입니다.

    그런데 이제 여기까지 보니까 완전히 계산입니다. 즉 이러한것은 우리가 직접 계산해서 알아보는 것보단 컴퓨터한테서 계산시켜 우린 답만 알아내는 것이 더 좋은 것 같습니다. 저거 일일이 다할려 해보세요. 죽습니다...

    그럼 우린 계산을 하지말고 어디서 패스워드를 보여주는지만 알아냅시다.

    오 맨밑의 저런 문구가 보이는군요. 

    fwrite($f,"Password is $pw\n\nclear ip : $_SERVER[REMOTE_ADDR]")

    write는 출력하다.... f는 파일의 약자... 즉 fwrite는 파일에 출력하다란 뜻이 되겠군요 그렇다면. Password is $pw\n\nclear ip : $_SERVER[REMOTE_ADDR 이 값을 f란 파일에 출력시킨다네요 password를 f에 출력시킨다... 우림 그럼 f를 찾아야 합니다. 그위의 변수를 봐주시죠. 

    $f=fopen("answerip/$ip/$answer.$ip","w")

    open 열어라 f 파일을 어디서? answerip/$ip/$answer.$ip경로에서...라는 뜻입니다.

    그런데 여기서 w가 거슬리는군요. w는 fopen에서 열 파일이 존재한다면 새로쓰기 전용으로 파일을 연다라는 뜻이고 열 파일이 존재하지 않다면 새로 만들라는 소리입니다. 그럼 경로값이 뭘까요?

    @mkdir("answerip/$ip");

    mkdir은 디렉토리를 만드는 함수입니다. 즉 answerip의 폴더안에 ip변수의 값을 가진 디렉토리를 만든다는 것이지요. 여기서 디렉토리란 워낙 뜻이 광범위하지만 그냥 간단하게 폴더라고 생각하시면 됩니다. @는 함수의 오류를 표시하지 않는다라는 뜻이구요. 자 그럼 이제 정리해 봅시다.


    1. 우리는 지금 패스워드를 알아야 한다.


    2. 패스워드는 f란 파일에 출력되어있다.


    3. f파일의 경로는 answerip/$ip/$answer.$ip이다.


    경로를 알기 위해서는 answerip/$ip/$answer.$ip의 값을 알아야 합니다. 그런데 우리는 멍청하니까 컴퓨터보고 계산하라 합시다.

    http://webhacking.kr/pds/phppad/index.php 주소로 들어갑시다.

    패드가 하나 보이지요?


    이 좌쪽 편에 다음과 같이 입력해 주세요.

    그대로 옮겨서 몇개만 변조해주었습니다. 일단 ip주소의 값을 자신의 ip주소로 바꾸고 이제 맨 마지막 부분을 다 짜르고 answer값을 출력하라는 명령어를 넣었습니다. 이로써 answer의 값은 구해졌구요.

    ip도 구해졌습니다. 자 그럼 이제 어떡하냐구요? 다 끝났지요. 

    아까 구할려는 경로 answerip/$ip/$answer.$ip에 대입만 해주시면 됩니다.

    대입하면 answerip/5515510755/27577553775.5515510755가 되네요. 그대로 주소에 넣어줍시다.

    엔터 눌러주시구요


    이런 이런 그지 같은 패스워드가 나왔네요. 근데 이제 또 하나의 문제가 남죠. 이 값을 어디에 대입해야 하느냐? 여기선 변수가 안나왔습니다. 이런 경우가 앞의 문제에서도 있었죠? 

    인증(auth)칸에 가서 입력해줍시다.


    휴. 참 그지같은 문제였습니다. 암튼 문제풀이를 마치겠습니다. 감사합니다.

    'Webhacking' 카테고리의 다른 글

    webhacking - 56번문제  (1) 2015.07.19
    webhacking - 47번 문제  (0) 2015.07.17
    Webhacking - 27번문제  (2) 2015.07.10
    Webhacking - 문제24번  (0) 2015.07.10
    Webhacking - 문제 11번  (0) 2015.07.08
    Posted by englishmath
    ,