정보보안 공부/CTF(해킹)

[DreamHack] Web-login filtering

pxatd 2023. 7. 19. 15:18
728x90

제공된 php 코드를 살펴보면 다음과 같다.

현재, 필터링 되어있는 아이디는 두 개로

guest / guest

blueh4g / blueh4g1234ps 인데

해당 php 코드를 살펴보면 id의 대소문자를 구분하는 필터링이 존재하지 않는다

따라서 guest를 Guest 등으로 바꿔 필터링을 우회할 수 있다.

<?php

if (isset($_GET['view-source'])) {
    show_source(__FILE__);
    exit();
}

/*
create table user(
 idx int auto_increment primary key,
 id char(32),
 ps char(32)
);
*/

 if(isset($_POST['id']) && isset($_POST['ps'])){
  include("./lib.php"); # include for $FLAG, $DB_username, $DB_password.

  $conn = mysqli_connect("localhost", $DB_username, $DB_password, "login_filtering");
  mysqli_query($conn, "set names utf8");

  $id = mysqli_real_escape_string($conn, trim($_POST['id']));
  $ps = mysqli_real_escape_string($conn, trim($_POST['ps']));

  $row=mysqli_fetch_array(mysqli_query($conn, "select * from user where id='$id' and ps=md5('$ps')"));
  if(isset($row['id'])){
   if($id=='guest' || $id=='blueh4g'){
    echo "your account is blocked";
   }else{
    echo "login ok"."<br />";
    echo "FLAG : ".$FLAG;
   }
  }else{
   echo "wrong..";
  }
 }
?>

 

 

 

 

플래그 얻기 성공

728x90