
저는 현재 Google 사이버 보안 Coursera 자격증 과정을 수강하고 있습니다. 저는 지금 Linux 섹션에 있고 몇 가지 Linux 명령을 배우고 있습니다. 완전히 처음이지만 한 가지 궁금합니다. 나는 배우는 동안 항상 방어자나 공격자가 해당 명령을 어떻게 사용할 수 있는지 생각하려고 노력하고 최근에는 echo >
명령과 그것이 모든 것을 덮어쓸 수 있는 방법에 대해 배웠습니다. 악의적으로 이용될 수 있다는 점은 확인했지만, 물론 완전히 이해하지는 못했습니다.
내 질문은 공격자가 다른 사람의 컴퓨터에 액세스하고 사용자가 많은 파일을 가지고 있다는 것을 알고 신속하게 피해를 입히기를 원한다고 가정해 보겠습니다 .txt
. 이 명령이 작동할까요?
find /home/ -name "*.txt*" | echo "gg" > "*.txt*"
내가 이것을 올바르게 이해하고 있는지 궁금합니다. 이것은 기본적으로 .txt
아래의 모든 파일을 찾은 /home/
다음 파이프를 통해 단어로 echo
모든 파일을 덮어쓰는 명령을 생성합니까 ?.txt
gg
그렇지 않다면 왜 정확하게 작동하지 않습니까? 더 잘 이해할 수 있도록 왜 작동하지 않는지 이해하고 싶고, 아이디어는 기술적으로는 작동하지만 명령이 잘못 작성된 경우 어느 부분이 잘못되었는지 알려주세요.
답변1
작동하지 않습니다. echo
파이프에서 매개변수를 받지 않습니다. find
모든 .txt
파일을 찾아 파이프로 연결합니다 echo
. 그러나 echo
이를 무시하고 출력합니다 gg
.
>
*.txt*
리디렉션은 해당 권한이 있는 경우 이름이 지정된 파일에 쓰기를 시도합니다 . 존재하면 덮어쓰이고 존재하지 않으면 생성됩니다.
답변2
ThoriumBR이 이미 설명한 이유로 인해 이는 작동하지 않습니다.
당신은 다음과 같은 것을 찾고 있습니다
shopt -s globstar
for file in **/*.txt
do
echo "rr" > "$file"
done
또는
find . -name "*.txt" -print0 | while read -d $'\0' file
do
echo "rr" > "$file"
done