이 스크립트를 작동시키는 데 몇 가지 문제가 있으며 문제가 무엇인지 아는 사람이 있는지 궁금합니다. URL 목록을 입력으로 받아 하위 디렉터리를 검색한 다음 다른 파일로 출력해야 합니다.
for i in $(urls.txt); do echo $i; fn=$(echo $i | sed "s/\///g"); echo $fn; dirb $i /usr/share/wordlists/dirb/small.txt > $fn; done
스크립트는 새 파일에서 슬래시를 올바르게 제거하지만 오류(스웨덴어에서 번역됨) ": 해당 파일 또는 디렉터리가 없습니다"가 표시됩니다. 아마도 > $fn 섹션에서 나온 것 같습니다.
for i in $(urls.txt); do echo $i; fn=$(echo $i | sed "s/\///g"); echo $fn; dirb $i /usr/share/wordlists/dirb/small.txt -o $fn; done
dirb의 자체 출력을 사용하려고 할 때 비슷한 오류가 발생했습니다.
"OUTPUT_FILE httpwww.website.com
(!) FATAL: Error opening output file: httpwww.website.com"
한 줄에 대한 몇 가지 참고 사항:
1) URL 목록을 반복합니다
. 2) 터미널에 URL을 출력합니다.
3) url을 사용하여 URL에서 파일 이름을 생성합니다. sed
4) 터미널에 파일 이름을 출력합니다.
5) dirb를 통해 URL을 실행하고 다음을 시도합니다. 파일명으로 출력
가정된 출력 파일 이름은 괜찮아 보이지만 작동하지 않습니다. 왜 이런지 아는 사람 있나요?
답변1
bash
또는 가정 ksh93
:
- URL 목록을 반복합니다.
URL을 터미널에 출력
while read -r url; do printf 'URL: "%s"\n' "$url" done <urls.txt
A-Za-z0-9
URL에서 불필요한 문자를 제거하여 파일_
이름을 만듭니다 (URL에 없는 문자 변경, 연속된 문자 제거)_
.터미널에 파일 이름 출력
while read -r url; do printf 'URL: "%s"\n' "$url" outfile="$( tr -s -c 'A-Za-z0-9' '_' <<<"$url" )" printf 'File: "%s"\n' "$outfile" done <urls.txt
dirb
파일로 직접 사용 및 출력while read -r url; do printf 'URL: "%s"\n' "$url" outfile="$( tr -s -c 'A-Za-z0-9' '_' <<<"$url" )" printf 'File: "%s"\n' "$outfile" dirb "$url" /usr/share/wordlists/dirb/small.txt -o "$outfile" done <urls.txt
내 버전은 슬래시를 제거하는 것 이상으로 파일 이름을 삭제합니다.
또한 echo $i
파일 이름 globbing이 호출됩니다(테스트에 사용됨 i='*'
).
urls.txt
귀하의 파일에 예제가 없기 때문에 이에 대해 더 자세히 말하기는 어렵습니다.