풀이
Webhacking.kr Level 61 문제풀이
Level 61 소스코드만 덩그러니 던져준다. 이는 as를 이용하면 될 것같다. as는 테이블 컴럼의 이름을 임시로 변경할 수 있다. 이를 이용하여 ?id='admin' as id 를 입력하였더니 생각하던 대로 되지 않았다. 이유는 쿼리문을 보면 $_GET[id] 주위로 ' '가 있지 않다. 즉, 문자열로 들어가는 것이 아니라 정수값으로 들어가게 된다. 따라서 'admin'이라는 값을 정수값으로 넣어주어야 한다. >>> string='admin' >>> for x in string: ... hex(ord(x)) ... '0x61' '0x64' '0x6d' '0x69' '0x6e' id=0x61646d696e as id
webhacking.kr Level 58 문제풀이
Level 58 58번 문제는 플래시로 이루어져 있다. "login"버튼을 누르면 "Wrong"이라고 뜬다. 크롬 개발자모드로 보면 hackme.swf 파일이 있는 걸 확인 할 수 있다. 이를 다운받아 'Sothink SWF Decompiler' 프로그램으로 살펴 보았다. Action 부분에 button에 대한 Action 이 정의 되어 있으며 pw값이 맞으면 'http://webhacking.kr/challenge/web/web-35/g1v2m2passw0rd.php' 링크로 이동되게 되어 있다. pw값을 찾을 필요도 없이 해당 링크로 이동하면 문제가 풀린다.
webhacking.kr Level 56 문제풀이
Level 56 noidsubjectsecret 1adminreadme0 2guesthi~1 search : 소스 코드에서 불필요한 부분은 제거한 코드이다. 소스코드에 별다른게 없어 search 에 문자를 무작위로 넣고 제출해보았다. 테이블에 아무런 정보가 뜨지 않는다. 입력 값에 따라서 테이블에 나오는 값이 달랐다. '_'를 4개 넣어보니 admin만 출력 되었다. 즉, like 명령어를 통해 조회하고 있음을 알 수 있었다. 테스트 결과 쿼리문은 select * from broad where subject like '%$search%' 라고 생각되어진다. LIKE는 특정 문자열 정보가 포함된 데이터를 뽑을 때 사용한다. LIKE에서 '_' 를 이용하여 글자수를 나타낸다. 밑줄 문자 '_' 를 사용하여 ..
webhacking.kr Level 54 문제풀이
Level 54 Password is 페이지를 열고 시간이 좀 지나니 아래 처럼 계속 문자열이 하나씩 출력 되었다. 크롬으로 살펴보니, 1초마다 m파라미터 값을 0부터 31까지 1씩 증가시키면서 출력하고 있다. function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return null; } } }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ return null; } } x=ru..
webhacking.kr Level 52 문제풀이
Level 52 😭 죽어라 삽질했던 문제... 아직도 문제 출제의도 이해가 안간다. 삽질 이유를 말하자면, 문제에서 id=haks2198라는 쿠키를 생성하라고 하는데, 쿠키생성할 필요가 없다 ;; 그래도 풀이 과정을 적어보자💢 '헤더인젝션'이라는 단어를 처음 접하게 되어 구글링을 해보았다. 헤더인젝션은 공격자가 헤더에 개행문자를 삽입해 헤더를 추가하여 공격하는 수동적 공격방법이다.즉 개행문자('\r\n')를 필터링하지 않으면 생기는 문제이다.\r(%0d) : Carrige Return 커서를 맨 앞으로 이동시킨다.\n(%0a) : Line Feed 커서를 다음줄로 이동시킨다. 쿠키를 생성하는 방법은 'Set-cookie:'를 이용하면 된다. 먼저 '헤더생성'을 눌렀을 때 패킷을 살펴봤다. Request ..
webhacking.kr Level 47 문제풀이
Level 47 email값이 POST방식 일 때 mail함수가 실행된다. mail함수는 ("받는사람 주소", "메일 제목", "메일 내용", "헤더내용(옵션)") 이런 형식으로 되어있다. 그리고 header값에는 우리가 입력할 수 있는 값이 들어가게 된다. 여기서 우리가 입력한 값으로 조작 할 수 있는 것은 header의 값이다. 구글링해보니 mail 함수에서 header값에 참조인을 넣을 수 있다. 즉 받는 사람 이외에 참조인도 메일을 받을 수 있게 되는 것이다. cc: [메일주소] 형식으로 넣어주면 된다. 따라서 우리는 헤더를 header = "From: abcd@naver.com\r\ncc:haks2198@naver.com\r\n" 으로 만들면 된다. \r : %0d\n : %0a abcd@nav..