Main 70

webhacking.kr 12번

자바스크립트에 관련된 문제인가보다 (・ิω・ิ) 소스코드 보기 ! 세미콜론을 기준으로 이모티콘들을 정리해보았다. 마지막 세미콜론은 엄청 많은 이모티콘들끝에 쓰여져있었다. (함수 예측) script 끝 부분에 쓰인 괄호의 짝을 찾아, 괄호안의 이모티콘들만 console창에 입력! (VS code를 이용하면 괄호 짝을 쉽게 찾을 수 있다) +) 다른 방법으로 풀기 console창에 함수명을 입력하면, 함수의 내용을 볼 수 있다. 함수 f를 만들고, 함수명(f)만 입력해보았다. 또한, 코드상에서 함수를 만들었다면 함수를 호출할 것이다. (대부분 마지막부분에 호출) 이 문제도 마찬가지로 코드 끝부분에서 함수를 호출했을것이라고 예측하고, 마지막에 쓰인 ('_');를 제외한 앞부분을 console창에 입력! (fu..

URL encoding을 해야하는 이유

URL encoding은 문자나 특수문자를 웹 서버와 브라우저에서 보편적으로 허용되는 형식으로 변화하는 메커니즘으로, URL에 쓰인 텍스트를 모든 브라우저에서 똑바로 전송하기 위해 존재하는 것이다. URL은 아스키코드를 이용해 인터넷을 통해서만 전송할 수 있다. 그러나 URL에 아스키코드외의 문자가 포함될 수 있기 때문에 유효한 아스키코드 형식으로 변환해야 한다. 예를 들어, GET 메소드로 id=?hong, pw=&zone의 데이터를 보내기 위해서는 http://example.com/?id=%3Fhong&pw=%26zone 으로 전송되어야 서버에서도 정상적으로 데이터를 해석하여 처리할 수 있다. URL encoding 방식은 입력된 문자를 아스키코드표(ASCII table)에서 매칭되는 hex 값 앞에..

기초 다지기 2020.01.26

정규식 알아두기

까먹기전에 정규식 정리해두기 ! (내가 공부하면서 헷갈렸던 것들 위주ㅎㅎ) . : 임의의 문자 ? : 앞에 쓰인 문자가 있거나 없거나 (2가지 경우 존재) ex) a?c -> a,ac + : 앞에 쓰인 문자 1번 이상 반복 ex) a+c -> ac,aac,aaaac .. * : 앞에 쓰인 문자 0번 이상 반복 ex) a*c -> c,ac,aaac .. [ ] : 안에 있는 문자 중 하나, or과 같은 의미 ex) [abc] = [a-c] = 'a' or 'b' or 'c' ( ) : 그룹으로 묶음 ex) (A|BC)(12|34)\2\1 = 'A'나 'BC' 중 하나 + '12'나 '34' 중 하나 + 두번째 그룹(12|34)에 썼던 문자 + 첫번째 그룹(A|BC)에 썼던 문자 -> A1212A \ : 백..

기초 다지기 2020.01.26

webhacking.kr 11번

view-source 클릭 ! 이 문제를 풀려면 정규식을 해석해야 한다. [1-3][a-f]{5}_ = 1~3 사이 숫자 1개 + a~f사이 알파벳 5개 + "_" .* =. 은 임의의 문자, *은 앞에 쓰인 문자가 0번 또는 그 이상 반복된다는 의미 \tp\ta\ts\ts = \t는 탭 문자, 뒤에 쓰인 p, a, s는 각각 문자를 의미 $_SERVER [REMOTE_ADDR]는 웹서버에 접속한 사람의 IP정보를 확인할 때 사용된다. => url에 'val=정규식을 만족하는 문자열'을 입력하면 solve! 이때, tap은 url인코딩한 값을 입력해야 한다.

webhacking.kr 10번

힌트를 찾을 수 없으니 소스코드 확인! 'O'에 마우스를 갖다 대면 'yOu'로 바뀌고, 'O'를 클릭하면 1씩 앞으로 가는 것을 볼 수 있다. 1씩 앞으로 가다가 1600이 되면, 다른 페이지로 이동한다! onclick="this.style.left=parseInt(this.style.left,10)+1599+'px';if(this.style.left=='1600px')this.href='?go='+this.style.left" 한번 클릭하면 1599만큼 이동하도록 하여 한번에 1600으로 가게 만들었다. 그랬더니 성공! ㅎㅅㅎ

webhacking.kr 6번

LEVEL 6 view-source 클릭 ! val_id 변수에 "guest" 저장 val_pw 변수에 "123qwe" 저장 val_id와 val_pw값을 base64 인코딩 20번 반복 20번 인코딩한 값들 중 "1"은 "!"로 치환하고, "2"는 "@"로 치환 .. ->str_replace함수로 인해 "1"~"8"의 값들이 치환된다. 치환된 val_id는 user 쿠키값으로 설정되고, val_pw는 password 쿠키값으로 설정 =>20번 base64 인코딩되고, str_replace에 의해 치환된 값들이 쿠키값(user,password)으로 저장 ! decode_id변수에 user쿠키값 저장 decode_pw변수에 password쿠키값 저장 아까와 마찬가지로 decode_..

webhacking.kr 1번

LEVEL 1 view-source 클릭 ! SetCookie함수를 이용해 user_lv를 1로 설정한다. user_lv cookie값이 숫자가 아닌 경우, 1로 설정한다. user_lv cookie값이 6 이상일 경우에도 1로 설정하고, 5를 넘으면 solve ! is_numeric(data) : data의 값이 숫자인지 아닌지를 확인하여 결과를 반환하는 함수 - 숫자형 data인 경우 true 리턴, 아닌 경우 false 리턴 ->따라서 user_lv cookie값은 5를 넘지만 6 이하의 값이어야 한다