ls의 출력을 grep으로 파이프하고 grep을 먼저 파이프할 수 있습니까?

ls의 출력을 grep으로 파이프하고 grep을 먼저 파이프할 수 있습니까?

명령 주입에 대해 약간의 연습을 하고 있는데 주입할 수 있는 명령이 있습니다.

grep -i $key dictionary.txt

$key뭔가를 주입할 수 있는 부분이 어디인가요? 이제 여기서 의도된 해결책은 ;문을 종료한 다음 새 문을 구성하는 것입니다. 하지만 내가 할 수 있는지 보고 싶어사용grep내 시도 에서 .

내가 하고 싶은 일은 ls특정 디렉터리에 있는 파일을 볼 수 있도록 실행하는 것입니다. 나는 이 두 가지를 다음과 같이 결합하고 싶다.

ls | grep -i "."

그런데 주사를 맞으니까 grep -i먼저 주사를 맞아야 해요. 그럼 제가 할 수 있는 일이 있나요? 어쩌면 "역순"으로 작동하는 파이프 연산자일까요?

grep -i "." <| ls

편집하다

내가 여기서 무엇을 하고 있는지, 무엇을 달성하려고 하는지에 대해 약간의 혼란이 있는 것 같습니다.

펜 테스트에 대한 몇 가지 입문 연습을 하고 있습니다.

현재 연습에서는 다음 문자열이 포함된 웹사이트에 삽입하고 있습니다.

grep -i $key dictionary.txt

그런 다음 이 문자열은 명령을 실행하는 데 사용됩니다. 해당 문자열에 뭔가를 주입해야 하는데, 이는 명령 주입이 될 것입니다. 문자열은 이미 서버에 기록되어 있으므로 제어할 수 없으므로 왼쪽에 아무것도 넣을 수 없습니다 grep -i.

다음을 주입하는 솔루션이 이미 있습니다.

; ls /etc/natas_webpass #

그런 다음 (삽입할 때) 서버에서 실행되는 명령을 만듭니다.

grep -i ; ls /etc/natas_webpass # dictionary.txt

나는 세미콜론을 사용하지 않고 이 연습문제를 해결하고 싶지만 실제로 grep는 이미 있는 세미콜론을 사용할 수도 있습니다.

편집 2

누군가 내가 찾고 있는 것에 대한 조언을 가지고 있습니다 <(ls). 나는 다음을 실행하여 이것을 테스트하려고했습니다.

$ grep -i <(ls)

그러나 이것은 작동하지 않습니다. 아무 일도 일어나지 않습니다.

답변1

당신은 거의 그것을 이해합니다. 주입

. <(ls)

또는

^ <(ls)

을 위한 $key. 검색을 하셔야 합니다무엇출력에서  ls. 가리키다(.)는 모든 문자와 일치하므로 공백이 아닌 모든 줄과 일치합니다. 캐럿( ^)은 모든 줄의 시작 부분과 일치하므로 일치합니다.어느줄, 심지어 빈 줄. (달러 기호를 사용할 수도 있습니다.)

관련 정보