CTF | wargame

Hack-me / Adios, Augustus De Morgan! (참, 거짓을 이용한 웹판별)

nopdata 2016. 7. 22. 02:10

Adios, Augustus De Morgan!

힌트를 많이 보고 푼 문제이지만..

이 문제는 암호와는 별 상관이 없지만 Crypto 카테고리 안에 들어있다.

USER 의 BOOL은 고정적이고 PASS값을 입력하는 문제이다.


매우 빠르게 돌아와서 처음에는 확인하기 힘들었지만 제출을 막 눌러보면 'Wrong :(' 이라는 문구가 띄워진다.

보기가 힘들기 때문에 파이썬으로 값을 보내고 응답을 확인해본 결과 'Wrong :(<Script>history.back(-1);</script>'가 돌아오는데 입력한 문자에 따라 돌아오는 갯수가 다르다.

1문자를 넣는다는 가정하에 a를 넣으면 'Wrong :(<Script>history.back(-1);</script>'이 두개가 돌아오고 b를 넣으면  'Wrong :(<Script>history.back(-1);</script>'이 한개가 돌아온다. 즉, 첫번째 문자는 b라는 것이다. 이어서 b이후에 a부터 z까지 해서 찾으면 되는데 문자가 맞을때마다 시간이 조금씩 더 걸린다. 아마 넘기는 중간에 잠시 멈추도록 프로그래밍이 되어있는것 같다.

그래서 만약 답이 abcdefg고 abcdefk를 넣었다면 돌아오는 응답이 걸리는 시간은 1초X6 정도가 된다.

더 빠르게 하기 위해서는 앞에서 틀린값을 일부러 넣어 바로  'Wrong :(<Script>history.back(-1);</script>'메시지가 뜨도록 하면 된다.


url과 table을 선언하고 inp값을 하나씩 늘려준다. inp에는 정답이 하나씩 쌓이게 되는데 다시 보낼때는 틀린값을 넣어야 하므로 lambda함수를 이용했다.

이렇게 해서 Wrong값이 파라미터로 넘긴 값의 길이보다 1개가 더 많으면 맞는 답이 되는 것이다.


정답은 booleanbooleanbeautifulmybaby이다.


Hack me Answer : booleanbooleanbeautifulmybaby