webhacking.kr 25

webhacking.kr 42번 풀이

일단 무언가를 다운로드 할 수 있는 창이 뜬다. 첫번째 파일 flag.docx 를 다운 받을려 했지만 'Access Denial'이 뜨고 두번째 파일인 test.txt 을 다운을 다운받습니다. text.txt에 담긴 내용입니다. 일단 어디 쓸지는 모르니 킵해 둡시다. ctrl+shift+i를 눌러 소스코드를 살펴봅시다. 소스코드를 살펴 보니 text.txt를 다운 받기 위해 이동하는 URL이 보입니다 ?down=dGVzdC50eHQ= 이 부분이죠. 그런데 여기서 마지막에 붙은 '='가 base64를 떠올리게 합니다. 혹시 모르니 base64 디코딩을 시도해 봅시다. 마지막 '='부분은 지우고 디코딩 해야 합니다. base64 디코딩 사이트 --> http://www.hipenpal.com/tool/bas..

webhacking.kr 20번 풀이

일단 한번 아무거나 시도해보자. (reset을 누르면 captcha의 문자열이 바뀐다. ) 기껏 captcha를 쳤더니 Too Slow라고 뜬다. 그리고 위에 time limit: 2 second 라는 문구가 표시된다. 일단 ctrl+shift+i 를 통해 소스코드를 살펴보자. 각각의 빈칸들을 확인하고, 마지막에 캡챠까지 확인해주는 코드이다. 간단히 수정해 보자. location.reload();//현재 페이지를 새로고침 해준다. lv5frm.id.value="admin" ; lv5frm.cmt.value="hello"; lv5frm.captcha.value=lv5frm.captcha_.value; lv5frm.submit(); 각각의 변수(id, cmt, captcha)에 원하는 값을 넣을려면 .val..

webhacking.kr 19번 풀이

id를 제출하는 칸이 보이네요 일단 admin으로 제출해 봅시다. 'you ae not admin'이라고 뜨네요. 가장 만만한 guest로 로그인 해봅시다. 'hello guest'가 뜹니다. 그리고 다른 걸 시도하려고 logout을 눌러봐도.. 로그아웃이 안되네요 ㅎ하하 그래서 일단 소스코드를 보았지만 건질 게 없었고, (?logout=1이 입력되면 로그아웃이라는 걸 알았다.) 쿠키에서 건질 게 있었다. 바로 userid 라는 쿠키이다. userid쿠키를 0으로 설정하면 로그아웃을 할 수 있다. 그리고 여기서 Base64 라는 인코딩 방식에 대해 알아야 한다. 암호화된 문자를 보고 Base64라고 알아 차리기 위해선 Base64의 암호화 방식을 알아야 한다. 자세한 건 -->https://pks2974..

webhacking.kr 58번 풀이

음 일단 메시지창 같은 게 떳습니다. 'hello'를 입력해서 send했더니 command not found가 뜨네요 다른 멘트를 시도해 봐도 비슷하게 나옵니다. 일단 ctrl+shift+i 로 소스코드를 살펴봅시다. 하ㅎ 제가 javascript는 공부를 하지 않아서 해독하기에는 힘드네요 그래도 여기 잘 보면 'cmd'라는 것이 보입니다. 아까 hello라고 입력해도 command not found라고 뜨는 것을 보아 아마도 cmd와 관련이 있는것 같네요 cmd에서 명령어들을 알아볼 수 있는 'help'를 입력해봅시다. 명령어가 총 4개가 있네요 help는 이미 입력 했으니 나머지 3개를 하나하나 입력헤 봅시다. 더보기 리눅스 명령어 ls: 디렉토리(directory)에 있는 내용(디렉토리, 파일 등)..

webhacking.kr 23번 풀이

your mission is to inject 부분이 힌트를 주고 있네요? 먼저 일단 를 제출해 봅시다. 흠 no hack이라고 뜨는군요 무언가 우회를 해야할 거 같네요 일단 그러면 여러가지를 넣어보고 뭘 넣으면 'no hack'이라고 뜨는지 알아볼까요 ';() --> 그대로 출력 script, alert --> no hack SCRIPT, ALERT --> no hack 이상하게 영어만 걸리는거 같네요 아무 영어나 넣어보죠 aaa --> no hack aa --> no hack a --> a t>q --> t>q 드디어 찾았습니다. 영어가 2글자 이상 연속이면 무조건 걸리는 거였네요 URL로 인코딩해서 넣어봤습니다. (a를 인코딩하면 %61(아스키코드 사용)) %61%61 --> %61%61 그대로 나..

webhacking.kr 54번 풀이

맨 처음에 문제에 들어가면 Password is 뒤에 무슨 글자들이 빠르게 지나갑니다. 흠 이게 뭘까요 일단 Ctrl+Shift+i를 통해 개발자 도구를 열어봅시다. 저희가 집중해야 할 건 answer()함수입니다. answer()함수의 첫번째, 두번쨰 if문들을 고쳐야 하는데요 aview.innerHTML+=x.responseText; i++; if(x.responseText) setTimeout("answer("+i+")",20); if(x.responseText=="") aview.innerHTML+="?"; 위의 부분을 추가해 줍니다. 그리고 부분을 콘솔창에서 실행시켜 주면? 플래그가 나타나게 됩니다!! 이 플래그를 복사해서 Auth메뉴에 들어가 입력하면 성공입니다.

webhacking.kr 39번 풀이

소스코드를 봅시다. 음 몇 줄 안되네요 ㅎㅎㅎ 죠습니다. 그럼 중요한 부분만 다시 볼까요? 이번엔 id를 post 방식으로 전달하는군요 즉 URL으로는 전달을 못하나 봅니다. 코드를 다시 살펴보죠 1. id 값이 존재하면 2. id문자열 중 '\\'를 없앤다. 3. id 문자열 중 " ' "를 "''"로 바꾼다. 4. id 문자열을 15글자로 자른다. 5. member 테이블에서 id의 길이가 14보다 작고 id='(입력값)이면 문제가 풀린다. 자 그러면 여기서 중요한 것! id='{$_POST['id']} 라는 것입니다. 네 따음표가 앞에 하나밖에 없습니다. 그래서 우리가 직접 따음표 하나를 넣어서 완성해 줘야 하는데 문제는 바로 이 부분으로 인해 따음표 하나만 쓰기 힘들다는 거죠 그래서 해결방법은 마..

webhacking.kr 16번 풀이

별이 있네요? 노란별 두개, 초록(?)별 하나 그런데 여기서 초록별을 클릭하면 초록별이 사라집니다! 일단 crtl+shift+i 를 눌러 개발자 도구 창을 켜봅시다. 흠 직관적으로 봤을 때 mv()함수에 124전달되면 되는 거 같죠? 콘솔창에 그대로 실행해 봅시다. 그러면? 풀립니다 ㅎ 근데 이건 너무 간단한데요.. 이 문제가 의도한 바도 아닌 거 같고? 그래서 저는 다른 풀이방법을 고민해 봤습니다. r 그럼 이제 하나하나씩 해석해 볼까요 event.keyCode에 의해서 별이 움직여지네요. onkeypress에서 키가 눌러지면 event.keyCode가 아스키코드값으로 바꾸어 주나 봅니다. 일단 각각의 아스키코드 값을 알아보죠. 100 : d 97: a 119: w 115: s 124: | 일단 각 값..

webhacking.kr 15번 풀이

시작하자마자 상처받았네요 확인을 누르면 바로 index창으로 넘어갑니다. ctrl+shift+i를 눌러 소스코드를 봐도 아무것도 없고. 음 이 문제를 js로 alert()를 실행 후 바로 index페이지인 webhacking.kr로 가게 만드는 거 같네요. 그럼 js가 실행되지 않게 무력화해줍시다. (이건 저도 처음해봅니다 ㅎㅎㅎㅎ아이설레) 1. 크롬에서 메뉴(맨 오른쪽, 맨 위에 점 3개)에 들어갑니다. 2. 그리고 다시 15번 문제에 들어가 보면! 경고창은 안뜨고 하얀 화면만 보이죠 ㅎㅎ 여기서 소스코드를 보면? 코드를 보니 URL 뒤에 ?getFlag를 넣어주면 될 거 같네요 --그전에 JS를 다시 허용시켜 주셔야 해요!--

webhacking.kr 14번 풀이

자 그럼 먼저 개발자 도구(ctrl+shift+i)를 이용해서 소스코드를 살펴봅시다. 여기서 가장 중요해 보이는 건 ck()함수네요 하나하나 해석해 보자면 1. ul이라는 변수에 URL값을 넣습니다. 2. indexOf 함수를 이용해 '.kr'이라는 문자열의 위치를 찾아 ul변수에 저장합니다. 더보기 .indexOf(): 1. 개념: 특정 문자열이 처음으로 나타나는 위치를 반환하는 메서드 2. 문법: string.indexOf(value, start) 3. 예제: 'ABCABC'.indexOf('B') // 처음 나오는 B의 인텍스 값인 1을 반환 3. ul*30 4. ul 값과 입력값이 일치하면 해결 그럼 이제 ul값이 어떻게 변하는지 구체적으로 알아보죠 소스코드에 있는 ck()를 조금 응용해서 사용해..