write up

x-mas ctf Endless Christmas

slyfizz 2018. 12. 24. 09:48


시험이 끝난후 친구들과 x-mas ctf에 참여했다.

난 Reversing Endless Christmas를 풀었다.


주어진 바이너리를 열면 fileXXXXXX(X에 랜덤한 알파벳이 들어감)라는 형태의 랜덤한 파일에 권한 등을 줘서 생성한 후에  execve를 이용해서 이 프로그램을 종료하고 새로운 프로그램을 실행한다는 사실을 알 수 있다.


여기서 마지막으로 생성된 file56US0D를 ida로 열어보면



이런 루틴이 나온다.


buf에 "U @L^vi>n=i>R9;9<cR9ciR9;9<cR9ciR9;9<cR9ciR9;9<cR9ciRka9;p"가 들어가므로 0xd와 한글짜씩 xor하면 


1
2
3
4
5
table="U @L^vi>n=i>R9;9<cR9ciR9;9<cR9ciR9;9<cR9ciR9;9<cR9ciRka9;p"
flag=""
for i in range(len(table)):
    flag+=chr(ord(table[i])^0xd)
print(flag)
cs


플래그가 나온다.

flag:X-MAS{d3c0d3_4641n_4nd_4641n_4nd_4641n_4nd_4641n_4nd_fl46}