문제를 확인하였다.
문제에서 엄마? 내 입력을 컴퓨터 프로그램에 어떻게 전달할 수 있습니까? 라고 말하고 있다.
문제에 접속하였다.
먼저 C 코드를 확인해보자.
전체적으로 코드를 보았을 때 Stage 1부터 5까지 모두 통과해야 플래그를 얻을 수 있다.
먼저 Stage1을 통과해야 하는 조건을 보자.
1. 인자의 개수 = 100개 2. argv['A'] = \x00 2. argv['B'] = \x20\x0a\x0d |
이 세 가지 조건을 만족하면 Stage 1을 성공할 수 있다.
Stage2를 보면 stdin으로 \x00\x0a\x00\xff 입력 값을 주고 sterr로 \x00\x0a\x02\xff을 주어야 성공할 수 있다.
Stage 3을 보면 환경변수와 관련 되었다는 것을 알 수 있다. \xde\xad\xbe\xef 라는 환경변수에 \xca\xfe\xba\xbe 값을 넣는다.
Stage 4를 보면 \x0a라는 파일을 열고, 읽어온 첫 4바이트가 \x00\x00\x00\x00이면 성공이다.
Stage 5를 보면 atoi(argv['C']) = argv['C']의 정수형으로 변환한 값을 포트번호로 소켓서버를 열고 \xde\xad\xbe\xef 을 보내면 성공이다.
여기서 코드를 짜고 문제를 풀면 되는데 vi 편집기가 잘 작동하지 않는다.
'Pwnable > Pwnable CTF' 카테고리의 다른 글
[Pwnable.kr] Toddler's Bottle_mistake (0) | 2021.04.27 |
---|---|
[Pwnable.kr] Toddler's Bottle_leg (0) | 2021.04.27 |
[Pwnable.kr] Toddler's Bottle_random (0) | 2021.04.06 |
[Pwnable.kr] Toddler's Bottle_passcode (0) | 2021.03.31 |
[Pwanable.kr] Toddler's Bottle_flag (0) | 2021.03.31 |