wargame : https://webhacking.kr/ ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 auth 버튼을 누르면 access_denied가 반겨주기 때문에 바로 소스를 한번 살펴보자. php로 작성된 코드에서는 2, -, +, from, _, =, \s, *, /에 대한 필터링이 보이고 rand 함수로 작성된 조건문이 보인다. 여기서 Hello admin이라는 alert를 띄우는 구문과 풀이는 다음 코드로 보여진다. if(!$data[0]) { echo("query error"); exit(); } if($data[0]==1){ echo(""); } elseif($data[0]==2){ echo(""); solve(7); } 다음 코드를 보면 쿼리 에러를 발생시켜주는 부분이 있고, data[..
wargame : https://webhacking.kr/ ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 guest라는 ID로 현재 로그인이 되어있는 듯하고, 해당 view-source에 들어가보자. 엄청나게 긴 코드가 나오게 되는데, 풀이를 위한 코드는 다음으로 보인다. if($decode_id=="admin" && $decode_pw=="nimda"){ solve(6); } decode_id가 admin이고 decode_pw가 nimda면 해당 문제가 풀리는 것으로 보인다. $decode_id는 cookie의 user이고, $decode_pw는 cookie의 password를 의미하는데 guest가 base64 인코딩을 20번을 돌리고, 그 중 문자열에 1~8까지 포함되는 것들은 해당 기호로 변환되는 것..
wargame : https://webhacking.kr/ ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 우선 로그인 페이지는 다음처럼 나온다. 비밀번호가 틀리면 Wrong password라는 창이 뜬다. join 버튼을 누르게 되면, 다음과 같이 뜬다. 해당 메인 페이지와 login.php가 존재하는데 혹시나 php의 directory를 확인할 수 있는가에 대해서 경로에 ..을 삽입해보았다. 다음과 같이 두 php 파일이 보이는데, 우리가 접근하지 못했던 join.php 소스코드를 한번 보도록 하자. bye 라는 alert와 함께 검은 화면이 보이는데, 개발자 도구를 열어서 확인해보면 다음과 같은 문자들이 보인다. 복사해서 가독성있게 확인해보자. l = "a"; ll = "b"; lll = "c"; lll..
wargame : https://webhacking.kr/ ✔️ 문제 문제는 다음과 같다. 이상한 해쉬값처럼 생긴 것과 view-source가 보인다. ✔️ 풀이 소스를 보게 되면, 보낼 password가 key이고 해당 key가 $_SESSION['chall4']와 일치하면 문제가 풀린다. 해당 key 값은 $hash 라는 변수에 담기게 되는데, rand(10000000, 99999999)에 "salt_for_you"라는 문자열을 결합한 것을 sha1 함수에 담아서 반복하고 있는 것을 확인할 수 있다. 또한, sleep(1)을 걸어서 브루트 포스 공격을 방어하는 것으로 보이는데 이에 대한 해결 방법으로 레인보우 테이블을 만드는 것을 떠올렸다. 예전에 한번 풀었었는데 해당 해쉬값을 생성하는 스크립트를 짜..
wargame : https://webhacking.kr/ ✔️ 문제 갑자기 커다란 스도쿠가 나온다. ✔️ 풀이 왼쪽에 나오는 숫자는 행의 숫자를 이야기하는 것 같고, 상단에 나오는 숫자는 열의 숫자를 이야기하는 것 같다. 참고로 5x5에 해당하는 크기만 색깔이 변하는 과정을 거친다. 맨 아래 5개부터 채우고 나면, 밑에서 두번째 11은 3에 해당하는 곳에 들어갈 수 밖에 없고, 가운데 3은 3과 3에 해당하는 곳에 각각 들어가면 된다. 맨 위의 숫자 11은 1+1, 111은 1+1+1로 생각하면 쉽다. 그리고 나서 제출해보자. 클리어! 라고 하기에는 새로운 제출 버튼이 있다. hidden으로 숨겨진 곳에 answer로 value가 들어가고 그 밑에는 입력할 text가 id로 들어가는 것 같다. 제출하게..
wargame : https://webhacking.kr/ ✔️ 문제 제한된 구역에 들어왔다. ✔️ 풀이 해당 메인 페이지의 주석을 살펴보면, 해당 페이지 이외에도 admin 페이지가 존재하는 것을 확인할 수 있다. 해당 페이지에서 잘못된 패스워드를 입력하게 되면, wrong password 라면서 alert가 실행되게 된다. 더 이상 알 수 없는 정보가 없으므로 통신에서 받아오는 값이 있는지 확인을 하게 되면 쿠키값이 존재한다. 메인 페이지의 주석에서 현재 시간과 날짜를 기준으로 하는 쿠키 값을 확인할 수 있는데, 해당 쿠키 값을 조작하여 sql injection 등 공격을 시도해보도록 하자. Time 쿠키의 값이 True라면, Time 쿠기의 값이 False라면, 다음에 해당하는 값들이 나오게 된다...