- 문제
RE GEX (250 pts)
Wow that's a big regex.... luckily regular languages are easy.
Server with this regex running at 52.6.11.111
파일 :
re_gex_62d057a9a99036ae4ca64d84e02b4833.py
regex_57f2cf49f6a354b4e8896c57a4e3c973.txt
엄청 큰 정규표현식이 존재하며 정규표현식에 필터링되지 않는 문자열을 찾아야 한다.
정규표현식은 | 연산으로 여러 개의 표현식이 묶여 있다.
첫번째 정규표현식 .*[^plaidctf].* 는 문자가 모두 plaidctf로 구성되어야 한다는 것이며 두 번째 세 번째 정규표현식 .{,170}|.{172,}는 문자열 길이가 171글자라는 것을 확인할 수 있다.
그 이후의 표현식들은 특정 자리의 문자가 오면 안되는 표현식이 존재한다.
예를들면 네번째 표현식 .{88}[padt].{60}[licf].{6}[plai].{14} 는 89번째 문자가 [padt] 150번째 문자가 [licf] 157번째 문자가[plai]를 만족하면 안된다는 것이다.
처음 문제를 보고 접근한 방법은 문자열을 생성하여 문자열이 정규표현식에 매칭되는지 확인해보는 것이였다.
위처럼 확인을 하니 어느 정규표현식에 매칭되는지 확인할 수 없어 정규표현식을 한줄씩 나눠서 저장하였다.
그 후에 check소스를 약간 수정하여 확인
이렇게 수정 후 확인을 하니 내가 입력한 문자열이 어느 부분의 정규표현식과 매칭되는지 확인할 수 있었다.
처음에는 결과 값을 보고 수동으로 한 글자씩 수정 후 답을 구하려고 했으나... 정규표현식은 2562개나 되는데 600번까지 진행 하는데 시간도 좀 걸리고 귀찮아서 코드로 작성하려고 하였다. 하지만 이 문제를 늦게 봐서 그런지 종료시간까지 코드 작성이 불가능할거 같아서 포기...
조금 일찍 봤으면 이 문제까지 풀 수 있지 않았을까.. 하는 아쉬움이 남는다
'CTF > Hacking Defense Contest' 카테고리의 다른 글
[Volga CTF 2015] Crypto, Reverse - gostfuscator (0) | 2015.05.07 |
---|---|
[Plaid CTF 2015] Pwnable - EBP (0) | 2015.04.21 |
[Plaid CTF 2015] Forensic - PNG Uncorrupt (0) | 2015.04.21 |
[Plaid CTF 2015] Crypto - Curious (0) | 2015.04.21 |
[Plaid CTF 2015] Reversing - Clifford (0) | 2015.04.21 |