728x90
반응형

tmitter

you need login with "admin"s id!

===========================

create table tmitter_user(
idx int auto_increment primary key,
id char(32),
ps char(32)
);

 

 

join.php의 소스를 보면, 하단에 힌트가 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
<head>
 <style>
  body {background-color:#eef;}
  table td {text-align:center; background-color:#dde;}
  .ex {text-align:left; color:#99a; font-size:9pt;}
 </style>
 <script>
  function chk(f){
   if(f.id.value.length<4){alert("chk id"); return false;}
   if(f.ps.value.length<7){alert("chk ps"); return false;}
   return true;
  }
 </script>
</head>
<body>
<center>
 <img src="./tmitter.png">
 <form onsubmit="return chk(this);" method="post">
  <table>
   <tr><td>ID</td><td><input type="text" name="id" maxlength="32"></td><td class="ex">at least 4char</td></tr>
   <tr><td>PS</td><td><input type="password" name="ps" maxlength="32"></td><td class="ex">at least 7char</td></tr>
   <tr><td colspan=2><input type="submit" value="join"></td></tr>
  </table>
 </form>
</body>
<!-- hint : you need join with admin -->
 
cs

 

admin으로 회원가입을 해야 한다.

 

그러나 id가 admin인 계정을 생성하려고 하면, admin이라는 계정이 존재한다고 나온다.

 

 

 

php 페이지 상에서 trim(id) 한 값이 db에 있는 id중에 있는지 확인 한 후, db에 들어가는 것 같다.

trim() : 문자열의 앞과 뒤의 공백을 제거

 

 

 

"admin"+""*(32-5)+"dummy"를 id에 입력해주면

 

"admin"+""*(32-5)+"dummy" != "admin" 이기 때문에 존재하지 않는 id가 되며,

 

id char(32) --> id에는 32글자밖에 못들어가므로, "admin"+""*(32-5)+"dummy" 중 32글자가 들어가고, 뒤에 dummy가 잘리게 된다. 뒤에 남은 공백은 trim으로 날라가서 id가 admin으로 가입이 완료된다.

 

 

 

가입 페이지의 id입력란 길이가 32글자로 제한되어 있는데, f12개발자 도구 이용해서 간단히 수정해주면 된다.

 

728x90
반응형

'WAR GAME > wargame.kr' 카테고리의 다른 글

Wargame.kr [img recovery] 풀이  (0) 2019.12.31
Wargame.kr [type confusion] 풀이  (0) 2019.12.31
Wargame.kr [fly me to the moon] 풀이  (0) 2019.12.24
Wargame.kr [DB is really GOOD] 풀이  (0) 2019.12.24
Wargame.kr [strcmp] 풀이  (0) 2019.12.24

+ Recent posts