티스토리 뷰

2016 CSAW CTF Quals



MISC - Regexpire



Exercise


Regexpire 문제, 정규 표현식 관련된 문제이다.





Solution


서버에 접속해보면, 아래와 같이 정규 표현식이 나오고, 아래 정규 표현식을 맞출 수 있는지 묻는다.




reverse regex 에 대해서 google 에 찾아보면, rstr 이라는 라이브러리가 나오는데, 간단하게 역 정규식을 수행할 수 있다.


import rstr

rstr.xeger(r’Regex String’)


위 명령어를 수행하면, 주어진 정규식에 대해 매치 되는 풀린 문자열이 나오는 것을 확인할 수 있다. 정규식에 부합하는 문자열을 서버로 재전송하면, 다시 정규식이 리턴되고 계속해서 반복작업~




1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

from pwn import *

import rstr

import time

s = remote("misc.chal.csaw.io", 8001)

cnt = 1

data_ = s.recvuntil("\n")

print str(data_).replace('\n','')

for i in range(1001):

   print "============================================="

   print "[*]",cnt

   regex_str = s.recvuntil("\n").strip()

   print "[+]",regex_str

   print "[-]",rstr.xeger(r'%s'%(regex_str))

   unregex_str = rstr.xeger(r'%s'%(regex_str)).replace('\n','\t')

   s.sendline(unregex_str)

   cnt += 1

   print

   time.sleep(0.2)

print s.recvall()

Colored by Color Scripter

cs



1000번 돌리니 flag 뜨는 것을 확인할 수 있다.





flag{regularly_express_yourself}



댓글
댓글쓰기 폼