UMDCTF에 많은 시간을 할당하지 못하여 문제를 풀지 못하였는데 참여 경험으로도 많은 도움이 되었습니다.
기본적인 문제였던 것 같았지만 본격적인 pwnable문제를 접하면서 더욱 공부가 필요하다는 것을 느꼈습니다.
이번 연도에는 확실하게 더욱 알기 위해 많은 시간을 투자해야겠다고 생각을 하게 만든 대회였습니다.
이제 writeup을 작성해보겠습니다.
reverse engineering, misc, pwnables, crypto, forensics, advantageous adventures, web, steganography, osint, programming 문제 중 pwnables와 forensics문제를 정리해보겠습니다.
pwnables
첫 번째 pwnable문제로 메모리 보호 기법을 확인하면 NX가 disabled로 걸려있지 않은 것을 확인할 수 있을 것입니다.
그렇기에 쉘 코드를 이용하여 풀면 될 것으로 보였지만, 쉘 코드를 삽입하여도 되지 않아 처음부터 당황했던 문제였습니다.
처음에 당황한 문제여서 직접 풀지는 못하였고, 팀원분이 ROP을 이용하여 풀었습니다.
대회가 끝나고 확인하였는데, 아직 쉘 코드 방법은 못하였기에 시간이 생기면 해볼 계획입니다.
JNE문제는 get_flag() 함수로 점프하기만 하면 되는 문제였습니다.
그렇기에 jump함수와 get_flag함수를 디버깅하여 확인한 후, jump함수의 v1변수 크기인 0x40과 stack frame pointer크기인 0x8의 크기를 더하고 get_flag함수의 주소를 리턴하도록 하여 실행시키면 됩니다.
JNW문제는 ROP문제로 JIE에서 메모리 보호 기법만 더해진 문제입니다.
NX bit가 걸려있어 ROP을 이용하여 우회하여 권한을 획득하는 문제로 leak 하여 system함수에 /bin/sh을 호출하는 형태로 이 문제도 다시 한번 풀어볼 문제입니다.
forensics
png파일을 HxD로 열어보았을 때, hex값을 확인하면 값들을 뒤집어 놓은 것을 확인할 수 있습니다.
그렇기에 reverse명령을 통해 파일을 뒤집어 재생성해주면 됩니다. 그렇게 파일을 뒤집어 저장하면 flag를 확인할 수 있습니다.
'TeamH4C_ProjectH4C > CTF' 카테고리의 다른 글
[TeamH4C_CTF] 2021 HackPack write-up (0) | 2021.04.23 |
---|