Golangでsshへの接続を行う際、ssh proxyはどうやってやるんだろうと思ったんで調べてみた。
実装は結構簡単で、以下のように一度Proxyにsshでログイン後、ログイン対象サーバへの接続をProxyで作成してやるという流れでいけるようだ。
抜粋。動作するコードはこちらに記載。
ssh_term_proxy.go
// proxy1の情報
proxy1Host := "proxy1.host.local"
proxy1Port := "22"
proxy1User := "user"
proxy1Pass := "pass...
Twitterで、ジャンプの短期連載の単行本だけを集めた本棚の写真を見かけたので、こういった短期連載作品群のリストを作れないかなーと思ってちょっと調べてみた。
で、そういったマンガの単行本のDB的なの無いかなー…と思って調べてたところ、文化庁が2015年に『メディア芸術データベース
』なるものを出していた。みてる限りまだ開発版であること、2017年6月以降はあまり更新されてなさげなとこが気になるのだが、APIもあるようで十分に遊べそうな印象。せっかくAPIも用意されてるので、ここからデータを引っ張ってみる。
APIについては、以下のような仕様のようだ。
ksnctfの6問目(順不同で目についたの適当に解いてる)。
Webのログインページからログインする問題のようだ。
とりあえずSQLインジェクションっぽいので、指示通りユーザにadminを指定してお約束的にSQLインジェクションをパスワードのとこに入力。
```
' or '1' = '1';--
```
ログイン時のsqlインジェクションをcurlでやった場合はこんな感じ。
curl -X POST http://ctfq.sweetduet.info:10080/~q6/ -d "id=admin" -d "pass=' or 'a'='a';--"
ログインする...
前にGolangでsshクライアントを作る際、どうにも制御キーをうまく渡せずに致し方なくsshコマンドを実行させるような処理を書いてたのだけど、ちょっと前に見かけたsshwというツールのソースを見てたところ、sshコマンドを実行せずにそのあたりが正常に動いていた。
で、なんでだろうと調べて見たところ、どうやら ssh/terminal.MakeRaw()
等を使ってうまくそのあたりを実装していたようだ。
こちらにもソースを上げてるのだけど、以下サンプル。
term_ssh.go
package main
import (
"fmt"
"os"...
MacやLinux、UNIXライクなOSなら大体入ってるcutコマンド。自分の周りだとawkに慣れてくるとあまり使わなくなることが多い印象なのだけど、地味にawkだと記述が辛い処理でも簡単に処理できることもある。
今回は、そんなcutコマンドについて覚えておくと便利な使い方についてまとめてみることとする。
なお、対象はGNU版とする。MacやBSD等ではバンドルされてないので注意。
1. 基本的な使い方
cutコマンドでは、以下のように実行することでタブ区切りのデータから指定列を抽出することができる。
例をみてわかるように、範囲指定や指定列まで、指定列以降といった指定が簡単に行える...
ふと、コンソール上で指定した値に近い順で数字をsortしたい場合、どうすればいいかなーと思ったので調べてみた。
指定した値との差分さえ絶対値にすればいいので、そんなに難しい話ではない。とりあえずawkを使ってみる前提(perlとかだとabs関数あるようなので)。で、awkにはabsの関数が無いのだけど、以下のようにすることで絶対値を取得してsortさせることができる。
awk '{x=-$0;print $0,(x < 0) ? -x : x}' | sort -k2n | cut -d' ' -f1
blacknon@BS-PUB-UBUNTU-01:~$ # 5に近い値順...
コマンドの出力結果を別のターミナル(仮想端末)に出力したい、といった場合が(超極々)たまにあるのだけど、今まではそういった場合には、以下のように仮想端末に直接リダイレクトをしていた。
echo test123 > /dev/pts/xxx
ただ、このやり方だとroot権限が無いと書き込めないので、あんま良くはないよなぁ…と思っていたのだけど、どうやらLinuxには別のターミナルに標準入力を出力するコマンドとしてwriteコマンドというのが最初から用意されていたらしい。
例えば以下のようにコマンドを実行すると、lsの結果を指定したユーザのターミナルに出力できる。
ls | write...