wtfCTF2021

· CTF
이번에 풀이할 문제는 wtfCTF의 k3Y 문제다. 문제 파일과 nc 서버 주소가 주어져 있다. 문제 파일을 ida로 열어 main 코드를 확인해본 모습이다. v5에 rand 함수로 값을 넣은 후 사용자의 입력 값과 xor 연산을 해 -1393689906과 같으면 flag를 얻게 해주는데, 문제는 rand 함수를 쓰기전 srand 함수를 통해 seed 값을 넣어주지 않는다면 랜덤한 값이 나오지 않고, 항상 똑같은 값만 반환된다. 따라서 gdb를 통해 문제 파일을 열어 rand 함수에서 반환되는 값을 알아낸다면 입력 값으로 뭘 줘야 flag를 얻을 수 있는지 알 수 있다. rand로 생성되는 값이 0x6b8b4567인 것을 알 수 있다. 그렇다면 -1393689906 xor 0x6b8b4567한 값을 입력..
· CTF
이번에 풀이할 문제는 wtfCTF 2021의 MoM5m4g1c 문제다. c언어 소스 코드와 nc 서버가 주어져 있다. 일단 bof에 취약한 gets 함수가 보인다. int형 변수 water에 0을 넣은 후, gets 함수를 통해 125byte 크기의 char형 배열 bottle에 입력을 받는다. 그 다음 water의 값이 0인지 체크한 후 0이 아니라면 flag를 얻게 해준다. 간단한 stack buffer overflow 문제다. 200byte 정도의 더미 값을 넣어준다면 오버플로우를 통해 water의 값이 변조돼 flag를 얻을 수 있을 것 같다. from pwn import * p = remote("20.42.99.115", 3000) p.sendline('A'*30) p.interactive() ..
dyp4r
'wtfCTF2021' 태그의 글 목록