웹해킹 12

webhacking.kr 44번 풀이

소스코드를 보니, ls명령어를 실행시켜야 할 거 같습니다. id입력을 이용해서 해 봅시다. id --> ';ls' system("echo 'hello! ';ls''"); 그러면 위와 같은 문장이 나타나는 데요, 맨 앞의 hello!는 제외하고 뒤에 있는 파일 두가지가 보입니다. index.php는 현재 우리가 있는 곳이니 flag_29~로 이동해 볼까요? 그러면 flag가 나타납니다. 복붙해서 auth에 입력합시다.

webhacking.kr 56번 풀이

BOARD에 admin과 guest에 대한 정보고 table 형식으로 있습니다. readme에 들어가면 access denied 라고 뜨고, hi~에 들어가면 hello~ 라고 뜹니다. 일단 소스코드와 쿠키에선 얻을 게 없었고, search칸에 이것저것 입력해 보았는데, hello값을 입력했을 때, guest에 대한 정보가 뜹니다. 그리고 h만 입력해도 guest에 대한 정보가 뜹니다. 아마도 search기능은 각 파일의 내용에서 해당하는 글자를 찾아주는것 같습니다. 그럼 당연히 admin에는 flag~가 있겠거니 싶어서 f를 검색해 보니까, 창에 admin이 떳습니다. 그리고 이것저것 시도해 보았습니다. 시도를 하면서 알게 된 것을 정리하자면, c언어의 strstr함수 아시나요?? 바로 문자열 속에서 ..

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()를 조금 응용해서 사용해..

webhacking.kr 5번 풀이

먼저 회원가입을 해볼까요? 아니?? 회원가입도 못하게?? 그래서 일단 Login 부터 들어가 봤습니다. 그래서 일단 mem/join.php로 찍어 봅시다! 그래도 이번에 mem/join/php에서 개발자도구를 열어 봤더니!! 그나저나 이게 단서인 것은 틀림 없습니다. 자 그럼 파이썬을 켜볼까요 그리고 이제 번역을 해 봅시다. replace()함수를 사용해도 되나 저는 그냥 print()로 하나하나 확인하면서 했습니다. if(eval(document.cookie).indexOf(oldzombie)==-1) {alert('bye');throw "stop";} if(eval(document.URL).indexOf(mode=1)==-1) {alert('access_denied');throw "stop";} el..

webhacking.kr 21번 풀이

일단 간단하게 id를 admin으로 해서 시도해 봅시다 흠 단순히 login fail이라고 나오네요 간단한 sql injection구문을 넣어봅시다 음 똑같이 나오네요? pw에 시도해 봅시다. 어 이번엔 좀 다르게 나옵니다. 이번에도 다르게 'no hack'이라고 나오네요 이번엔 'guest'로 로그인 해봤는데 빠밤 성공이라고 뜨네요! 일단 노가다로 이것저것 해 봐서 알아낸 것들은 1. 필터링 되는 문자(대소문자구분X): select 2. 필터링 안되는 문자: where, from, union, #, -- , 3. 참일 경우: worng password 4. 거짓일 경우: login fail 이렇게 긴 방황의 끝에 드디어 갈피를 찾았습니다. 바로 참과 거짓을 통해 pw를 알아내는 것이죠!! passwor..

webhacking.kr 3번 풀이

첫화면에 게임이 나온다 일단 간단한 문제니까 풀어보자 (프로그래밍과 관련 1도 없으니까 그냥 위 사진 보고 따라하셔도 됩니다. ) 게임방법 --> https://ko.wikipedia.org/wiki/%EB%85%B8%EB%85%B8%EA%B7%B8%EB%9E%A8 노노그램 - 위키백과, 우리 모두의 백과사전 노노그램(영어: Nonogram, 일본어: お絵かきロジック 오에가키로짓쿠[*])은 일본의 퍼즐 게임이다.[1] 각각 적혀있는 숫자를 보면서 숨겨져 있는 숫자를 예상하여 지워나가면서 그림을 그리는 게임 ko.wikipedia.org 처음에 answer에 단서가 있는 줄 알고 십진법으로 돌려봤지만 ㅎ 저건 그냥 모노그램의 답이였다. 일단 ctrl+shift+i 로 개발자 도구를 열어봐도 얻는게 달리 없..