WEB 52

webhacking.kr 20번

먼저 소스코드를 확인해보았다. submit버튼을 누르면 ck함수가 실행된다. ck함수를 해석해보면, nickname 입력칸이 빈칸이면 nickname입력칸으로 커서를 위치시킨다. comment와 captcha도 마찬가지로 실행된다. lv5frm.captcha_.value값은 새로고침할때마다 값이 계속 바뀌는데, 만약 captcha에 입력한 값과 lv5frm.captcha_.value값이 다르면 커서가 captcha로 이동한다. =>nickname, comment 입력칸이 비어있으면 안되고, 무작위로 생성된 lv5frm.captcha_.value값과 captcha입력값이 같아야한다. 그랬더니 너무 느리다고.. (。•́︿•̀。) 아마 time limit이 2초여서 그런것같다. 2초안에 입력하는 것은 불가능이..

webhacking.kr 19번

js문제여서 소스코드를 먼저 확인해봤는데, 자바스크립트 코드도 없고, 눈에 띄는 코드가 없었다. id가 admin일 때, 제출버튼을 눌러보니 admin이 아니라고 출력됐다. 이번엔 id를 guest라고 입력하고 제출했더니, hello guest가 출력됐다. 그런데 logout버튼을 눌러도 첫 화면으로 돌아가지 않는다 ㅠ 쿠키를 확인해보니, 인코딩된 값이 userid 쿠키값으로 설정되어있었다. 인코딩된 값은 guest라고 예측할 수 있었다. 이 때 ! userid쿠키값을 보고 base64로 인코딩된 값이라는 것을 알아야 한다. 쿠키값을 base64 디코딩했더니, 이상한 문자열이 출력되었다ㅠ base64 디코딩할 때, 기억해야할 점 ! %3D는 =으로 교체해서 디코딩해줘야한다. 디코딩된 값을 보니, gues..

webhacking.kr 15번

문제 들어가자마자 alert창이 뜨고, 확인 누르면 다시 challenge창으로 돌아간다., (´・ω・`)? alert창을 안뜨게 하려고 구글링해서 크롬 설정을 바꿨는데, 뭘 잘못한건지 계속 alert창이 떴다ㅠ 그래서 '팝업 및 리디렉션'말고 '자바스크립트'를 차단시켜봤다. 그랬더니 alert창이 안떴다 ㅎㅅㅎ !! 페이지에 아무것도 없길래 소스코드를 봤더니, url뒤에 ?getFlag를 입력하면 성공 ~! 50점짜린데 헤매느라 은근 오래걸렸담,, (。•́︿•̀。)

webhacking.kr 18번

SQL인젝션 문제인가보다.., '͡•_'͡• preg_match($pattern, $str, $match) : str에서 pattern을 검색하고, pattern이 존재하면 TRUE값을 반환해주고 그렇지 않으면 FALSE값을 반환해주는 함수 (pattern은 정규식 패턴) 1을 입력했더니, hi guest 출력 no=1이면 guest ! no=2면, admin으로 문제 해결 ! 이 때, $_GET[no]에 공백, /, (, ), |, &, select, from, 0x를 입력하면 no hack이 출력된다. => 공백, /, (, ), |, &, select, from, 0x를 입력하지 않고, no를 2로 만들어야 한다. select id from chall18 where id='guest' and no=..

webhacking.kr 12번

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

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으로 가게 만들었다. 그랬더니 성공! ㅎㅅㅎ