Trong khi giải quyết một số thách thức CTF trực tuyến, tôi đã gặp một tình huống mà tôi cần phải đánh bại máy chủ. Đây là mã tôi đã viết:
#!/bin/bash
for i in {0..9}{0..9}{0..9}{0..9}
do
echo "Now trying code.."
echo $i
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt
done
Điều này là vô cùng, đau đớn chậm . Tôi cần thử kết hợp từ 1000 đến 9999 và điều này mất khoảng 5 giây cho mỗi 10 lần thử. Sau đó, làm theo lời khuyên, tôi đặt '&' ở cuối dòng này:
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt &
Và, nó đã thử 100 giây kết hợp trong vài giây. Tôi đã rất ngạc nhiên. Ai đó có thể giải thích logic cho tôi? '&' Đã làm gì?
for i in {1000..9999}
wait
ở cuối, mặc dù.
nc -z localhost 1000-2000
?
&
làm cho lệnh chạy trong nền, đó là tất cả. Nó không làm cho nó nhanh hơn hoặc bất cứ điều gì. Đọc bất cứ thứ gì bạn đang sử dụng (tôi giả sử bash).