[ch4n3] 초보 개발자의 일기 (Web)
초보 개발자의 일기 (Web)Created by ch4n3 | You can get 150point! 진짜 초보같은 개발자가 DB를 이용해서 일기를 만들었다고 한다. CSS하고 DB를 보니까 진짜 초보인가 보다. http://chaneyoon.dothome.co.kr/h3x0r.php |
위 URL로 들어가면 "초보개발자의 하루"라는 일기 형식의 웹이 나온다.
일기를 보려면 일을 입력해달라고 나오는데... 1~31까지 입력하면 그날의 일기가 나온다. (참고로 하나하나 보면 꽤 재미가 쏠쏠하다 ㄷㄷ)
먼저 소스보기를 통해 소스를 보았다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>초보 개발자의 일기</title> <script src="./javascript.js"></script> <link rel="stylesheet" type="text/css" href="./style.css"> </head> <body> <div class="container" align="center"> <div class="header"> <br><br><br><br><br> <p align="right" style="font-family: 'Noto Sans KR', sans-serif; color: darkgrey;" class="title">made by ch4n3</p> <h1 align="right" style="font-family: 'Noto Sans KR', sans-serif;" class="title"> <a href="./index.php" class="title">초보 개발자의 하루</a> </h1> </div> <p>히힛 오늘은 개발 배우기 시작한지 딱 한달되는 날이다! 정말 기분 좋다ㅎㅎ</p> <p>개발할 때 마다 일기를 쓰고 있는데 정말 재밌는 것 같다.</p> <textarea id="daily" rows="1"></textarea> <button type="button" id="submit" value="일기 보기" class="button5">일기보기</button> <p>일기를 보려면 일(日)을 입력해주세용~~ (ex. 1)</p><br><br><br> <div id="daily_note" class="daily"> <!-- Vmtkb2NHTXhPWEJqTVRsMVlqTlNabGxXT1VkVVJVWkk= --> </div> </div> </body> </html> |
먼저 위의 초록색 <!-- Vmtkb2NHTXhPWEJqTVRsMVlqTlNabGxXT1VkVVJVWkk= --> 이 부분이 눈에 띈다.
base64로 인코딩이 여러번 씌워져있어서 디코딩을 여러번 수행해보았다.
그 결과 아래와 같은 것이 나왔다.
This_is_not_a_FLAG
... ㅂㄷㅂㄷ
다른것을 살펴보도록하자... 초보 개발자라고 하니 (사실 필자보다 훨 낫긴하지만 ㅠ)
/javascript.js , /style.css 가 눈에 띄어서 살펴보았다.
먼저 style.css 에는 크게 특별한게 없었다... 굳이 특별한게 있다고 치면 아래내용?
/* Nice try.. but flag is not in this css file.. */
ㅋㅋㅋㅋㅋ 또 한방먹었다.
이제 javascript.js 를 살펴보면
var isEmpty = function(value){ if( value == "" || value == null || value == undefined || ( value != null && typeof value == "object" && !Object.keys(value).length ) ){ return true }else{ return false } }; function daily(e) { var daily = document.getElementById("daily").value; var query = 'daily=' + daily; var http = new XMLHttpRequest(); var url = "./json.php"; var params = "daily=" + daily; http.open("POST", url, true); http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.onreadystatechange = function() {//Call a function when the state changes. if(http.readyState == 4 && http.status == 200) { var res = http.responseText; res = JSON.parse(res); if(isEmpty(res[0].daily)) { var element = "<br>2016년 1월 " + daily + "일의 일기가 없음 T.T"; } else { var element = "<br>2016년 1월 " + daily + "일" + "<br><br><br>" + res[0].daily; } document.getElementById("daily_note").innerHTML = element + "<br><br>"; } } http.send(params); } window.onload = function() { document.getElementById("submit").onclick = daily; };
|
날짜값을 얻어 일기를 띄워주는것 같다.
여기서 다른것은 잘 모르겠고... 사실 잘모른다 ㅠ;
./json.php에 무언가 있을거같아서 들어가 보았다.
아니다 다를까;
[{"daily":null},{"V20xNGFGcDNQVDA9":"Vm0wd2QyUXlVWGxXYTJoV1YwZG9WVll3Wkc5alJsWjBUVl .... "}
많이 생략하였지만 무언가 들어있다.(생략은 필자가 했다.)
daily가 null일 경우 출력해주는 것같다.
하지만 위 isEmpty 함수에 의해 null값이 들어가면 "일기가 없음 T.T" 가 뜨게 되어있으므로 flag값은 아마 일기의 일이 null일때에 숨겨뒀음을 알수 있다.
base64로 다시 풀어보면 아래와 같이 나온다.
flag : heh3_Th4t_w45_f4ke!_Im_sorry
'Write-up > Web' 카테고리의 다른 글
[ch4n3] Strcmp (Web) (1) | 2017.03.08 |
---|