Season 1/워게임
-
들어가자마자 debug me라고 alert 창이 띄어졌다. 개발자 도구를 이용하여, JS를 확인해봤다. 너무나 많은 코드가 있었고, 난독화까지 되어 있어서 분석은 힘들 것이라 생각하였다. 그래서 맨 처음 alert창이 띄어졌는 것을 생각하여, 검색 기능으로 alert를 검색하였다. 해당 조건이 만족되지 않아서 else문으로 빠져서 alert창이 띄어졌으니, 확인을 위해 if문의 코드를 콘솔에 실행시켰다. 자동으로 서버에 ?Passw0RRdd=1를 보내고, Flag를 획득하였다.
[Webhacking.kr] Old - 34 Write Up들어가자마자 debug me라고 alert 창이 띄어졌다. 개발자 도구를 이용하여, JS를 확인해봤다. 너무나 많은 코드가 있었고, 난독화까지 되어 있어서 분석은 힘들 것이라 생각하였다. 그래서 맨 처음 alert창이 띄어졌는 것을 생각하여, 검색 기능으로 alert를 검색하였다. 해당 조건이 만족되지 않아서 else문으로 빠져서 alert창이 띄어졌으니, 확인을 위해 if문의 코드를 콘솔에 실행시켰다. 자동으로 서버에 ?Passw0RRdd=1를 보내고, Flag를 획득하였다.
2021.05.31 -
파일을 업로드하는 페이지가 나왔다. 맨위에 Flag는 다른 테이블에 있다고 하니, 아마 SQLi를 통해 다른 테이블을 알아내는 문제로 추측된다. 몇 번 업로드를 하니, 대충 어떻게 업로드가 되는지 알 수 있었다. 일단 공격백터로 filename을 사용할 수 있는지 알아보기 위해 ‘를 넣어서 서버로 보냈다. 그 결과 쿼리 에러가 발생되었다. filename의 값을 insult 쿼리에 삽입하여, 데이터를 저장하는 것으로 추측되는데 문제는 filename의 위치를 알아내야한다. INSERT INTO 테이블명 VALUES(값1, 값2, 값3); 여기서 filename의 위치가 값1인지 값3인지를 정확하게 모른다는 것이다. 그래서 나는 일단 값3에 위치한다고 생각하고, INSERT INTO 테이블명 VALUES(..
[Webhacking.kr] Old - 29 Write Up파일을 업로드하는 페이지가 나왔다. 맨위에 Flag는 다른 테이블에 있다고 하니, 아마 SQLi를 통해 다른 테이블을 알아내는 문제로 추측된다. 몇 번 업로드를 하니, 대충 어떻게 업로드가 되는지 알 수 있었다. 일단 공격백터로 filename을 사용할 수 있는지 알아보기 위해 ‘를 넣어서 서버로 보냈다. 그 결과 쿼리 에러가 발생되었다. filename의 값을 insult 쿼리에 삽입하여, 데이터를 저장하는 것으로 추측되는데 문제는 filename의 위치를 알아내야한다. INSERT INTO 테이블명 VALUES(값1, 값2, 값3); 여기서 filename의 위치가 값1인지 값3인지를 정확하게 모른다는 것이다. 그래서 나는 일단 값3에 위치한다고 생각하고, INSERT INTO 테이블명 VALUES(..
2021.05.31 -
이번엔 못보던 버튼이 생김 소스코드로 버튼부분을 보면, hidden 속성에 이메일 값이 보임 버튼 클릭 시, 비밀번호 문서가 해당 이메일로 보내진다고 유추할 수 있음 이메일 값을 수정 후 버튼 클릭 시, 수정된 이메일로 파일이 보내졌다는 메시지 확인 이메일 확인 시, 패스워드 파일 존재 해당 패스워드 삽입 시, 성공적으로 로그인에 성공
(HackThisSite) Basic missions - Level 4이번엔 못보던 버튼이 생김 소스코드로 버튼부분을 보면, hidden 속성에 이메일 값이 보임 버튼 클릭 시, 비밀번호 문서가 해당 이메일로 보내진다고 유추할 수 있음 이메일 값을 수정 후 버튼 클릭 시, 수정된 이메일로 파일이 보내졌다는 메시지 확인 이메일 확인 시, 패스워드 파일 존재 해당 패스워드 삽입 시, 성공적으로 로그인에 성공
2021.05.31 -
계속 패스워드를 맞추는 문제 마땅히 볼게 없으므로 소스코드 오픈 다행히 떡하게 hidden 속성으로 숨겨진 페이지(password.php) 발견 해당 페이지로 이동하여 비밀번호처럼 보이는 문자 발견 해당 문자열 삽입 시, 문제 해결
(HackThisSite) Basic missions - Level 3계속 패스워드를 맞추는 문제 마땅히 볼게 없으므로 소스코드 오픈 다행히 떡하게 hidden 속성으로 숨겨진 페이지(password.php) 발견 해당 페이지로 이동하여 비밀번호처럼 보이는 문자 발견 해당 문자열 삽입 시, 문제 해결
2021.05.31 -
- 'strcmp' 함수를 우회하라는 문제 확인. - Start - view-source - 패스워드가 일치하면 Flag를 획득할 수 있다. - if (strcmp($_POST['password'], $password) == 0) 를 통해 패스워드를 검증 - strcmp 함수는 두 개의 인자 값이 같으면 '0'을 반환한다. - PHP 5.3버전에서는 strcmp 함수의 인자 값으로 배열을 입력하면 NULL을 반환하는데, 이것을 이용한다. ( 참고로 5.2버전에서는 인자 값으로 배열을 입력하면 'Array'라는 문자열로 변환하여 1 또는 -1을 반환한다.) - 느슨한 비교문(==)에서 'NULL == 0' 은 참이므로 password에 배열을 전달해보자. - 'password[]=pass' 를 전달하여 s..
Wargame.kr - strcmp- 'strcmp' 함수를 우회하라는 문제 확인. - Start - view-source - 패스워드가 일치하면 Flag를 획득할 수 있다. - if (strcmp($_POST['password'], $password) == 0) 를 통해 패스워드를 검증 - strcmp 함수는 두 개의 인자 값이 같으면 '0'을 반환한다. - PHP 5.3버전에서는 strcmp 함수의 인자 값으로 배열을 입력하면 NULL을 반환하는데, 이것을 이용한다. ( 참고로 5.2버전에서는 인자 값으로 배열을 입력하면 'Array'라는 문자열로 변환하여 1 또는 -1을 반환한다.) - 느슨한 비교문(==)에서 'NULL == 0' 은 참이므로 password에 배열을 전달해보자. - 'password[]=pass' 를 전달하여 s..
2021.05.30 -
아무 반응이 없어서 코드를 확인하였다. $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..
[Webhacking.kr] Old - 53 Write Up아무 반응이 없어서 코드를 확인하였다. $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..
2021.05.30