PicoCTF 13번 문제 ( keygenme-py )
안녕하세요 Cow Hacker입니다.
https://play.picoctf.org/practice/challenge/121?page=2
keygenme-py라는 제목의 13번 문제를 풀어 볼 거다.
키진미?
키젠미?
문제의 제목은 지놈을 잘못 적었다고 한다.
일단 문제에 첨부된 파이썬 파일을 설치했다.
243줄을 가진 코드 파일이었다.
코드를 실행시켜보니 위 사진처럼 출력됐다.
먼저 a를 입력해 Astral 마나를 구하는 가 싶었다.
a를 입력하니, SOL 이란 행성이 가장 가까운 행성이라고,
어디로 가고 싶냐 묻는 질문이 나왔다.
코드를 보니 a를 입력받으면 estimate_burn() 함수가 출력된다고 한다.
코드를 보니, star_db_trial라는 리스트에서 값을 가져오는 거 같아서 어떤 리스튼지 봤다.
많은 행성 들이다. 숫자가 붙어 있었다.
난 Ross 154를 선택할 거다.
그냥 그 숫자에 2 제곱, 3 제곱 한 값을 보여줬다.
음.. b를 한번 봐야 했다.
정식판 사용이라니!
c를 입력받을 때 출력되는 함수를 봤다.
if문 check_key함수를 봐야겠다.
Key_full_template_trial의 글자 수와 내가 입력한 글자 수가 같아야 else문으로 넘어가는 걸 확인했다.
Key_full_template_trial라는 변수는 위 3개의 변수를 합친 녀석이었다.
글자의 길이는 32였다.
하지만 if문을 무시하고 else문으로 와도 for문에서 항상 False가 나올 수밖에 없었다.
Key변수와 Key_part_static1_trial변수의 길이는 다르기 때문이다.
그럼 if문으로 넘어왔을 땐 어떤 행동을 하는지 봤다.
username_trial변수에 해쉬 sha256을 통해 헥사 값으로 내보는 모양새였다.
그리고 이 값은 dynamic part라고 한다.
출력된 값을 보면 0d208392가 나왔다.
나온 값을 xxxx... 된 곳에 넣고 입력하면 py파일 생성을 한다.
처음, 정식판을 사용하라는 녀석이 만들어진 것이다.
정식판을 사용하라는 구문이 없는 것이 출력됐다.
13번 문제 풀었다.
키 찾는거 솔직히
지 멋대로 코드 수정해 Flag
놈 을 찾아 내도 됐잖아?