Web Hacking 65

[Webhacking.kr] old-03 / Challenge 3

노노그램이라는 게임이 화면에 뜬다. 노노그램은 숫자에 맞게 색칠하는 퍼즐 게임인데 숫자가 여러 개면 사이에 공백이 한 칸 이상 있다는 뜻이다. 칸을 클릭해보니 색칠이 되었다. 폰으로 노노그램하던 짬바를 발휘해 풀어보았다. 5x5라 금방 풀 수 있었다. 성공하면 다음과 같은 인풋창이 나타난다. 아무거나 입력하고 submit을 누르니 name과 answer, ip가 차례대로 나타났다. admin을 입력해봤다. answer가 바뀔 줄 알았는데 바뀌지 않았다. 디코딩해봐도 특정한 값은 안나왔다. name에 sql injection을 시도해보았다. 넣은 값이 그대로 보여진다. answer에도 sql injection을 시도해보자. answer에 ' or 1=1--을 넣고 제출하면 query error!가 뜬다. ..

[Webhacking.kr] old-24 / challenge 24

해당 문제에 접속하면 자신의 ip와 agent가 나와있는 것을 알 수 있다. Wrong IP!라는 문구가 뜬다. 아래에 있는 view-source url로 들어가 소스코드를 확인해보았다. extract($_SERVER); extract($_COOKIE); php에서 extract 함수는 배열 속의 키값을 변수화 시켜주는 함수이다. 여기서는 $_COOKIE가 변수화 될 것이다. https://bbolmin.tistory.com/53 if($REMOTE_ADDR){ $ip = htmlspecialchars($REMOTE_ADDR); $ip = str_replace("..",".",$ip); $ip = str_replace("12","",$ip); $ip = str_replace("7.","",$ip); $i..

[Webhacking.kr] old-14

input창이 하나 있다. 소스코드를 살펴보았다. 버튼을 누르면 실행되는 ck함수를 보자. ul이라는 변수에 뭔가 작업이 되어있다. https://www.codingfactory.net/10993 document.URL은 문서의 URL을 가져올 수 있다고 한다. https://hianna.tistory.com/379 indexOf 함수는 특정 문자의 위치를 찾기 위해 사용한다고 한다. 그러니까 URL에서 특정 문자, .kr의 위치를 찾아 30을 곱한 것 같다. https://webhacking.kr/challenge/js-1/ .kr이 19번째에 나오니 19x30 = 540이다. 근데 그냥 콘솔창에 넣어도 나온다. 그래서 input창에 입력했더니 문제를 해결할 수 있었다. 습관적으로 540을 입력하고 엔..

[Webhacking.kr] old-23

input창에 를 삽입하라고 한다. 그대로 삽입해보면 no hack이라는 문구가 나온다. 필터링을 알아보기 위해 이것저것 넣어봤다. ();등의 기호는 아무 문구도 뜨지 않았고, script와 alert를 넣었을 때 no hack이 뜬 것으로 보아 해당 문구를 필터링한 건가 싶었는데, 그냥 문자열 2개 이상은 다 필터링이 걸렸다. 필터링을 우회하기 위해 여러가지를 시도해보았다. 그냥 띄어쓰기로는 우회할 수 없었다. 찾아보니 eregi취약점에 관한 문제라고 한다. %00이 있으면 문자열 검사를 하지 못한다는 취약점이다. 문자 사이사이에 %00을 넣어서 스크립트 태그로 공격해보았다. a%00l%00e%00r%00t(1); 성공했다!

[Webhacking.kr] old-17

input창이 한 개 있다. 소스코드를 살펴보았다. 자바스크립트로 난독화되어보이는 듯한 코드가 있었다. 일단 콘솔창에 넣고 돌려보기로 했다. 7809297.1이 나왔다. sub함수를 보면 pw값이 이 unlock값과 같을 때 조건을 만족하고 주소?unlock/10으로 이동한다. input창에 unlock값을 넣어보았다. 문제가 풀렸다! url이 다음과 같이 바뀐 것을 볼 수 있다.

[Webhacking.kr] old-05

join버튼을 누르면 access_denied가 뜬다. login버튼을 눌러 guest나 admin등을 입력해봤는데 wrong passoword만 떴다. 개발자모드로 처음 페이지의 소스코드를 확인해봤다. no함수와 move함수로 인해 아까처럼 작동한 거였다. 더 이상 할 수 있는 건 없어보여서 login.php페이지로 돌아갔다. 여기서 mem/login.php로 들어가고 있는데, mem/join.php로 들어가보기로 했다. 들어가면 알림창이 뜬다. 아주 얄밉기 그지없다. 소스코드를 살펴보면 다음과 같이 난독화된 코드를 볼 수 있다. l='a';ll='b';lll='c';llll='d';lllll='e';llllll='f';lllllll='g';llllllll='h';lllllllll='i';lllllll..

[Webhacking.kr] old-46

sql injection 문제 소스코드 SQL INJECTION level : view-source 1. addslashes 사용 (쿼터 앞에 백슬래시) 2. str_replace 함수로 공백, \, *, %를 필터링 3. select, 0x, limit, cash를 필터링 쿼리 select id, cash from chall46 where lv=$_GET[lv] id를 admin으로 만들면 풀린다. level을 입력했을 때 정보가 나온다. ltusy udnrg fvvcg bzrbo 5 이상부터는 아무것도 나오지 않는다. 다음과 같은 방식으로 공격해보았다. 1&&id=admin 통하지 않았다. char함수를 통해 우회하니 해결할 수 있었다. 1&&id=char(97,100,109,105,110) url로..