본문 바로가기

Wargame, CTF/webhacking.kr

Webhacking.kr 39번

메인화면

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Chellenge 39</title>
</head>
<body>
<?php
  $db = dbconnect();
  if($_POST['id']){
    $_POST['id'] = str_replace("\\","",$_POST['id']);
    $_POST['id'] = str_replace("'","''",$_POST['id']);
    $_POST['id'] = substr($_POST['id'],0,15);
    $result = mysqli_fetch_array(mysqli_query($db,"select 1 from member where length(id)<14 and id='{$_POST['id']}"));
    if($result[0] == 1){
      solve(39);
    }
  }
?>
<form method=post action=index.php>
<input type=text name=id maxlength=15 size=30>
<input type=submit>
</form>
<a href=?view_source=1>view-source</a>
</body>
</html>

 

소스코드

 

post방식으로 보내고

//는 없애고

'는 ''fh

id값의 0번째 부터 15번째까지만 잘라서 보낸다

select 1 from member where length(id)<14 and id='입력한값

쿼리문으로 보낸다

1이 나오면 클리어

 

일단 쿼리문의 마직막에 '가 빠져있음

마지막 싱글쿼터까지 닫아주면서 어떤 아이디를 가져와야함

싱글쿼터는 넘어가면서 하나가 더 붙지만

substr으로 15번째에 넣으면 자를 수 있음

admin+공백9자리+'

이렇게 보내면

admin         ''가 되지만 '가하나짤려서

admin        '가됨

쿼리문은

select 1 from member where length(id)<14 and id='admin        '

이렇게됨

 

클리어

 

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

Webhacking.kr 43번  (0) 2020.01.28
Webhacking.kr 41번  (0) 2020.01.24
Webhacking.kr 36번  (0) 2020.01.24
Webhacking.kr 34번  (0) 2020.01.24
Webhacking.kr 25번  (0) 2020.01.24