バッファスタックオーバーフローに並んでよく知られている攻撃に、format string attack(書式文字列攻撃)がある。 これは、printf系関数のフォーマット文字列が外部から操作可能になっている場合に、細工した文字列を送り込んでメモリ内容の読み出しや書き換えを行う攻撃である。 ここでは、実際にformat string attackによるメモリ内容の読み出しをやってみる。 環境 Ubuntu 12.04 LTS 32bit版 $ uname -a Linux vm-ubuntu32 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:42:40 UTC 2014 i686 i686 i386 GNU/Linux $ lsb_release -a No LSB modules are available. Distrib
はじめに この記事は弊研究室の某課題について考えるの8日目の記事です 今回ですが超優秀な記事があるのでそこを自分なりにわかりやすく説明していきます。 また攻撃方法とかはよくあるので仕組みについて重点的にやります。 お品書き Format String Bug(FSB) Format String Attack(どういうことができるかだけ) Format String Bug Format String(書式指定子)を扱える関数においてユーザが自由に書式指定子を配置できるバグです。書式指定子とはprintf等の関数を使うときにprintf("%d",1);のようこの%dが書式指定子です。書式指定子の例は以下の表に.. 指定子 引数 用途 %c char 1文字出力 %s char * 文字列出力 %d int, short 整数を10進で出力 %x int, short, unsigned
RP2040ボード(Raspberry Pi Picoなど)をRaspberry Pi Debug Probe(デバッグプローブ)を使ってArduino IDE 2系(※2.x.x)でCMSIS-DAPでデバッグするためのセットアップ手順と簡単な使い方を紹介したいと思います。 本記事はWindows版 Arduino IDE 2系 Raspberry Pi Pico/RP2040ボード(Arduino-Pico)を対象にしています。 Arduino IDE 2.3.1で使えなかったデバッグ機能ですが、Arduino IDE 2.3.2で使えるように修正されました。 ※2024年2月21日 Macの場合は次の記事を参考にしてください。 RP2040のArduino開発でデバッガーを使う【Mac編】RP2040ボード(Raspberry Pi Picoなど)をRaspberry Pi Debu
はじめまして。mayocornです。 先日のABC281で青コーダーになりました! 経歴 20代の主婦。旦那は競プロやってないです。 中学卒業→高校入学→高校中退→バイトを転々とする(ITに関してはSESで半年ほど働いた経験あり)→今の住所に引越してきてからは無職 趣味はゲームで、最近やっているタイトルはファイアーエムブレムエンゲージ、Splatoon3です。音ゲーやカードゲームに熱中してた時期もありました。CHUNITHMは旧レートでベスト枠15.3くらい。でものめりこむほどお金がかかるのでやめました。競技プログラミングは何問解いても無料なので続けられてます。 学力に関して話すと、高校数学は確率、論理と集合がちょっとわかるくらいで三角関数、微分積分、行列あたりは全然分かりません。青パフォーマンスをとるのにこのへんの知識が必要になったことはなかった気がします。(私が参加した回の中では) 競
Zen2,Zen3のメモリからのshuffleはUopsが1です.他は2になります. 説明 floatとは異なり,1つのレジスタの値を,128ビットの壁を超えずにintの整数を並べ替えます. floatの場合のpermute_psと同じ挙動をするため,immによる指定によってXMMとYMMの並びは同じになります. 同様に_MM_SHUFFLEでの指定が便利です. 以下にサンプルコードを示します. void test_shuffle_epi32() { __m256i a, d; a = _mm256_setr_epi32(0, 1, 2, 3, 4, 5, 6, 7); print_m256i_int(a); printf("\n"); d = _mm256_shuffle_epi32(a, _MM_SHUFFLE(3, 2, 1, 0)); print_m256i_int(d); d =
最近、SIMD命令を使ったプログラミングというものに触れる機会があったので、どうやって入門していったかについてまとめます。この分野はどうしても「分かっている人向け」の記事が多くなりがちのようなので、基本的な知識についてまとめつつ、発展的な資料へのURL等も極力載せるようにしました。 ※ 記事で取り扱うSIMD命令はAVX-512を対象としますが、その他の命令体系(e.g. x86のAVX/AVX2やARMのNEON等)とも多少は共通点があるかもしれません 前提知識とスコープ C/C++のごく基本的な構文を理解している人向けの記述になっています 記事を読む上で、計算機の構造についての基本的な理解が必要かもしれません e.g. CPUがあってメモリがあって〜程度でたぶん大丈夫です 開発環境としてLinux上のClang 5.0.1を想定します(とはいえGCC等でも同じような話になるはずです)
参照: http://www.unicode.org/versions/Unicode6.0.0/ch03.pdf の "Table 3-7. Well-Formed UTF-8 Byte Sequences" アルゴリズムを理解する上で重要なUTF-8の特徴について述べます。 1コードポイントは1-4バイトのシーケンスで表現される 上位ニブル(1バイト8ビットのうち、上位4ビット)を確認することでシーケンスの情報が得られる そのバイトがシーケンス先頭バイトかどうかわかる もしそれがシーケンス先頭バイトだったなら、何バイトのシーケンスかわかる 先頭でないバイトは基本的に0x80..0xBFの範囲が許容されているが、何箇所か例外があるのでそれもバリデーションしなければならない 例外の箇所は表では太字で示した 例えば、表を見て分かるように、先頭バイトが0xE0のとき2バイト目は0xA0..0x
はじめに 本記事は PHP Advent Calendar 2017 18日目 です。 先に断っておきます。 この記事の内容は、 php スクリプトを書く上で全く必要のない知識です。 知ってすぐ何かに役立つような情報を求めていたらごめんなさい。 https://qiita.com/advent-calendar/2017/php にはもっとたくさんの素晴く役立つ記事がありますのでどーぞ。 なお、検証に利用した php は 7.2.0 です。 PHP の文字列 PHP の文字列は、どれも同じ "文字列" ではあるのですが、中身がちょっと違うとことがあるのをご存知でしょうか。 例えば、 <?php $str1 = 'A'; $str2 = sprintf('%s', 'A'); `$str1` と `$str2` はどちらも同じ `'A'` という文字列になりますが、違いがあります。 (変数名
今回から、『OSSライセンスを正しく理解するための本』の各章を順に紹介したいと思います。 初回は「序章 執筆の経緯」として、「はじめに」には書かなかった情報も含めて、ご紹介したいと思います。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く