본문으로 바로가기

[System] command_injection / 100

category ICEWALL 2019. 7. 18. 22:56

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