본문 바로가기

WARGAME

(90)
PE - SEHVEH 우선 열어보자~!저 함수를 분석해보면된다~ 실행하고 6자리를 입력해봤다 대부분 ECX 레지스터 문자열 길이와 관련이 있다그만큼 반복하기 때문에근데 6자리를 입력했는데 9가 나온다 그리고 cl에 F0을 더해서FF와 비교한다그럼 계산을 해봤을 때문자열의 길이가 12자리라는것을 알 수 있다6자리를 입력했는데 9가 나온걸 보면3+되었다그럼 F가 15이니깐 12자리를 입력해야한다12자리를 입력하면 je ch17.11614AD를 만족해서 점프를 뛴다 그리고 조금 내리면 이렇게 4자리씩 찾을 수 있다내가 입력한 앞에 4자리와 EDX를 XOR해서 비교한다그럼 반대로 3628552E와 5A643059를 XOR하면 된다0x6c4c6577 이렇게 나오는데 이렇게 나온다그럼 리틀엔디안으로 weLl이렇게 4글자를 찾았다 다음으..
ELF - No software breakpoints 너무 어려운거같아서 이번에도 angr를 사용해 풀었다이문제는 원래 ROR를 해서 비트를 뒤집는데 이건 코딩으로 풀어야한다
PYC - ByteCode 파이썬 pyc파일을 주는데 구글에 검색해보면 easycompiler가 있다이걸 사용하면 .dic로 디컴해준다 이제 소스를 읽으면 끝인데이렇게 한글자씩 맞춰갔다 총 몇번을 실행했는지 참
ELF - ARM basic 이번문제는 arm인데 arm환경이 없어서 직접 디버깅을 하지 못했다그래서 angr이라는 바이너리 분석 프레임워크를 사용해보록하겠다값을 디버깅해서 확인할 수가 없다이렇게 분기가있는데이렇게 코딩을 한다0x8634를 EIP로 맞추는데 0x8644는 피해가도록 설정한것이다위에 6*8은 8은 모르겠지만 6은 6글자를 의미한다
ELF - Ptrace 우선 ptrace를 수정해서 넘기고noting을 보면이렇게 나와있다 ida 원격 디버깅을 통해 브포를 걸고 수정을해서 넘긴다noting을 보면 이런식으로 나오는데 총 4번 분기한다0x65는 e임으로 3번 더 돌리면 easy라는 값을 구할 수 있다
ELF - Fake Instructions 이번문제는 음...근데 대체적으로 ELF문제 뿐인거같다 이번엔 사진이 좀 많은데WPA를 보면문자열을 비교해서 blowfish를 호출한다그냥 이 함수를 호출하면 알아서 비번이 나올거같다원래 바이너리 닌자를 사용하려했지만demo에서 save기능을 지원하지 않으므로그냥 gdb에서했다 (ida로 원격 디버깅으로 풀어도된다)WPA다여기서 문자열을 비교한다 eax를 0으로 만들어주면 그냥 넘어갈것이다p명령을 사용해 0으로 바꿔주고 끝 nini를 하다보면 그냥 플래그가 나타난다
PE DotNet - 0 protection 이번에도 ㅇㅇㅇㅇ 문자열 비교하는 부분이다.DotNetOP
ELF C++ - 0 protection 이번문제는 실행하니깐 풀렸다내가 입력한게 v24랑같아야하는데v24는 0x8855B24를 나타낸다저기로 가보면ㅇㅇㅇㅇㅇ Here~~~stuffs까지