write-up(web)/webhacking.kr

[Webhacking.kr] old-59

chanchand 2023. 1. 14. 02:57
반응형

문제


 

회원가입과 로그인이 가능하다.

 

<?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')");
  }
?>
<html><head><title>Challenge 59</title></head><body>
<form method=post>
<table border=1>
<tr><td></td><td>ID</td><td>PHONE</td><td></td></tr>
<tr><td>JOIN</td><td><input name=id></td><td><input name=phone></td><td><input type=submit></td></tr>
<tr><td>LOGIN</td><td><input name=lid></td><td><input name=lphone></td><td><input type=submit></td></tr>
</form>
<br>
<a href=./?view_source=1>view-source</a>
</body></html>

 

lv가 admin인 계정으로 로그인하면 문제가 해결된다.

 

 

 

문제풀이


회원가입을 하면 insert문을 통해 입력한 id, phone 정보와 함께 guest로 DB에 추가된다.

sql문을 조작하여 admin으로 가입시켜야 한다.

 

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

필터링을 피해 reverese문을 사용할 수 있으나, phone 문자열 길이 제한에 걸린다.

아래와 같이 가입하고, 로그인하면 문제가 해결된다.

 

 

 

 

반응형

'write-up(web) > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-61  (0) 2023.01.15
[Webhacking.kr] old-60  (0) 2023.01.15
[Webhacking.kr] old-57  (0) 2023.01.11
[Webhacking.kr] old-56  (0) 2023.01.10
[Webhacking.kr] old-55  (0) 2023.01.10