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개발자 도구 이용해서 간단히 수정해주면 된다.
'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 |