fr33f0r4ll

自分用雑記

2017-01-01から1年間の記事一覧

Heap exploitationのお勉強メモ1

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の使い方 tags: ctf pwn pwntools howtouse 忘れないようにメモする。 公式のDocsとか、関数のdescriptionが優秀なのでそっちを読んだ方が正確だと思う。 でも日本語じゃないと読むのに時間がかかってしまうので日本語でメモする。 基本 基本的な機…

X64 pwn

ctf

x64でのpwn Cでの話、goとかだと違う。 基本はx86と同じだが、いくつかの点で違いがある。 https://blog.techorganic.com/2015/04/10/64-bit-linux-stack-smashing-tutorial-part-1/を参考にしている。 引数の渡し方 x86では関数呼び出しするときにスタック…

Tokyo Westerns CTF3rd 2017 Writeup

ctf

Tokyo Westerns CTF3rd 2017 writeup ほぼWarmupだけ(Webは解けてない)。 200ptで142位でした。 Just do it Pwn プログラムの動作はパスワードの入力を求め、あってるかどうかを判定するものである。 とりあえず、stringsで探したら見つかったパスワードを入…

Emacs用のRocket.chatクライアントなかったから書いた

rocket-chat.el タイトル通り。 リンクはここ。 そのうちUsage書く。

Hackconに参加した

ctf

HackCon writeup 72位、一人じゃキツイなぁ。 Web問全然分からなかった。 rev Key-gen1 match_meという実行ファイルが渡されるので、リバーシング。 見てみると最後の方にstrncmpしてるところがあるので、gdbで実行しつつ入力によって引数がどのように変化す…

Lua

lua

tags: programming-language lua Lua コメント -- comment --[[ multiple line comment ok. ]] 変数 -- num x = 10 x = 1.0 x = 10e-1 -- string s = "AAA" s = 'AAA\n' -- function function square(x) return x * x end -- table t = {} -- boolean b = tr…

バッファオーバーフローでeipが書き換えられない

pwn

自分の環境で脆弱性のあるプログラムを再現できなかった pwnの練習をしようとして脆弱性のあるプログラムを書いたら、何故かその脆弱性を(幸か不幸か)exploitできなかった。 解決するまでに結構かかってしまった上、日本語の情報が見つからなかったから残し…

Boostnoteからメモを取り出す

その名の通りBoostnoteからメモを取り出す。 ホームディレクトリにあるBoostnote内にデータがあるが、ディレクトリやファイル名はハッシュか何かで変更されているため、そのままじゃ識別できない。 しかし、jsonとcsonで管理しているようなので、pythonで取…

cl-mstdn

cl-mstdn common-lisp製mastodonAPI用ライブラリ。 どんどん変更されるはず。 (defparameter client-token (request-client-token "インスタンス名")) ;; クライアントごとに一回でオーケー (defparameter access-token (register-client "インスタンス名" c…

C++ 記法

C++

C++ C言語は分かっているものとして書いているので、変数の宣言なんかは説明しない。 自分向け。 参考文献は、猫でもわかる C++プログラミング ライブラリのインクルード #include <iostream> Cのライブラリは、xxx.hならcxxxとしてインクルードできる。 ネームスペー</iostream>…