Bace
wargame.kr - php? c? 본문
문제는 다음과 같다.
32비트 어플리케이션의 integer type을 아냐고 물어본다.
문제를 들어가면 다음과 같이 나온다.
소스
d1과 d2를 받는데 ./p7.c 파일을 컴파일하여 /tmp/p7에 생성 후 input1을 넣은 결과가 1이 아니고 input2와 값이 맞아야 flag를 준다고 한다.
일단 현재 경로의 p7.c 에 들어가서 코드를 확인해보았다.
값을 입력받는데 입력받은 값이 0미만이거나 4를 초과하면 1이 되고 5미만이면 i값을 출력해준다고 하는데, i 값에 1부터 4까지 입력해도 i=i+5 때문에 어떤 값을 입력해도 결과값은 1이 된다.
여기서 힌트를 잘 보면 32비트 프로그램이라고 하였으므로 integer overflow를 시도해보았다.
p7.c 코드를 컴파일하여 32비트의 최대값을 넣어보니 1 말고 다른 값이 떴다.
이제 이 값을 d1과 d2에 대입해보았다.
try를 눌러보면 try again이라고 뜬다.
자세히보니 d1부분에 맨마지막 자리인 7이 잘려서 들어갔다.
소스를 보니 d1부분에 maxlength 가 걸려있었다.
maxlength 부분을 삭제하고 다시 값을 넣어봤다.
이번엔 제대로 들어갔다.
try를 누르면 flag가 나온다.
# Auth
'wargame.kr' 카테고리의 다른 글
wargame.kr - type confusion (0) | 2020.02.10 |
---|---|
wargame.kr - tmitter (0) | 2020.02.10 |
wargame.kr - md5_compare (0) | 2020.02.10 |
wargame.kr - strcmp (0) | 2020.02.08 |
wargame.kr - md5 password (0) | 2020.02.07 |