[Webhacking.kr] Old - 55 Write Up
2021. 6. 2. 22:20
워게임/webhacking.kr
마우스를 따라오는 슬라임이 있는 페이지가 나왔다. 슬라임이 움직이면 Score도 증가가 되었다. 랭크 페이지가 있길래 들어가보니, Insert문이 밑에 나와있었다. 게임이 종료가 된 후 DB에 저장이 될 때, 저 Insert문이 작동되는 것으로 추측이 된다. Score 부분에도 a태그로 되어 있어서 클릭해보니, 서버에 score 파라미터를 보내고 있었다. 그래서 혹시나 해서 점수 뒤에 작은 따음표를 넣어서 서버로 보내니, 'no hack'이 출력이 되었다. 입력값에 대한 검증을 한다는 것을 확인을 하고, 나는 어떤 문자를 검증하는지 확인하였다. 몇가지 테스트를 해보니, 작음 따음표와 큰 따음표에 'no hack'를 출력하였다. 생각을 해보니, 점수는 INT 타입으로 들어가니 작음 따음표와 큰 따음표가 들..
[Webhacking.kr] Old - 52 Write Up
2021. 6. 1. 21:37
워게임/webhacking.kr
문제 페이지에 들어가보니, admin 페이지로 넘어가는게 미션인 듯하다. here is proxy just for fun 부분의 proxy를 클릭하니, 문제 서버에서 프록시를 해주는 것으로 판단이 된다. admin페이지로 넘어가니, 로그인을 하라고 해서 일단 내가 알고 있는 guest/guest를 입력해봤다. 아무 소득이 없었다. 그래서 혹시 쿠키에 뭔가 저장이 됬는지 확인을 해봤는데, 아무것도 없었다. 우연히 로그인 취소 버튼을 클릭하니, 저런 사이트가 나왔다. include "config.php"; if($_GET['view_source']) view_source(); if($_GET['logout'] == 1){ $_SESSION['login']=""; exit(""); } 로그아웃 시 login ..
[Webhacking.kr] Old - 34 Write Up
2021. 5. 31. 06:22
워게임/webhacking.kr
들어가자마자 debug me라고 alert 창이 띄어졌다. 개발자 도구를 이용하여, JS를 확인해봤다. 너무나 많은 코드가 있었고, 난독화까지 되어 있어서 분석은 힘들 것이라 생각하였다. 그래서 맨 처음 alert창이 띄어졌는 것을 생각하여, 검색 기능으로 alert를 검색하였다. 해당 조건이 만족되지 않아서 else문으로 빠져서 alert창이 띄어졌으니, 확인을 위해 if문의 코드를 콘솔에 실행시켰다. 자동으로 서버에 ?Passw0RRdd=1를 보내고, Flag를 획득하였다.
[Webhacking.kr] Old - 29 Write Up
2021. 5. 31. 06:20
워게임/webhacking.kr
파일을 업로드하는 페이지가 나왔다. 맨위에 Flag는 다른 테이블에 있다고 하니, 아마 SQLi를 통해 다른 테이블을 알아내는 문제로 추측된다. 몇 번 업로드를 하니, 대충 어떻게 업로드가 되는지 알 수 있었다. 일단 공격백터로 filename을 사용할 수 있는지 알아보기 위해 ‘를 넣어서 서버로 보냈다. 그 결과 쿼리 에러가 발생되었다. filename의 값을 insult 쿼리에 삽입하여, 데이터를 저장하는 것으로 추측되는데 문제는 filename의 위치를 알아내야한다. INSERT INTO 테이블명 VALUES(값1, 값2, 값3); 여기서 filename의 위치가 값1인지 값3인지를 정확하게 모른다는 것이다. 그래서 나는 일단 값3에 위치한다고 생각하고, INSERT INTO 테이블명 VALUES(..
[Webhacking.kr] Old - 53 Write Up
2021. 5. 30. 19:37
워게임/webhacking.kr
아무 반응이 없어서 코드를 확인하였다. $db = dbconnect(); include "./tablename.php"; if($_GET['answer'] == $hidden_table) solve(53); if(preg_match("/select|by/i",$_GET['val'])) exit("no hack"); $result = mysqli_fetch_array(mysqli_query($db,"select a from $hidden_table where a={$_GET['val']}")); echo($result[0]); 이번 문제는 테이블명을 answer에 넣어서 서버로 보내면, flag를 획득할 수 있는 문제이다. 테이블명을 얻기 위해서는 select a from $hidden_table wher..
[Webhakcing.kr] Old - 48 Write Up
2021. 5. 29. 23:58
워게임/webhacking.kr
입력한 Text와 파일을 업로드할 수 있는 페이지가 나왔다. 나는 뭔가 있을 까봐 입력하여, 코드를 살펴보니 아무 것도 없었다. 파일와 text를 입력하여 코드를 살펴보니, 역시 아무것도 없었다. 하지만 내가 업로드한 PHP은 운영체제에 명령을 전달하는 코드였고, 나는 내가 업로드한 /upload/test.php에 명령어를 전달하였다. 그러나, 해당 코드는 실행이 안되고 읽기만 되는 것으로 다른 방법으로 접근을 해야한다. GET /?mode=del&time=1622299124 HTTP/1.1 Host: webhacking.kr:10006 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit..
[Webhacking.kr] Old - 35 Write Up
2021. 5. 29. 23:56
워게임/webhacking.kr
전화번호를 입력하는 페이지가 나왔다. 카페에서 여자가 내 번호를 물어봤을 때, 내가 여자의 폰에 전화번호를 입력하는 설레는 마음으로 입력하여, 서버로 보내니 no hack이 출력되었다. 왜 까였는지 확인하기 위해, 코드를 분석하였다. $db = dbconnect(); if($_GET[‘phone’] && $_GET[‘id’]){ if(preg_match(“/\*|\/|=|select|-|#|;/i”,$_GET[‘phone’])) exit(“no hack”); if(strlen($_GET[‘id’]) > 5) exit(“no hack”); if(preg_match(“/admin/i”,$_GET[‘id’])) exit(“you are not admin”); mysqli_query($db,”insert int..
[Webhacking.kr] Old - 8 Write Up
2021. 5. 28. 18:42
워게임/webhacking.kr
특별한 반응이 없어서 코드를 확인하였다. $agent=trim(getenv("HTTP_USER_AGENT")); $ip=$_SERVER['REMOTE_ADDR']; if(preg_match("/from/i",$agent)){ echo(" Access Denied! "); echo(htmlspecialchars($agent)); exit(); } 접속한 브라우저와 공인 ip를 각각 agent, ip 변수에 넣어줬다. Agent 변수는 preg_match 함수로, from문자열이 있는지 검사하였다. 만약 있다면, Access Denied! 문구와 agent에 있는 특수문자가 HTML 엔티티로 변환된 문자열을 페이지에 출력하고, 종료한다. $db = dbconnect(); $count_ck = mysqli_f..
[Webhacking.kr] Old - 3 Write Up
2021. 5. 28. 18:40
워게임/webhacking.kr
이상한 페이지가 나왔다. 작은 박스를 클릭하니, 색이 검정색으로 변경하고 값이 1로 변경이 되었다. function go(){ var answer=""; for(i=1;i