해당 바이너리는 헥스레이가 안되서 직접 어셈블리 디버깅하면서 동적분석을 했다.
쭉쭉 디버깅하다보면 일단 환경변수로 team_name이라는 변수에 bi0s값이 세팅되어 있어야되고 이 값을 통해 특정로직을 거쳐 0xc라는 값을 만든다. 그 다음 입력값에 대해 홀수,짝수번째 나눠서 간단한 연산을 할 때 위에서 구한 값을 사용한다.
대충 아래와 같이 스크립트 짜서 돌려주면 플래그가 나온다.
result = "?5b9no=k!5<jW;h7W~b4#|"Find Flag = l34rn_7h3_b451c5_f1r57
a = ""
for i in range(len(result)-1,-1,-1):
if i%2==1:
a += chr((ord(result[i])^0xc)-4)
else:
a += chr((ord(result[i]) ^ 0xc) + 4)
print "Find Flag = " + a
'CTF > Writeup' 카테고리의 다른 글
SCTF 2018 dingJMax (0) | 2018.10.30 |
---|---|
SECCON 2018 Quals GhostKingdom (0) | 2018.10.29 |
BSides Delhi CTF 2018 avap (0) | 2018.10.29 |
BSides Delhi CTF 2018 auth3ntication (0) | 2018.10.29 |
BSides Delhi CTF 2018 Old School SQL (0) | 2018.10.29 |