ニシキヘビってかわいいよね、実際みたことないけど。

無職がいよかん国でプログラミングとかの備忘録を書いてます。 一日一食たまごかけごはん。

DVWAのセットアップ

DVWAは脆弱性を体験できるWebアプリケーションです。
Damn Vulnerable Web Applicationの略です。
めちゃくちゃ脆弱なウェブアプリ、火の玉直球な名前ですね。

実際のコードを見て勉強したくなったので、探してたらありました。
環境構築した時のメモ書き。

続きを読む

SSHポートフォワーディング

いつも本見たりgoogleしたり--helpしたりしてるので

ssh -L [sshクライアント側で利用するポート]:[sshサーバからみて通信したいホスト名]:[通信したいホストにある通信したいポート] その他オプション


例えば

ssh -L 8989:localhost:8888 remote.server

で, sshクライアントから見たlocalhost:8989ポートにアクセスすると、sshサーバからみたlocalhost:8888(=remote.server:8888)に繋がる。

これでsshサーバーのポートしか開いてなくてもいろいろ通信できる。

SVGのプロパティがつかえない時はnamaspaceが設定されているか確認する

こんなHTML(一部分)があって

<div id="svg_wrapper"></div>

動的にSVG要素を用意していた

var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');

var poly = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
// 中略
svg.appendChild(poly);

var svg_wrapper = document.getElementById('svg_wrapper');
svg_wrapper.appendChild(svg);

使っているある外部ライブラリに、SVGを構成する文字列を渡すメソッドがあった。
こんな感じに。

extarnal_module.func(svg_wrapper.innerHTML);

ところが処理中に、SVGのpoints属性がないためエラー、とのこと。 内部では渡した文字列をDOMparserでDOMに変換して作業してる模様。

なにがダメだったかというと名前空間が定義されてなかったから。 文字列からSVG要素であるDOMに変換するには事前にルートSVG要素で名前空間を定義してないと、ただのHTMLないしはXMLと解釈されてしまう。

雑にユーティリティ関数作って対処

var createElementSVG = function () {
    var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
    svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
    svg.setAttributeNS(null, 'version', '1.1');
    return svg;
};

createElementNSからつくったDOMは、ルートSVGタグの名前空間がどうであれ、 そのメソッドの第一引数に渡した名前空間が適用されるためSVGに関わる属性が使える。
あっちでつかえてこっちで使えなかったため、何が原因かわかるのに1日溶かしてしまった。 ああ、情けない。

wgetコマンドでApacheのファイル一覧以下のファイルをダウンロード

wget -e robots=no -i server.list -nc -S -w 10 --random-wait -r -A pdf -np

以下、メモ書き。

-e: `.wgetrc'形式のコマンドを実行。 このコマンドでrobots.txtを読みに行かない。

-i:ファイルに書かれたURLよりダウンロードを行う。 ファイルは1行ごとにURLが書かれている。

-nc: 存在しているファイルを上書き保存しない。 再帰ダウンロード中に通信が切れても途中から再開できる。

-S: サーバーからの応答を表示。 エラーが出た時の確認用。

-w [秒数]: 待機秒数。

--random-wait: 待機秒数を 0.5*[秒数]〜1.5*[秒数]の間でランダムに変える。

-r: 再帰ダウンロードを行う。取得したHTMLのリンクをたどる。

-A [拡張子1[,拡張子2 ...]]: コンマ区切りでダウンロードしたいファイルの拡張子を指定。

-np: 親ディレクトリを取得対象にしない。これで「Parent Directory」を取得対象から外す。