ブックマーク / blog.akiym.com (21)

  • UCSB iCTF 2018 - fantasticiot, hero_text_adventure - アリ

    attack and deference形式のCTFにオンラインで参加した。dodododoは19位。 sshできるサーバが1台与えられて、そこで8つのサービスを正しく動かしつつ、攻撃と防御を行う。 flagは運営からサービスが正しく動いているかどうかの確認と一緒に送られてくる。例えば秘密のメモアプリみたいなのがあったとして、正規の方法だとメモの閲覧にはパスワードが必要だけど、サービスに残された脆弱性を使うと任意のメモを見られるになればflagを入手して提出することで攻撃できる。 サービスはxinetd経由で起動するようになっていて、サービスの脆弱性を潰すためバイナリを書き換えたり、途中にバリデーション用のスクリプトを挟んだりしてflagを持ち出されないように防御できる。 このCTF専用のサービス一覧/参加チーム取得やフラグ提出用のクライアントがあって、それを使うと手軽に攻撃の自動化ができ

  • YAPC::Okinawaで「Perlコーディングテクニック2018」という話をしました - アリ

    speakerdeck.com 最近の便利Perl情報や好きなモジュールの話をしました。 トーク応募したときには話したかった細かい話題がいくつかあったのですが、20分では収まらなかったのもありクラスビルダやクラスローダ、バリデータ、Type::Tinyの話になりました。 トークの中で紹介した、拙作のSmart::Args::TypeTinyが結構好きで最近よく使っています。 Smart::Args::TypeTiny - We are smart, smart for you - metacpan.org 詳しい使い方やSmart::Argsと比較したときのメリットをあまり説明できなかったのですが、Smart::Args::TypeTinyについては昨年 id:papix さんが紹介している記事があります。(ありがとうございます!!!) papix.hatenablog.com 自分のトー

    YAPC::Okinawaで「Perlコーディングテクニック2018」という話をしました - アリ
  • YAPC::Fukuokaで「新時代のテストフレームワークTest2」という話をしました - アリ

    speakerdeck.com トークの内容はTest2の導入から便利情報を紹介したりしました。少しでもTest2使う人が増えるといいですね。 スライド中にも触れていますが、基的にはTest2に移行するにあたってはTest2::Plugin::UTF8を使うようにすれば大丈夫かなと思います。 一部Test::ClassのハックをTest2に対応するといった特殊な例も紹介しました。スライドでは時間の都合上省いたのですが、Test::Classは意外と扱いが難しく、テストファイルから読み込まれるモジュールでTest::Moreを直接使っていると$TODOが動かなくなるというケースもありました。Test::Moreのokを直接呼んでいる場合はTest2::APIのcontextで書き換える必要があります。 また、Test::Warningsでテスト中で警告が出ていたらfailする機能(Test

    YAPC::Fukuokaで「新時代のテストフレームワークTest2」という話をしました - アリ
  • 株式会社はてなに入社しました - アリ

    株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

    株式会社はてなに入社しました - アリ
  • 年賀状CTF 2017 writeup - アリ

    今年もid:nanuyokakinuさんによる年賀状CTFが開催されていたので参加した. reversing問題が全部で3問.すべて解くと最後のフラグにAmazonのギフト券が書いてあり,お年玉が貰える.今年はなんと0x1337円.ありがとうございました :) nanuyokakinu.hatenablog.jp 以下,解いた問題のwriteup. stage1 % file stage1.exe stage1.exe: PE32+ executable for MS Windows (console) Mono/.Net assembly 64bitのPE.IDA Pro Freeが使えないのでHopperを使って読んだ.ただし,静的解析の妨害として,文字列がエンコードされているので,x64dbgというデバッガで動かしながら確認していった. notepad.exeのプロセスのメモリをWr

    akiym
    akiym 2017/01/03
  • まずはCTFの過去問を解く - アリ

    この記事は,CTF Advent Calendar 2016の1日目です. www.adventar.org CTFプレイヤーたるもの,日々の鍛錬は欠かせません. 過去問を解いてこそ,競技中に真の実力を発揮することができるのです. ということで,bata_24さんが公開しているpwn challenges list - Pastebin.comを管理できるページを作成しました. http://ctf.katsudon.org/ctf4u/ CTF Advent Calendar 2016 - Adventar にはまだ空きがあるようなので,過去問のwriteupを書いてくれる方をお待ちしています. 全完目指して頑張りましょう.お楽しみください.

    まずはCTFの過去問を解く - アリ
    akiym
    akiym 2016/12/02
  • 高速にリストからハッシュにする - アリ

    いまいちピンとくる言い方が分からないけれど,つまりはこういうこと. [ { id => 1, value => 'foo', }, { id => 2, value => 'bar', }, ] このようなデータ構造があったときに,以下のようにidをkeyとしてハッシュにしたい. { 1 => { id => 1, value => 'foo', }, 2 => { id => 2, value => 'bar', } } 割とよくあることなので,普段はmapを使ってこのように書いている. my $x = +{map { ($_->{id} => $_) } @users}; これは,List::Utilのreduceを使っても同じように書ける.引数の先頭がハッシュリファレンスになっていて,それを引き回すことで実現している. use List::Util qw/reduce/; my $x

    高速にリストからハッシュにする - アリ
  • Tokyo Westerns / MMA CTF 2nd 2016: greeting, Interpreter, diary, Candy Store, shadow - アリ

    greeting Host : pwn2.chal.ctf.westerns.tokyo Port : 16317 greeting Note: DoS攻撃に対する対策の為,出力が131072文字に制限されています. main関数のみのシンプルなバイナリ.FSBがあるが,その後すぐにreturnするため1度しか実行できないように見える.FSBによる攻擊の流れは以下の通り. stack上のreturn addressの位置をリーク 必要であればlibcのアドレスリーク(今回はsystemがpltに存在するので不要) stackを書き換えてsystem("/bin/sh")を実行 今回の場合は,.fini_arrayをmain関数のアドレスに書き換えることで再度mainを呼ぶことができるようになり,上記の攻擊が可能となる. 入力文字列をsprintfに投げてからFSBが発生するため,最初に20

    Tokyo Westerns / MMA CTF 2nd 2016: greeting, Interpreter, diary, Candy Store, shadow - アリ
    akiym
    akiym 2016/09/10
  • Teaser CONFidence DS CTF 2016 Go Sandbox 1, 2 - Go's unsafe is unsafe! - アリ

    Go Sandbox (Pwning, 150) We found a sandbox written in Go. It looks pretty solid, but there must be a bug somewhere. All you need to do for us is to execute ./get_flag IP: gobox.hackable.software:1337 Download Golangのソースコードを実行するサンドボックス。./get_flagを実行するとflagが得られる。 golangのバイナリはstatic linkされているためサイズが大きく解析がしにくい。main関数はmain.mainとしてシンボル定義されているので、そこから読んでいく。プログラムの流れは、ソースコードの入力、制限チェック、ビルドして実行するだけ。 main.chec

    akiym
    akiym 2016/04/16
    はてなブログに投稿しました #はてなブログ Teaser CONFidence DS CTF 2016 Go Sandbox 1, 2 - Go's unsafe is unsafe!…
  • SECCON 2015 Intercollege 優勝しました - アリ

    チームdodododoで参加して、29109ptで優勝しました。 チーム構成はakiym, xrekkusu, lrks, hiromuの4人。分担は、攻擊班akiymとlrks、防御班xrekkusuとhiromu。 今回のSECCON Intercollegeは学生限定ということで、通常の決勝とは違う、Attack & Defenseルール。各チームにroot権限サーバが1つ与えられ、その上で3つのサービスが動かす。それぞれに脆弱性があり、それを修正しながら、相手に攻擊するといったもの。 2015.seccon.jp ルールを簡単に説明すると、5分毎に運営側からSLAのアクセスが飛んできて、動作しているサービスを経由してフラグがどこかに書き込まれる。正しく書き込まれているか確認出来なければdefense scoreが獲得できない、かつ総得点より3%の減点となる。正しくサービスを運用しつ

    SECCON 2015 Intercollege 優勝しました - アリ
    akiym
    akiym 2016/01/31
  • オレオレCTFツール akitools - アリ

    CTF Advent Calendar 2015 - Adventar 16日目 CTFをやると副産物として一枚岩のスクリプトができたりします。いくつか便利ツールを公開しているので、ここで紹介します。 個人的には地味に便利と思っているのですが、万人受けするようなものではなさそうです。オレ得ツールですね。 github.com exploit.py, exploit.pl pwn問題を解くとき、まずはじめにテンプレートとして手元にコピーしてきます。 pwntoolsとか便利なライブラリがあったりしますが、どの環境でも動かせるといろいろとよいことがあるので、recvuntilやinteractのような関数を実装したものを用意しています。 d socatのラッパーです。デフォルトでstraceで起動します。 d ./vuln-binary gadgets rp++のラッパーです。rp++単体だと

    オレオレCTFツール akitools - アリ
    akiym
    akiym 2015/12/16
    CTF Advent Calendar 16日目 オレオレCTFツール akitools - アリ
  • PoliCTF John's shuffle: system("sh") technique - アリ

    This is my short writeup for John's shuffle. John is completely drunk and unable to protect his poor stack.. Fortunately he can still count on his terrific shuffling skills. Connect to shuffle.polictf.it:80 This is pwnable challenge worth 350 points. The binary is NX enabled, no stack protector yey. I solved really fast and I thought this challenge is not worth 350 points ;) How to PWN the server

    PoliCTF John's shuffle: system("sh") technique - アリ
    akiym
    akiym 2015/07/12
    PoliCTF John's shuffle: system("sh") technique - アリ
  • Perl5におけるコンテキストの扱いによる脆弱性について - アリ

    The Perl Jam - Exploiting a 20 Year-old Vulnerability より Perlを普段から書いている人にとっては常識ではあるが、そうではない人のために書いておく。 リストと配列 Perlにおける「リスト」とは何かというのを確認しておく。まず、Perlにはコンテキストという他のプログラミング言語にはない概念があり、単数(スカラー)と複数(リスト)を区別する。 # 配列 my @a = ('a', 'b', 'c'); # リストコンテキスト # 配列をリストコンテキストで評価 print @a; #=> abc # リストをリストコンテキストで評価 print ('a', 'b', 'c'); #=> abc # スカラーコンテキスト # 配列の要素はスカラー print $a[0]; #=> a # 配列をスカラーコンテキストで評価 print s

    Perl5におけるコンテキストの扱いによる脆弱性について - アリ
    akiym
    akiym 2015/02/27
    はてなブログに投稿しました Perl5におけるコンテキストの扱いによる脆弱性について - アリ
  • No cON Name CTF Quals 2014 writeup - アリ

    チームdodododoで参加。最近はよく自分(@akiym)とれっくす(@xrekkusu)の2人で参加している。 結果は7位。finalsの参加権が貰えるらしいが、会場はスペインでおそらく交通費はでないので破棄ということに。問題は開始時にすべてオープンされる形になっており、全部で10問。朝7:00から始め、途中で寝て、3:40に全完。miscとwebに足を引っぱられた。 以下は問題の解説。 inBINcible golangが吐くバイナリ。strippedされていないため、読むのはそこまで苦ではない。 まず、argv[1]が16文字であるか調べる。次に16個のgoroutine(main.func.001を参照)を生成してそれぞれ1文字ずつ比較して、その結果channelに出力している。すべての結果が正しければ正解になり"Yeah!"、間違っていれば"Nope!"。 0x08049456

    No cON Name CTF Quals 2014 writeup - アリ
    akiym
    akiym 2014/09/15
    はてなブログに投稿しました No cON Name CTF Quals 2014 writeup - アリ
  • CTF各位3 - アリ

    loginpage1 (web 10) running at ctf.katsudon.org:5002 #!/usr/bin/env perl use Mojolicious::Lite; app->secrets([$ENV{FLAG}]); get '/' => sub { my $self = shift; return $self->render('index', user => $self->session->{user}, flag => $ENV{FLAG}, ); }; get '/user' => sub { my $self = shift; my @users; if (open my $fh, '<', "user.txt") { while (defined(my $user = <$fh>)) { my ($name, $password, $is_admin

    CTF各位3 - アリ
    akiym
    akiym 2014/08/01
    はてなブログに投稿しました CTF各位3 - アリ
  • SECCON 2014 オンライン予選(日本語) writeup - アリ

    SECCON 2014 オンライン予選(日語)にdodododoとして参加した。2302点で5位。とりあえず全国大会の出場権は獲得できた(上位8位まで)。 チームメンバーによるwriteup: http://xrekkusu.hatenablog.jp/entry/2014/07/19/220129 以下、自分が解いた問題のwriteup: ネットワーク ソーシャルハック? 画像と思われるURL(http://example.com/foo.png)を投げるとアクセスしてくれる。 153.120.82.112 - - [19/Jul/2014:12:07:30 +0900] "HEAD /foo.png HTTP/1.1" 404 0 "-" "MyVNCpasswordIsVNCpass123" "153.120.82.124"VNCで接続する。 FLAG{giveMeYourWebM

    SECCON 2014 オンライン予選(日本語) writeup - アリ
    akiym
    akiym 2014/07/20
    はてなブログに投稿しました SECCON 2014 オンライン予選(日本語) writeup - アリ
  • CTF各位2 - アリ

    blacklist (web 10) running at ctf.katsudon.org:5001 use Mojolicious::Lite; use DBI; # enjoy~ my $BLACKLIST_CHAR = qr/['"`=]/; my $BLACKLIST_WORD = qr/select|insert|update|from|where|order|union|information_schema/; my $dbh = DBI->connect('dbi:mysql:blacklist', 'blacklist', $ENV{BLACKLIST_PASSWORD}); helper dbh => sub { $dbh }; get '/' => sub { my $self = shift; my $ip = $self->tx->remote_address;

    CTF各位2 - アリ
    akiym
    akiym 2014/05/24
    はてなブログに投稿しました CTF各位2 - アリ
  • 2014年だけどファミコンのゲームを作りませんか? #1 - アリ

    ゲームを作ろうと思い立ったはいいものの、何から始めればいいんだろう…。cocos2d-xでスマホゲームを作る?Unityで3Dバリバリのゲームを作る?いまいちパッとしませんね。そうです、なんだか複雑すぎるのです。 そんなあなたにピッタリなのがファミコンのゲームです。もう30年前のハードですから、きっと単純ですって。たぶん。だって8ビットですよ。 環境構築 今回はOS Xで開発をすることにします。まずはアセンブラ、コンパイラを準備します。 アセンブラはnesasmを使います。オブログ — なあ藤村くんファミコンプログラミングをやろうじゃないか[1]を参考にmakeしてください。 コンパイラはcc65を使います。なぜコンパイラも準備するかというと、まだできる限りアセンブラを書きたくないからです。簡単なほうがいいですよね :) % brew install cc65 とりあえず動くものを書いてみ

    2014年だけどファミコンのゲームを作りませんか? #1 - アリ
    akiym
    akiym 2014/05/02
    はてなブログに投稿しました 2014年だけどファミコンのゲームを作りませんか? #1 - アリ
  • CTF各位1 - アリ

    10guess (crypto 10) running at ctf.katsudon.org:5555 package main import ( "bufio" cr "crypto/rand" "crypto/rsa" "fmt" "log" "math/big" "math/rand" "net" "strconv" ) var seed int64 = ????? func handleConnection(conn net.Conn) { log.Printf("connect: %s", conn.RemoteAddr()) defer func() { log.Printf("close: %s", conn.RemoteAddr()) conn.Close() }() priv, err := rsa.GenerateKey(cr.Reader, 2048) if err

    CTF各位1 - アリ
    akiym
    akiym 2014/04/08
    はてなブログに投稿しました CTF各位1 - アリ
  • SECCON 2013 北海道大会 writeup - アリ

    チームdodododoで参加してきました。メンバーは@akiym, @lmt_swallow, @goldcard, @ayako119の4人です。 僕は全く解けなかったのですが、@goldcardさんのおかげで優勝できました。ありがとうございます。 チームメンバーによるwriteup http://blog.5v-gnd.net/archives/1053 SECCON 札幌大会に参加してきました! QRコード問題のwrite-up - 見習いの見習いプログラマ SECCON 2013 北海道大会に参加しました / writeup - MY FEEEEL 出身地チャート (エラーコードを探せ!) アンケートのようなウェブアプリ。しかし、これはダミーだろうと見た。エラーコードというのは、HTTPのステータスコードのことだと思う。 403 .htaccessや.htpasswordにアクセス

    SECCON 2013 北海道大会 writeup - アリ
    akiym
    akiym 2013/12/04
    Are you Smart?#01 が解けたので追記 / SECCON 2013 北海道大会 writeup - アリ