ในขณะที่การแก้ปัญหา CTF ออนไลน์ฉันเจอสถานการณ์ที่ฉันต้องการทำให้เซิร์ฟเวอร์ยุ่งเหยิง นี่คือรหัสที่ฉันเขียน:
#!/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
นี้เป็นอย่างเหลือเชื่อช้าเจ็บปวด ฉันต้องลองชุดค่าผสมจาก 1,000 ถึง 9999 และใช้เวลาประมาณ 5 วินาทีต่อการพยายาม 10 ครั้ง จากนั้นทำตามคำแนะนำฉันใส่ '&' ที่ท้ายบรรทัดนี้:
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt &
และมันลองชุดค่าผสม 100 ชุดภายในไม่กี่วินาที ฉันประหลาดใจมาก. มีคนอธิบายตรรกะให้ฉันได้ไหม '&' ทำอะไร
for i in {1000..9999}
wait
ในตอนท้ายด้วย
nc -z localhost 1000-2000
?
&
ทำให้คำสั่งทำงานในพื้นหลังนั่นคือทั้งหมด มันไม่ได้ทำให้เร็วขึ้นหรืออะไร อ่านสิ่งที่เชลล์คุณใช้ (ฉันถือว่าทุบตี) คู่มือ