yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

HackCTF [Web] / 풀이, Login 풀이 본문

wargame 풀이/HackCTF

HackCTF [Web] / 풀이, Login 풀이

yehey 2021. 1. 6. 22:33

/ 풀이

문제를 클릭하면 해당 페이지가 출력된다. 그리고 Hidden Flag라고 적혀있다.

페이지 자체에 뭔가 숨겨져있을까 싶어서 페이지 코드와 쿠키도 확인했지만 특별히 찾을 수 있는건 없었다.

 

그러다 생각난 것이 robots.txt 였다.

 

robots.txt
정보 수집을 위해 사용하는 웹 로봇에 정보 수집을 허용하거나 불허하는 명령을 내리는 파일
robots.txt 파일 내의 User-agent 키워드를 이용하여 지정된 User-agent 요청 헤더를 전송하는 특정 로봇에게 명령을 내릴 수 있다.
설정된 경로 정보 수집을 차단, 허용할 수 있다.
robots.txt가 존재하는 사이트의 경우 디렉터리 경로 정보가 노출될 수 있다.
disallow로 차단하더라도 robots.txt를 출력하면 어떤 디렉토리가 차단되었는지 알 수 있기 때문.
또한 악의적인 robot들은 robots.txt를 내용을 준수하지 않을 수 있다.

해당 URL 뒤에 robots.txt를 입력하자 robots.txt 내용이 출력되었다.

그리고 모든 로봇에 대하여 /robot_flag/ 디렉토리 접근은 불허되어 있다.

 

접근이 불허된 디렉토리로 이동해보자!

 

이동하자 답을 얻을 수 있었다.

 


Login 풀이

문제를 클릭하니 로그인 페이지가 출력되었다.

이제 로그인페이지를 보면 SQL injection이 가장 먼저 떠오른다.

source 코드를 볼 수 있는 버튼도 있다. 코드를 확인해보자

<?php
highlight_FILE(__FILE__);
require_once("dbcon.php");

$id = $_GET['id'];
$pw = $_GET['pw'];
$pw = hash('sha256',$pw);

$sql = "select * from jhyeonuser where binary id='$id' and pw='$pw'";
$result = mysqli_fetch_array(mysqli_query($db,$sql));

if($result['id']){
        $_SESSION['id'] = $result['id'];
        mysqli_close($db);
        header("Location:welcome.php");
}
?>

예상대로 SQL injection을 이용해야 할 것 같다.

SQL injection은 아래 글에서 더 자세하게 다루고 있다.

2020/09/11 - [웹/웹 해킹] - SQL injection

2020/09/29 - [웹/웹 해킹] - SQL injection 실습1 (WHERE 구문 우회)

 

문제에서는 해당 쿼리문을 만족하는 데이터가 하나라도 존재하면 해결될 것 같다.

특정 아이디를 가져오지 않아도 문제가 해결될 것 같으니 우리는 id를 항상 참으로 만들고 pw는 주석처리 해주자

URL에 /?id=' or 1=1 %23 을 입력해주자

id='' or 1=1 #pw=

그러면 쿼리문은 위와 같은 상태가 된다.

id가 참이 되기 때문에 데이터 베이스에 있는 모든 값을 가져올 수 있다.

따라서 if 조건문을 만족하게 된다.

 

답이 출력되었다!

 

더 자세한 풀이는 아래 링크 참조

2020/10/04 - [wargame 풀이/LOS] - LOS 1~3번 풀이 (gremlin, cobolt, goblin)


 

+Login 문제 꼼수

코드에서 header("Location:welcome.php"); 부분을 보고 welcome.php를 URL에 바로 입력해줘도 flag를 얻을 수 있을지 궁금해져서 한번 입력해보았다.

 

똑같이 flag가 출력되었다.ㅋㅋㅋㅋ

'wargame 풀이 > HackCTF' 카테고리의 다른 글

HackCTF [Web] LOL 풀이  (0) 2021.02.07
HackCTF [Web] Read File 풀이  (0) 2021.01.27
Comments