Download: vuln
64bit ELF 바이너리 파일이다. 간단하게 IDA로 디컴파일해서 내용을 확인한다.
isSafe 함수로 문자열을 검사하고 조건에 들어맞을 경우 print를 통해 출력한다.
print를 간단히 정리하면 최종적으로는 다음을 호출한다는 것을 알 수 있다.
system("echo \"Hello! {s}! Have a nice day!\"");
s에 사용자의 입력이 들어간다. Command Injection이 가능한 형태 중 하나다.
isSafe에서는 Byte 값이 32, 48~57, 65~90, 96~122 에 해당되지 않는 경우 false를 return한다.
대충 보면 잘 눈치채지 못하겠지만, 모든 글자는 공백, 숫자, 대문자, 소문자여야 한다. 놀랍게도 Off-by-one 버그로 ` (Grave Accent) 도 입력할 수 있다.
입력으로 `ls`를 넣을 경우 flag가 최상단 디렉토리에 위치함을 알 수 있고 `cat flag`를 넣으면 flag를 얻어올 수 있다.
'ICEWALL' 카테고리의 다른 글
[System] typing_practice / 200 (0) | 2019.07.19 |
---|---|
[System] fsb32 / 150 (0) | 2019.07.19 |
[System] canary / 150 (0) | 2019.07.19 |
[System] bofbaby2 / 120 (0) | 2019.07.18 |
[System] bofbaby1 / 100 (0) | 2019.07.18 |