tips
ブラウザでUser Agentを変更したいとき
CTFの問題を解いていて,User AgentをGooglebotに偽装したかった.
Firefoxだとアドオンを入れる必要があるらしい.
Chromeで変更する手順を見つけたので参考にした.
参考:Google ChromeでUserAgentを変更する
- Developer Toolsを開く (右クリックで「検証」)
- More ToolsからNetwork conditionsを開く
- select automaticallyのチェックを外す
- 好きなUserAgentに変える
Ubuntu19.04でvimのシンタックスハイライトが機能しなかった
Ubuntuが最小構成でインストールされていた場合,Vimも最小構成になっていた.
自分の場合はaptでVimをインストールし直したらシンタックスハイライトが使えるようになった.
# apt install vim
調べた知識
バイナリ解析で役に立つツール
pwntools
CTF用のPythonライブラリ.pip install pwn
でインストールできる.
p32という関数を使えば,数値を32bitのリトルエンディアンに変換してくれる.
例:p32(0x11223344)
checksec
実行ファイルのセキュリティ機構を表示してくれるシェルスクリプト.
以下からダウンロードできる.
slimm609/checksec.sh
gdb-peda
gdbの拡張版.
以下からインストールできる.
longld/peda
readelf
Linuxのコマンド.
ELFの情報を表示する.
rp++
実行ファイル中のROP Gadgetを表示する.
以下からダウンロードできる.
0vercl0k/rp
ELFのセキュリティ機構
RELRO(RELocation Read-Only)
ELFのセクションを読み込み専用にする.
以下の2つがある.
- Partial RELRO
- Full RELRO
GCCのデフォルトではpartialになっている.
partialであればGOT上書き攻撃が可能.
カナリア
SSP(Stack Smashing Protector)というものがある.
ローカル変数とリターンアドレスの間にカナリア(canary)と呼ばれる値を設定し,関数終了時にそれが変更されているかどうかをチェックする.
これにより,スタックオーバーフローが発生していないか確認できる.
NXビット(No eXecute)
メモリをコード領域とデータ領域に分け,後者に特別なビットを付与し,実行されることを防ぐ.
WindowsではDEP(Data Execution Prevention)という.
PIE(Position-Independent Executable)
実行コード内のアドレス参照をすべて相対アドレスで行う.
これにより,実行ファイルがメモリ上のどこに展開されても正常に実行できる.
ASLRとの違い
ランダム化する部分が異なる.
- ASLR: 共有ライブラリやスタック
- PIE: 実行ファイル