Reversing&Write up/CTF 3

[LeagueOfGuardians 2] EnteredFLAG

[LeagueOfGuardians 2] EnteredFLAG 64bit 바이너리입니다. 입력을 받고 아무 출력을 하지 않고 꺼집니다. 사실 이 문제는 팀원들이 “angr 문제다”라고 하자마자 잡은 문제입니다. 어제 이 대회를 준비하면서 angr를 설치하다가 계속 오류가 나서 애를 썼는데, 문제가 나왔으니 일단 도전은 해보자 해서 풀게 되었습니다. 이렇게 한 문자씩 가르쳐주는 함수들이 있고, 이 모든 걸 우회하면 플래그가 나올 것입니다. . . . 바로 저 부분이 플래그를 출력해주는 부분인데요. 주소를 확인해봅시다. 0x400DEF네요. 바로 파이썬 코드를 작성해보겠습니다.

[제 1회 Root CTF] EGG - (863 point)

ltrace로 열어서 아무 문자열이나 넣어주면, 어떤 값과 xor해서 저 문자열이랑 비교합니다. 저 문자열을 복붙해서 다시 넣으면, flag가 나옵니다. ltrace는 leviathan 문제를 겨우 분석해서 풀었는데, ltrace를 쓰면 바로 풀리는 걸 보고 얼마 전에 배웠습니다. 그 덕에 간단하게 풀 수 있었던 것 같습니다. 확인 차 넣어주면 알이 부화합니다. FLAG{An1v1a_3GGniViA_3Ni6mA}

[제 1회 Root CTF] Stage Game - (229 point)

level 1 ~ 10 시간을 늘려가면서 Sleep을 때립니다. 여기가 Y/N 받는 부분인데 밑에 일정하게 함수가 있는 걸 보니 Stage인 것 같습니다. Y를 1로 받기 때문에 1을 넣으면 밑에 Stage 함수로 갈 수 있습니다. Sleep 함수를 호출합니다. 그 전에 인자를 넣어주는데 그게 얼만큼 오래 Sleep하는지 결정하는 인자이기 때문에, 그걸 0으로 바꿔주면 바로 넘어갈 수 있습니다. 이 값을, 0으로 바꿔주면 넘어갑니다. Stage2도 마찬가지로, 0으로 바꿔주면 넘어갑니다. 8번만 더하면 됩니다.함수 밑에 바로바로 연결되어 있어서 BP 걸고 F9하면 금방 풀립니다. (F7 F8 실수 계속해서 푸는데 30분 걸렸다… 알고도 당하는 Stage..) FLAG{Y0ur_p4t1enc3_1s_gr3..

반응형