간단하게 해결할 수 있는 포너블 문제
풀이수가 작은건 뒤쪽에 있어서 사람들이 많이 시도하지 않아 그런것 같다.
반응형
문제에선 원격으로 접속할 수 있는 주소와
task.c 라는 소스코드가 주어진다.
소스코드의 내용을 보면
int형인 acc 변수를 선언하고
while 내에서 사용자의 입력을 받아
입력한 값을 계속 더해 acc에 저장하는 코드이다.
acc 가 양수인 경우 계속 while 문이 진행되고,
그게 아닐 경우 You win! 과 함께 플래그가 출력된다.
뭔가를 계속 더하는데
더한 결과 값이 음수가 되게 만들어야 한다는 뜻이다.
밑에 있는 조건문 때문에
입력값에 음수를 줄 수는 없는 상황이다.
한번 실행시켜 봤다.
1, 2, 3을 차례로 입력해봤든네
acc에는 1, 3, 6 이 저장되는 것을 볼 수 있다.
입력한 값이 계속 더해지고 있는 것이다.
이 문제는 아주 쉽게 해결할 수 있다.
int 형의 경우 표현할 수 있는 정수의 범위가 한정되어 있기 때문이다.
2,147,483,647 이 최대값이고,
여기에 1을 더하면 가장 낮은 값인 -2,147,483,648 이 되어버린다.
처음에 2,147,483,647 을 입력하고
1을 입력하면
더한 값이 음수가 되어 플래그가 출력되는것을 볼 수 있다.
어떤식으로든 2,147,483,648 보다 큰 숫자를 만들면 된다.
반응형
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] Domain name resolver - 포너블 / Command Injection / IDA (146) | 2023.09.09 |
---|---|
[CTFlearn] Leak me - 포너블 / 포맷스트링 (165) | 2023.09.07 |
[CTFlearn] Finish The Flag - 리버싱 / IDA / XOR (143) | 2023.09.03 |
[CTFlearn] Read in Color - 프로그래밍 / Zsteg (153) | 2023.09.01 |
[CTFlearn] ShahOfGimli - 포렌식 / HxD / Binwalk / AES (158) | 2023.08.26 |