[어설픈] webhacking.kr 20번 문제풀이

2019. 2. 21. 23:47Web Hacking/Webhacking.kr

안녕하세요! 

오늘은 webhacking.kr 20번 문제를

풀어보도록 하겠습니다!


문제에 접속하니 

아래와 같이 

뜨네요!


밑에 javascript challenge라고 적혀있는데

잘렸네요!


뭐 저희가 nickname, comment, code에 값을 

입력하고 submit을 눌러야 하나보죠?



일단 뭐 어떻게 작동하나

문을 "똑똑똑" 해볼려고


nickname에 1

comment에 1

code에는 code 옆에 있는걸 그대로 복사했습니다!

(code에도 1을 넣어봤는데 submit을 눌러도 반응이 없어서...)


그랬더니 아래와 같이

제일 먼저 Wrong이라는 글자가 

갑자기 뜨고! 곧바로 사라집니다

그리고 두 번째로 바뀐 거는 code옆에 있는 문자가 바뀌었습니다


그래서 저는 "뭐 어떻게 해야 맞는거야?, 조건이 어디있어?"

라는 생각을 가지고 개발자 도구를 켰습니다


이것보다 위에 있던 코드는 

nicknam과 comment에 대한 코드였는데

직접 보시면 아시겠지만,

별거 없었습니다


그래서 좀 더 관심이 가는 부분만을

발췌해서 가져와 봤습니다!

뭔가 input name이 하나는 hack이고

나머지 하나는 attackme로 되어있어서요!


물론 attackme는 input태그긴 하지만 

저희가 값을 바꿀 순 없어요!


근데 사실 여기까지도 다 별볼일 없는 부분이구요 ㅋㅋ

중요한 부분은 이제 시작해요!


submit의 버튼을 누르면 

onclick="ck( )"

ck함수가 실행되네요!



그리고 스크롤 내리니 바로 아래에 

ck 함수에 관한 코드가 나오네요!


자바스크립트인데 한줄씩 해석해 보겠습니다


만약 nickname(id)값이 없으면 nickname에 커서를 놓고 함수종료

만약 comment(cmt)에 값이 없으면 comment에 커서를 놓고 함수종료

만약 hack에 값이 없으면 hack에 커서를 놓고 함수종료

만약 hack의 값과 attackme(이상한 문자열)값이 불일치하면 hack에 커서 놓고 함수종료


이 조건들을 all-pass하면 

요청이 보내진다!



그래서 저는 신나서 바로 개발자 도구의

console창에 들어가서 

아래와 같이 해당영역들에

값을 넣고 


마지막 hack의 값과 attackme의 값이 같게 만들려고

attackme의 값을 hack에 대입하라고 명령어를 입력했습니다



그리고 다시 submit 버튼을 눌렀는데

아래처럼 안됐습니다..


뭐지? 새로고침해서 해야하나?

새로고침해서 해도 (당연히) 안됐습니다


※새로고침하면 response값을 다시 받아오기 때문에

저희가 입력한 것들이 모두 초기화 되요 :)


그때 이제 눈에 들어온게

time limit : 2 였습니다


처음에는 2번 시도할 가능으로 잘못 봤었는데

잘보니 시간이더라구요!

근데 시간이 2라는데 단위가 안주어졌잖아요


2시간? 2분? 2초?

생각해보니 나머지 단위는 상관없을 거 같은데,

2초안에 입력해야하는 거면 좀 많이 빡센 거 같고...


실제로 초집중해서 10초안에 입력해도 안되길래

이거는 단위가 초가 맞구나!

2초안에 입력해야 하는구나 확실해 졌습니다 

그래서 저는 

2초안에 저걸 일일이 다 치는건

불가능이고 어떻게 해야할까 하다가


어차피 다 자바스크립트이기에

콘솔창에다가 명령어 입력 한꺼번에 하면

되겠구나! 생각했습니다


근데 여기서 주의할게 

input 창에 값을 넣는다고 끝나는 게 아닙니다!

submit 버튼도 눌러야 해요!


그럴려면 lv5frm.submit( );도 

콘솔창에 입력해야 합니다


그래서 저는 콘솔창을 켜놓고 

이미 저렇게 값 명령어 적어놓고

새로고침 누르자마자 바로 

console 창에서 enter를 치니


이렇게 congratulation!이라고 뜨면서

문제가 풀리네요!


고생하셨습니다!