webhacking.kr - old 18 (SQL Injection)

2024. 3. 6. 18:50·Wargame/Webhacking.kr

 

 

 

대놓고 'SQL INJECTION'  쓰여 있다.

먼저 코드를 확인해보자.

 

 

 

 

 

 

 

 

 

 

 

 

php 코드를 중점으로 보면 될 거 같다.

 

 

 

 

 

 

<?php
if($_GET['no']){
  $db = dbconnect();
  if(preg_match("/ |\/|\(|\)|\||&|select|from|0x/i",$_GET['no'])) exit("no hack");
  $result = mysqli_fetch_array(mysqli_query($db,"select id from chall18 where id='guest' and no=$_GET[no]")); // admin's no = 2

  if($result['id']=="guest") echo "hi guest";
  if($result['id']=="admin"){
    solve(18);
    echo "hi admin!";
  }
}
?>

 

if($_GET ['no']) 에서 'no'라는 매개변수를 확인하는 거 같다.

 

데이터베이스를 연결하고 그 밑에는 필터링이 있다.

 

if(preg_match("/ |\/|\(|\)|\||&|select|from|0x/i",$_GET ['no'])) exit("no hack");

여기서 특수기호들과 select, from 등  SQL injection를 막는 거 같다.

preg_match에서는 공백을 필터링시켜버린다

 

위에 코드에는 없지만 원본을 보면 주석으로 '// admin's no = 2'라고 힌트를 줬다.

 

 

 

 

 

 

 

 

 

 

2가 아닌 1을 먼저 대입해 봤더니 guest로 접속이 되었다.

 

2를 넣었을 때는 아무 일도 일어나지 않았다.

(select id from chall18 where id='guest' and no=2' 부분에서 and연산으로 인해 거부당한 것)

 

일단 핵심은  no 값에다가 2를 넣으면 될 거 같다.

 

select id from chall18 id='guest' and no=0 or no=2

 

이렇게 공격을 하면 필터링에서 걸러진다 그러면 필터링을 우회해야 한다.

url encode 방식으로 문자열을 URL로 사용할 수 있도록 인코딩 시키는 것이다.

 

하지만 굳이 이렇게 쓸 필요 없고 no값만 건 들여보도록 하자.

 

no=0%09or%09no=2

 

input 칸에 다가 넣으면 문자열로 받아들이기 때문에 URL로 인코딩 시킨 만큼 URL 에다가 대입해 보자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제가 풀렸다.

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

webhacking.kr - old 03 (SQL Injection)  (0) 2024.03.08
webhacking.kr - old 26 (URL Encode,Decode)  (1) 2024.03.08
webhacking.kr - old 16 (ASCII)  (0) 2024.03.06
webhacking.kr - old 06 (base64)  (0) 2024.03.06
webhacking.kr - old 14 (code)  (0) 2024.03.05
'Wargame/Webhacking.kr' 카테고리의 다른 글
  • webhacking.kr - old 03 (SQL Injection)
  • webhacking.kr - old 26 (URL Encode,Decode)
  • webhacking.kr - old 16 (ASCII)
  • webhacking.kr - old 06 (base64)
G_OM
G_OM
최대한 설명 열심히 하려고 합니다. 궁금한 거 있으면 언제든지 물어보셔도 좋습니다.
  • G_OM
    끄적끄적
    G_OM
  • 전체
    오늘
    어제
    • 분류 전체보기 (139) N
      • 모의해킹 (8) N
      • Wargame (69)
        • Linux_bandit (33)
        • Webhacking.kr (36)
      • DreamHack (52)
        • WEB (14)
        • Reverising (9)
        • System (0)
        • CTF (22)
      • Android_security (5)
      • 정보보안기사 (2)
      • IT? (3)
  • 블로그 메뉴

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

  • 공지사항

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

  • 태그

    php
    bandit18
    워게임
    bandit17
    url encode
    php wrapper
    webhacking
    리눅스
    안드로이드
    bandit30
    sql injection
    정보보안기사
    union
    Linux wargame
    CTF
    drozer
    Cookie
    webhacking.kr
    Dreamhack
    리눅스 워게임
    cookies
    난독화
    bandit
    lfi
    wargame
    Linux
    overthewire
    insecurebankv2
    Android
    bandit20
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
G_OM
webhacking.kr - old 18 (SQL Injection)
상단으로

티스토리툴바