fr33f0r4ll

自分用雑記

apt upgradeでpyenv: xxxx: command not foundが出たときの対処法

command not found いつも通りapt upgradeしようとしたらiconvコマンドが見つからなくて失敗したのでその対処法。 iconvに限らずコマンドが見つからない系の問題には似たような対処法ができると思う。 コマンドが使えるかどうか確認してみる 普通にターミナ…

SECCON Beginners CTF 2018 Writeup

ctf

1286ptで45位だった。 Misc Welcome IRCのトピック、なぜかロードのタイミングのせいで表示されずしばらく解いてなかった。 plain mail pcapが降ってくる。 中身を見てみるとタイトル通り平文でメールが送信されている。 wiresharkからSMTPの通信を復元する…

途中でexecveするときのgdbデバッグ方法

普通にset follow-exec-mode sameとかset follow-fork-mode parentとかやっても何故か子プロセスおっかけちゃって解析できなかったのでメモ。 まずset detach-on-fork offをする。 そうするとforkしてもデタッチせずにプロセスを止めておいてくれる。 止めて…

windows, gcc, long double, prinf

Cでlong doubleをフォーマット出力しようとしたら失敗したので備忘録。 調べてみると解決策っぽいのが見つかったが日本語情報はなかったのでメモしておく。 stackoverflowにあった。 問題 環境はWindows10、MinGW64のターミナルからgccで、long doubleが16バ…

exe解析メモ

Winでの解析のメモ ヘッダファイル Win APIを使うバイナリで定数値マクロが使われていたときに探す場所。 C:\Windows\Program Files(x86)\Windows Kits\10\Include\

pwn基礎 書式文字列攻撃1

書式文字列攻撃 printfの%xなどのフォーマットを利用してメモリを読み書きする。 入力した文字列を直接printfの第一引数に指定できるときに可能になる。 確認方法 この脆弱性があるかどうかを確認するには、%xなどを入力してみて出力を確認してみるのがてっ…

Linux! C! signal!

過去のpwn問でsignalを使う問題があったけど、今までよく知らなかったのでメモ。 あらかじめ定義されているシグナルごとにハンドラを登録し、シグナルを受け取ったときにハンドラの処理を実行して割り込みを処理をする。 linuxだとこんな感じになる。 #inclu…

Harekaze CTF 2018 Writeup

ctf

卒論書かなきゃいけなかったのであまり参加できなかった。 解けたのはwelcome、easy-problem、harekaze-farm、div-nの4つ。 welcomeとeasy-problemはサービス問みたいなものなので実質2つくらいかな。 easy-problem rot13 nkfを使った。 echo 'UnerxnmrPGS{U…

Linux ディスクの暗号化

Linuxでディスクを暗号化したので手順をメモする。 ディスク暗号化 ディスクへ書き込む時点で暗号化してくれるのでファイルレベルで暗号化するより楽に管理できるし、コピーしたときとかにディスクにデータが残ってて復元されてしまったりとかの危険性は減る…

avastのretdec

avastがデコンパイラを公開したので使ってみた。 お題はちょっと前のsharif-ctf2018のvuln4で、試しにデコンパイルしてみる。 インストール まずはretdecをインストールする。 githubのリポジトリにインストールのやり方があるのでプラットフォームに合わせ…

libcから関数本体のオフセットを取得する方法

nm -D libc.so.6 | grep function_name

Insomni'hack teaser 2018 writeup

ctf

welcomeしかできてないので実質0完。 Rule86の途中までしかできなかったのでそのwriteup。 Rule86 同期型ストリーム暗号の問題。 簡単に言えば鍵から生成した疑似乱数列と平文のxorを取るような暗号で、同じ鍵からは同じ疑似乱数列が生成されなければならな…

linuxのセキュリティツール

Linuxで使えるセキュリティツールの使い方のメモ。 ClamAV アンチウイルスソフト。 avastとかより検知率は低いっぽいがないよりマシ。 定期的なシステム全体のスキャンなどもできる。 特にCLIから個別のファイルのスキャンができるのが便利。 # install sudo…

ddでディスク消去メモ

HDDのディスク消去したときのメモ。 fdisk -lで現在認識されているディスク一覧が確認できる。 内容をちゃんと消去するには0で上書きするのがいい。 dd if=/dev/zero of=/dev/sdX bs=4096 普通はこれで十分。 ランダムデータを書き込むとさらに復元が困難に…

Heap exploitationのお勉強メモ1

pwn

heap知らなさすぎてナウなpwnが解けないので少しずつやり始めました。 mallocとfreeのアルゴリズムはここでお勉強した。 攻撃方法はshellphishのhow2heapでお勉強してる。 PoCプログラムに混じって置いてあるmalloc_playgroudが最高に良い。 全ての機能は使…

リンクされるlibcのメモ

pwn

pwnしてるときに知ったので簡単にメモ。 プログラムにlibc.so.6がリンクされるとき、ASLRによってランダム化されるのは7バイト分で、下3バイトは000で固定、上6バイトは0x00007fで固定になる。 リンクされたときのlibcのベースアドレスはlddコマンドで知るこ…

Live USBでブートできなかったときのためのメモ

タイトル通り、USBでブートしようとしたらできなかったのでその解決方法。 古いPCにUSBブートでxubuntu入れようとしたらmissing operating systemの表示が出てブートできなかった。色々調べた結果、UNetBootinだとUSBにbootフラグが立たないときがあるらしい…

opensslでファイル暗号化

みんな見られたくない画像とか一杯ストレージにあるよな? そういうわけでopensslを使ってファイルを暗号化する方法をメモ。 自分一人が暗号化、復号化できればそれでいいので共通鍵方式のAESを使って暗号化する。速度的にRSAを使うより多分速いだろうし。 暗…

SECCON CTF 2017 Quals writeup

ctf

チームで参加できたのでたくさん解けた。 僕が解いたのはputchar_music, vigenere3d, ps_and_qsの3つ。 チームは200位くらい。 コードはここ。 putchar music 映画のタイトル当てろという問題。 TLにこの時点で分かってる人いて笑った。 Cのワンライナーが降…

pwn基礎 バッファオーバーフロー3

pwn

前回の続き。 今度は関数を呼び出すのではなく自分で実行するべき命令を用意し、バッファオーバーフローを利用してその命令を実行する。 使ってるコードはココ。 crackme 攻撃対象のコードはこれ。 // sudo sysctl -w kernel.randomize_va_space=0 #include <stdio.h></stdio.h>…

pwn基礎 バッファオーバーフロー2

pwn

前回の続き。 折角なので使っているコードとかをリポジトリにまとめておく。 サンプルコード 攻撃対象にするコード。 #include <stdio.h> #include <unistd.h> void shell() { char* args[] = {"/bin/sh", NULL}; execve("/bin/sh", args, NULL); } void echo() { char buf[0x10</unistd.h></stdio.h>…

Radare2 メモ

rev

控え目に言ってコマンドが分かりにくいandリファレンスが足りてないので自分用にメモ。 afvn old_name new_name @ func func内のold_nameをnew_nameに変える。 デフォルトだとlocal_4hとかarg_4hとかになっているのでよほど短いコードか抜群の記憶力がないと…

pwn基礎 バッファオーバーフロー1

pwn

自分自身の理解を深めるために、また後でまぬけにも分からなくなったときに参照できるようにするために、基本事項についてまとめておこう。 もしかしたら間違っているところ教えてもらえるかもしれない。 pwn バッファオーバフローを使った攻撃 x86を想定す…

CBCTF2017の供養

ctf

参加したけど1問しか解けてない。 writeup書いても仕方ないような問題(Common modulus1)なので他の人に任せよう。 なので解くのに使った自分のスクリプト紹介をする。 lispで書いているのでroswellとemacsとslimeがあれば基本動く。 sbclしか想定していない…

Dockerまとめ

環境はCentOS7のはず。 インストール方法 curl -fsSL get.docker.com -o get-docker.sh sh ./get-docker.sh あるいは単にcurl -fsSL get.docker.com | shでもいいかもしれない。 Dockerの起動 systemctl start docker Dockerの状態を確認するにはsystemctl s…

Dockerまとめ

環境はCentOS7のはず。 インストール方法 # curl -fsSL get.docker.com -o get-docker.sh # sh ./get-docker.sh あるいは単にcurl -fsSL get.docker.com | shでもいいかもしれない。 Dockerの起動 # systemctl start docker Dockerの状態を確認するには# sys…

Othlotechさん主催のDocker勉強会に参加した

参加することに決めたきっかけ そもそも去年あたりに一度勧誘を受けていてOthlotechの存在を知っていたし参加したいとも思っていたけど、なかなか興味のあるテーマがなかったり院試があったりして伸び伸びになっていた。 院試が終わりFEも合格したので、余裕…

libnet

libnet RDNSS付きのルータ広告を投げる必要があったのでlibnetについて調べてみたが情報がなかったため残しておく。 やり方 初期化 libnetにはIPv6に対応したパケットを作成する機能があるため、普通のパケットならば問題なく作成できる。 今回は近隣探索の…

MacBookリカバリー

MacBookが壊れて起動しなくなったのでリカバリーの手順をメモっておく。 症状 起動するとログインアカウントが表示されず、?マークのあるフォルダのアイコンが表示されていた。 正確に言うとデュアルブートできるようにしていたので、linuxの方しか起動しな…

pwntools 使い方

pwntools 使い方 忘れないようにメモする。 公式のDocsとか、関数のdescriptionが優秀なのでそっちを読んだ方が正確だと思う。 でも日本語じゃないと読むのに時間がかかってしまうので日本語でメモする。 基本 基本的な機能の使い方。 プログラムへの入出力…