프로젝트/Webhacking.kr 44

[Webhacking.kr] Challenge(old) 23번 문제

문제 페이지는 해당 페이지와 같다. 입력창이 존재하고 문구를 보면, 이 문제는 를 인젝션하면 풀리는 문제라는 것을 알 수 있다. 를 입력창에 입력하면 no hack 이라는 문구가 출력된다. URL 을 확인해보면 입력창에 입력한 값이 Get 방식으로 code라는 파라미터 값으로 전송되는 것을 확인할 수 있다. 메인 페이지로 다시 돌아와 입력창에 a 를 입력하면 a 가 출력된다. 하지만 ab 라고 입력하면 no hack이라는 문구가 출력된다. 영어를 연속으로 입력하면 no hack 출력되는 거 같다. 숫자를 입력하면 하나든 연속으로 입력하든 모두 출력되는 것이 확인된다. 또한, 특수문자를 입력해도 하나든 연속으로 입력하든 모두 출력되는 것이 확인된다. 숫자와 영어를 , 특수문자와 영어를 연속으로 입력해도 출..

[Webhacking.kr] Challenge(old) 22번 문제

문제 페이지는 해당 페이지와 같다. id와 password 입력창과 login, join 버튼이 존재한다. 해당 페이지에 적혀있는 문구를 보면 admin으로 로그인 하면 문제가 풀린다는 것을 알 수 있다. 먼저 join 버튼을 눌러 username: guest / password : guest 로 가입한다. 메인 페이지로 이동하여 guest로 로그인한다. 패스워드의 해시값이 나오는 것이 확인된다. 문자열이 32비트인 것으로 보아 md5로 암호화 된 듯하여 md5 복호화를 해주는 사이트로 이동하여 복호화 시킨다. https://www.md5online.org/md5-decrypt.html MD5 Online | Free MD5 Decryption, MD5 Hash Decoder www.md5online.o..

[Webhacking.kr] Challenge(old) 16번 문제

문제 페이지는 해당 페이지와 같다. 페이지에는 * 이 총 3개 존재한다. 첫번째는 노란색의 큰 사이즈로 , 두 번째는 노란색의 작은 사이즈로, 세 번째는 다른 색의 작은 사이즈로 존재한다. 새로고침을 한 경우 세 번째 * 는 색깔이 변하는 것을 확인 할 수 있었으며 커서를 갖다댔을때 사라지는 것을 확인할 수 있었다. 해당 페이지의 소스코드를 확인한다. 스크립트에서 mv함수의 마지막 if 문의 주석에 do it!! 이라고 적혔있는 것을 보아 이곳이 핵심인 듯하다. if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it! 변수 cd 가 124인 경우 String.fromCharCode() 함수에 의해 아스키 코드를 기준으로 숫자 124를 받아 ..

[Webhacking.kr] Challenge(old) 26번 문제

문제 페이지는 해당 페이지와 같다. view-source 링크가 존재한다. 링크를 통해 페이지 소스코드를 확인한다. 하단의 php 부분을 중심으로 해석한다. GET 방식으로 id 를 받아와 preg_match() 함수를 통해 admin 과 일치하는지 확인한다. 일치하는 경우 조건문이 실행되어 "no!" 라는 문구와 함께 종료된다. admin 과 일치하지 않은 경우 GET 방식으로 받아온 id 값을 url 디코딩을 한다. url 디코딩을 한 값이 admin인 경우 해당 문제가 풀린다는 것을 알 수 있다. 먼저 amdin 을 url 인코딩 표를 통해 인코딩을 진행한다. admin %61%64%6d%69%6e url 인코딩을 한 결과를 URL에 id 파라미터 값으로 보낸다. 해당 URL로 전송하면 id 파라미..

[Webhacking.kr] Challenge(old) 25번 문제

문제 페이지는 해당 페이지와 같다. 서버에 존재하는 디렉터리와 파일의 속성을 보여주고 하단 회색 박스안에 hello world 라는 문구가 출력되는 것을 확인할 수 있다. 해당 페이지의 URL을 확인하니 ?file=hello 라고 명시되어 있다. 이를 통해 회색 박스안에 있는 hello world 라는 문구는 hello.php 파일이 실행 된듯 하다. 이와 같이 URL의 file 파라미터 값을 변경하여 flag.php 파일을 실행 시킨다. flag. php 코드 안에 FLAG가 존재한다고 출력된다. 해당 파일의 코드를 확인하기 위해서 LFI 취약점을 이용한 PHP Wrapper 을 활용한다. PHP Wrapper 방법 중 php://filter/를 사용한다. php://filter/는 다양한 I/O 스트..

[Webhacking.kr] Challenge(old) 24번 문제

문제 페이지는 해당 페이지와 같다. 해당 페이지에는 client ip 주소와 agent 정보가 출력되는 표와 view-source 링크가 존재한다. view-source 링크를 통하여 소스페이지를 확인한다. 마지막 부분의 조건문을 확인하면 if($ip=="127.0.0.1"){ solve(24); exit(); } 출력되는 ip 정보가 127.0.0.1이 되면 문제가 풀리는 것을 확인할 수 있다. 소스페이지 중간의 php 부분을 중심으로 해석해 본다. 해당 조건문을 실행하도록 하기 위해서는 $REMOTE_ADDR 값을 조작하여 $ip 변수가 127.0.0.1이 되도록 해야 한다.

[Webhacking.kr] Challenge(old) 20번 문제

문제 페이지는 해당 페이지와 같다. 해당 페이지에는 nickname, comment, captcha 3개의 입력창이 존재하며 submit 버튼과 reset 버튼이 존재한다. 또한 time limit : 2 second 라는 문구도 존재하는 것을 확인 할 수 있다. 먼저 페이지의 소스 코드를 살펴본다. script 부분을 중심으로 해석한다. id, comment, captcha의 입력값이 공란이면 retrun 된다는 것을 알 수 있다. lv5frm.captcha.value 값이 lv5frm.captcha_.value값과 같지 않은 경우에도 리턴 되는 것을 볼 수 있다. lv5frm.captcha_.value값이 무엇인지 개발자 도구의 Console 기능을 이용해 알아본다. lv5frm.captcha_.va..

[Webhacking.kr] Challenge(old) 19번 문제

문제 페이지는 해당 페이지와 같다. 해당 페이지에는 admin이 입력되어 있는 입력창이 존재한다. 제출 버튼을 클릭하면 you are not admin 이라는 문구가 뜨는 것을 확인 할 수 있다. 메인 페이지로 이동하여 입력창에 임의로 test 라고 입력하여 제출한다. hello test라는 문구와 logout 버튼이 있는 페이지로 이동하는데 logout 버튼을 눌러도 페이지에는 변화가 없으며, 메인페이지로 이동하려고 뒤로 가기를 눌러도 계속 해당페이지가 유지된다. 그래서 먼저 이 페이지를 분석하였다. 해당 페이지의 소스코드를 보아도 뚜렷한 단서는 보이지 않아서 쿠키값을 확인해 보았다. userid 라는 쿠키가 존재했는데 해당 쿠키값은 입력한 id 값과 관계가 있어보인다. 해당 쿠키값을 확인해 보니 맨 ..

[Webhacking.kr] Challenge(old) 18번 문제

문제페이지는 해당 페이지와 같다. 페이지에는 SQL injection 문구와 입력창과 view-source 링크가 존재한다. 해당 문제는 SQL injection 공격을 이용하여 해결할 수 있을 것 같다. 입력창에 아무것도 입력하지 않고 제출 버튼을 누르면 URL 바뀌는 것을 볼 수 있다. 입력창에 입력한 정보가 index.php 파일의 no 파라미터 값에 저장된다는 것을 알 수 있다. view-source 링크를 통하여 소스 코드를 확인한다. 하단의 php 부분을 중심으로 코드를 해석한다.