Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

난 정말 최고야 멋있어

CTFLearn - Time to Eat 본문

카테고리 없음

CTFLearn - Time to Eat

n00bh4cker 2019. 12. 12. 21:15

 

EAt 함수 중간에 디버깅 전용 print를 하나 삽입함

print(f"\n ======DBG INFO =====\neat : {eat}\neats : {eats} \neAt : {eAt}\n =====END INFO=====\n")

입력값으로는 숫자3개+영어3개+숫자3개 조합을 받음

 

여기서 eAt 의 값이 E10a23t9090t9ae0140 이여야 플래그를 얻을 수 있다

 

이때 2가지 입력값을 넣어 봤을 때의 디버그 정보

 

case)123abc456

 ======DBG INFO =====
eat : 369654cba321
eats : Eat9654
eAt : E36a96t549cb6a3521
 =====END INFO=====

case)456abc123

 ======DBG INFO =====
eat : 1368321cba654
eats : Eat9321
eAt : E13a68t3291c3ba2651
 =====END INFO=====

 

잘 살펴보면

eat는 A + '입력값을 거꾸로 한 문자열'

eats 는 Eat9 + B

의 형태를 가지고 있고

eAt 는 eats에서 1글자, eat에서 2글자를 따와 하나로 엮은 문자열임을 알 수 있다

 

조금더 살펴보면

A 는 첫번째 3글자 * 3 의 값을 가지고

B 는 마지막 3글자를 거꾸로 한 값을 가진 다는 것을 알 수 있다 

 

E10a23t9090t9ae0140를 분해를 해보면

eat = 1023900tae14

eats = Eat9900

 

eat에서 원본문자열은 41eat009 A는 1023 (아무래도 어떤 조건 때문에 첫글자가 생략된것으로 보임..)

A를 3으로 나누면 341

eats 에서 마지막 세글자는 009

따라서 입력값은 341eat009 가 된다

 

CTFlearn{ eaten_341eat009 }

 

 

소스가 난독화 되어 있어서... 제대로 분해를 못하고 감으로 때려맞춰서 미흡한 부분이 많다..

나중에 시간나면 따로 분석해봐야겠다