풀이
bughela.pyc :D
파이썬~
python~
[IMPORTANT] SERVER TIME (KST) :
2020/07/29 18:42:36
pyc는 bytecode로 compile된 파이썬 파일이다. 다음 링크에서 decode 할 수 있다.
https://www.toolnb.com/tools-lang-en/pyc.html
PyC decompiler-love data tool
www.toolnb.com
import time
from sys import exit
from hashlib import sha512
def main():
print 'import me :D'
def GIVE_ME_FLAG(flag):
if flag[:43] != 'http://wargame.kr:8080/pyc_decompile/?flag=':
die()
flag = flag[43:]
now = time.localtime(time.time())
seed = time.strftime('%m/%d/HJEJSH', time.localtime())
hs = sha512(seed).hexdigest()
start = now.tm_hour % 3 + 1
end = start * (now.tm_min % 30 + 10)
ok = hs[start:end]
if ok != flag:
die()
print 'GOOD!!!'
def die():
print 'NOPE...'
exit()
if __name__ == '__main__':
main()
현재 시간에 맞춰, seed 값이 정해지고, 그 seed 값을 sha512로 암호화한다.
start, end 또한 현재 시간에 맞춰 값이 바뀌고, 결국, hs[start:end]가 flag가 된다.
여기서 중요한것은 문제에서 제공하는 서버 시간이다.
18시 53분에 찍은 사진이다. 현재 시간보다 서버 시간이 3분 빠르기 때문에, end 값을 결정하는 구문을 바꿔줘야 한다.
해당 파이썬을 실행하면 flag를 얻을 수 있다.
import time
from sys import exit
from hashlib import sha512
def GIVE_ME_FLAG(flag):
if flag[:43] != 'http://wargame.kr:8080/pyc_decompile/?flag=':
die()
flag = flag[43:]
now = time.localtime(time.time())
print(now)
seed = time.strftime('%m/%d/HJEJSH', time.localtime())
print(seed)
hs = sha512(seed.encode('utf-8')).hexdigest()
start = now.tm_hour % 3 + 1
end = start * ((now.tm_min+3) % 30 + 10)
ok = hs[start:end]
print(ok)
if __name__ == '__main__':
GIVE_ME_FLAG('http://wargame.kr:8080/pyc_decompile/?flag=')
'Wargame > wargame.kr' 카테고리의 다른 글
[Wargame.kr] ip log table 풀이 (374p) (0) | 2020.07.30 |
---|---|
[Wargame.kr] SimpleBoard 풀이 (360p) (0) | 2020.07.29 |
[Wargame.kr] web chatting 풀이 (341p) (0) | 2020.07.29 |
[Wargame.kr] php? c? 풀이 (291p) (0) | 2020.07.29 |
[Wargame.kr] img recovery 풀이 (288p) (0) | 2020.07.29 |