webhacking.kr - old 39

2024. 3. 13. 13:16·Wargame/Webhacking.kr

문제화면이다.

바로 코드확인해 보자.

 

 

 

 

 

 

 

 

 

 

 

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Chellenge 39</title>
</head>
<body>
<?php
  $db = dbconnect();
  if($_POST['id']){
    $_POST['id'] = str_replace("\\","",$_POST['id']);
    $_POST['id'] = str_replace("'","''",$_POST['id']);
    $_POST['id'] = substr($_POST['id'],0,15);
    $result = mysqli_fetch_array(mysqli_query($db,"select 1 from member where length(id)<14 and id='{$_POST['id']}"));
    if($result[0] == 1){
      solve(39);
    }
  }
?>
<form method=post action=index.php>
<input type=text name=id maxlength=15 size=30>
<input type=submit>
</form>
<a href=?view_source=1>view-source</a>
</body>
</html>

 

 

전체코드

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<?php
  $db = dbconnect();
  if($_POST['id']){
    $_POST['id'] = str_replace("\\","",$_POST['id']);
    $_POST['id'] = str_replace("'","''",$_POST['id']);
    $_POST['id'] = substr($_POST['id'],0,15);
    $result = mysqli_fetch_array(mysqli_query($db,"select 1 from member where length(id)<14 and id='{$_POST['id']}"));
    if($result[0] == 1){
      solve(39);
    }
  }
?>

 

 

'$db = dbconnect();'로 데이터베이스에 연결하고 if($_POST ['id'])' 'id'에 대한 파라미터가 전달하는 과정이다.

 

조건을 보면 id 값을 받을 때 '\\'[백슬래시]를 제거하고 , 작은따옴표(')를 이중 작은따옴표('')로 처리한다.

 

그리고 'id' 값을 꼭 15자까지만 입력하게끔 해놨다. (15글자 전부 써야 한다는 소리)

 

$result 코드를 보면 'id='{$_POST ['id]} 에서 작은따옴표(') 즉 닫히는 부분이 없다.

 

따라서 작은따옴표를 이용해서 문제를 풀 수 있을 거 같다.

 

소스코드의 substr() 함수를 이용해서 작은따옴표를 넣어 정답을 입력해 보자.

 

'substr($_POST ['id'],0,15);'를 보면 최대 15자까지만 유지하도록 하기에 띄어쓰기를 끝까지 넣었다가 마지막에 백스페이스를 눌어 작은따옴표를 추가해 보자

 

 

 

 

 

 

 

 

 

 

 

 

 

 

여기서 mysql이 문자열을 비교할 때 빈 부분만큼 공백을 추가해 준다.

 

구글링 해서 찾아본 결과 mysql에서 CHAR는 문자열을 비교할 때 공백(BLANK)을 채워서 비교하는 방법을 사용한다.

 

그리고 VARCHAR에서는 맨 처음부터 한 문자씩 비교하고 공백도 하나의 문자로 취급하므로 끝의 공백이 다르면 다른 문자로 판단하는 것이다.

 

그래서 if 문에 15자 에 대한 조건에 공백을 넣어서 문제를 해결할 수 있었다.

 

'Wargame > Webhacking.kr' 카테고리의 다른 글

webhacking.kr - old 54  (0) 2024.03.14
webhacking.kr - old 38 (Log Injection)  (0) 2024.03.13
webhacking.kr - old 10  (0) 2024.03.13
webhacking.kr - old 24 (function_extract)  (0) 2024.03.12
webhacking.kr - old 03 (SQL Injection)  (0) 2024.03.08
'Wargame/Webhacking.kr' 카테고리의 다른 글
  • webhacking.kr - old 54
  • webhacking.kr - old 38 (Log Injection)
  • webhacking.kr - old 10
  • webhacking.kr - old 24 (function_extract)
G_OM
G_OM
최대한 설명 열심히 하려고 합니다. 궁금한 거 있으면 언제든지 물어보셔도 좋습니다.
  • G_OM
    끄적끄적
    G_OM
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • 모의해킹 (18)
      • CTF (22)
      • Wargame (69)
        • Linux_bandit (33)
        • Webhacking.kr (36)
      • DreamHack (52)
        • WEB (14)
        • Reverising (9)
        • System (0)
      • Mobile_security (13)
        • Drozer_Android (4)
        • Frida_Android (1)
        • IOS (1)
        • tool (1)
      • 정보보안기사 (2)
      • IT? (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

    • DreamHack 에 대한 문제들...
  • 인기 글

  • 태그

    cookies
    lfi
    bandit18
    drozer
    wargame
    insecurebankv2
    OSINT
    bandit
    sql injection
    난독화
    bandit17
    Linux wargame
    정보보안기사
    모의해킹
    리눅스 워게임
    overthewire
    bandit20
    webhacking.kr
    php wrapper
    워게임
    php
    Linux
    bandit30
    Dreamhack
    Frida
    CTF
    webhacking
    url encode
    Android
    리눅스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
G_OM
webhacking.kr - old 39
상단으로

티스토리툴바