๐ฉ ๋ฌธ์ ํ์
1
2
3
4
5
$port = rand(10000,10100);
$socket = fsockopen($_GET['server'],$port,$errno,$errstr,3) or die("error : {$errstr}");
Warning: fsockopen(): unable to connect to {๊ณต์ธ ip ์ฃผ์}:10029 (Connection timed out) in /var/www/html/challenge/web-16/index.php on line 23
error : Connection timed out
๋ฌธ์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด ์์ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํ ์ ์๋ค.
์์ ๋ ์ค์ php๋ก ์์ฑ๋ ์ฝ๋๋ก, 10000๋ถํฐ 10100๊น์ง์ ๋๋คํ ์๋ฅผ port๋ก ํ๊ณ server ์ธ์ ๊ฐ์ ip ์ฃผ์์ ์์ผ ํต์ ์ ํ๋ ๊ตฌ๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ ํด๋น ip ์ฃผ์๋ ๋ด๊ฐ ์ ์ํ ์ปดํจํฐ์ ๊ณต์ธ ip ์ฃผ์์ด๊ธฐ์ 10000๋ฒ๋ถํฐ 10100๋ฒ๊น์ง์ ํฌํธ๊ฐ ์ด๋ ค์์ง ์์ ๊ฒ์ด๊ธฐ์ ํต์ ํ ์ ์์ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ํด๋น ip๋ฅผ ์ฌ์ฉํ๋ ์ปดํจํฐ์ 10000๋ฒ๋ถํฐ 10100๊น์ง์ ํฌํธ๋ฅผ ์ด์ด๋๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ ๊ฒ์ด๋ค.
๐ฉ ๋ฌธ์ ํ์ด
์ด ๋ฌธ์ ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํ์ดํ ์ ์๋ค. ์ฒซ ๋ฒ์งธ๋ ํฌํธํฌ์๋ฉ์ ์ด์ฉํ๋ ๊ฒ์ด๊ณ , ๋ ๋ฒ์งธ๋ ๊ฐ์ธ ์๋ฒ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
1. ํฌํธํฌ์๋ฉ
๊ณต์ ๊ธฐ ์ค์ ํ์ด์ง๋ก ์ด๋ํ์ฌ ์์ ๊ฐ์ด ํฌํธํฌ์๋ฉ์ ์ค์ ํ๋ ๊ณณ์ ์ฐพ๋๋ค. ์๋ฒ์์๋ ๋๋คํ๊ฒ 10000๋ฒ์์ 10100๋ฒ์ ํฌํธ๋ฅผ ๋ฌด์์ํ๊ฒ ์ ์ ์๋ํ ์์ ์ด๊ธฐ์ ํด๋นํ๋ ๋ชจ๋ ํฌํธ๋ก ๋ค์ด์ค๋ ์ ์์ ๋ด๋ถํฌํธ 10000๋ฒ์ผ๋ก ํฌ์๋ฉํ ์ ์๋๋ก ์ค์ ํ๋ค. ์ฌ๊ธฐ์ IP ์ฃผ์๋ cmd > ipconfig > ์ด๋๋ท ์ด๋ํฐ ์ด๋๋ท > IPv4 ์ฃผ์์์ ํ์ธํ ์ ์๋ค.
์ด์ ๋ด๋ถ์์ 10000๋ฒ ํฌํธ๋ฅผ ์๋น์คํด์ผ ํ๋ค. ์ด๋ฅผ ์ํด์ ์๋์ฐ์ฉ netcat(nc) ํ๋ก๊ทธ๋จ์ ์ค์นํ์.
1
nc64.exe -lvp 10000
ํฐ๋ฏธ๋ ์ฐฝ์์ netcat์ด ์ค์น๋ ๊ฒฝ๋ก์์ ์์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ 10000๋ฒ ํฌํธ๋ฅผ ์ด์ด๋ณด์. ์ฌ๊ธฐ์ -l ์ต์ ์ ๋ฆฌ์ค๋, -v ์ต์ ์ ์์ธํ ์ ๋ณด ์ถ๋ ฅ, -p ์ต์ ์ ํฌํธ ์ง์ ์ด๋ค.
๋ง์ง๋ง์ผ๋ก ๋ฌธ์ ํ์ด์ง๋ฅผ ์ฌ์ ์ํ๋ฉด ํด๋น ip ์ฃผ์์ ๋๋คํ ํฌํธ๋ก ์์ผ ํต์ ์ ์๋ํ ๊ฒ์ด๊ณ , nc๋ก ์ด์ด๋ 10000๋ฒ ํฌํธ๊ฐ ํต์ ์ ์งํํ๊ฒ ๋์ด Flag ๊ฐ์ ์ป๊ฒ ๋ ๊ฒ์ด๋ค.
2. ๊ฐ์ธ ์๋ฒ ์ด์ฉ
aws์ ๊ฐ์ ๊ฐ์ธ ํด๋ผ์ฐ๋ ์๋ฒ๊ฐ ์๋ค๋ฉด ๊ณต์ ๊ธฐ๋ฅผ ํฌํธ ํฌ์๋ฉํ๋ ๋ฐฉ์๋ณด๋ค ํจ์ฌ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ๋๋ aws์ ec2๋ฅผ ์ด์ฉํ๊ณ ์์ด ์์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
์ฐ์ , ํด๋น ํด๋ผ์ฐ๋์ ๋ณด์ ๊ท์น์ ์์ ํ์ฌ 10000๋ฒ ํฌํธ๋ถํฐ 10100๋ฒ ํฌํธ๊น์ง ์ฌ์ฉํ ์ ์๋๋ก ํ์.
1
for i in {10000..10100}; do (nc -kl $i &); done
๊ทธ ๋ค์์ผ๋ก ์์ ๊ฐ์ด nc์ ์ ์ฝ๋๋ฅผ ์์ฑํ์ฌ 100๊ฐ์ ํฌํธ๋ฅผ ๋ชจ๋ listen ํ์.
์ด์ ๋ฌธ์ ํ์ด์ง๋ฅผ ์ฌ์ ์ํ์ฌ ์์ผ ํต์ ์ ์๋ํ๋ฉด ์์ ๊ฐ์ด Flag๋ฅผ ํ๋ํ ์ ์๋ค.