Category: 雑記

#ssmjp 2018/04 に参加してきた


どうもみむらです。

ブログ書くなんて何年ぶりだ、そんな雰囲気がしますが、
調べてみると去年書いていたらしいです。

気分的にはもう10年ぐらい書いていない勢いなんですけどね。

気づけば友人がブログを定期的に書き始めていましたので
自分も定期的とは言わなくても書かねば、と。

ということで、「ブログ書きたい枠」があったので
タイミングもいいやとチャレンジしてみることにしました。


前説

あっ、とがくしさん!とがくしさんの説明だ!
レアだレア!!

この勉強会は「運用」がテーマらしいです。
また「かなりゆるふわ」で「喋る敷居はとても低い」とのこと。

喋りたい方はサイトを確認してくださいとのことですので、
チャレンジしてみてはいかがでしょうか。
http://ssm.pkan.org/

私もこんな記事を過去に貼り付けたことがあります:


タイムマシンインテリジェンス

スピーカー : @moton さん

さて・・情報収集はどうやっていますか?

1. 専門家なので寝ずに情報収集している
2. 業務中も業務外も頻繁にチェックしている
3. 情報収集が仕事だ
4. JPCERT のメールで十分だ
5. 収集しなくても良い

→ 普通の人は「常時情報収集は難しい」ので
タイムマシン・インテリジェンスで効率よく情報を収集しよう。

タイムマシン・インテリジェンス?

→ 時差を理解してセキュリティ情報を収集するメソッド

・海外の情報が日本で話題になるまでに先取りする
→ 朝一に海外情報をチェックできれば、日本で話題になる前に情報を知ることが出来る。
How? : RSS リーダーに海外ニュースサイトを登録して、毎朝スマホでチェックする。

・日本で話題になったネタは「まとめ」で取りこぼさない
→ twitter セキュリティまとめ etc… を用いて追いかける。

Appendix (Source):

MS, Adobe, Oracle, ICS(BIND), McAfee, Symantec, Trend Micro, Malwarebytes, Skybox, EndGame etc..


ペネトレーションテスターの資格

スピーカー : @gr4vit0n さん

資格を取る意義

強い技術者になるために勉強しなければならないことを知る
・「資格を持っている割には」と言われないようにする。
・「資格取得のための勉強がすべてではない」(自己研鑽が重要)

ペネトレーションテスター向けの資格?

EC-Council, Certified Ethical Hacker (略称 : CEH)
2年以上の実務経験または公式トレーニング受講
択一式選択で 70% 以上
費用は 30 ~ 60 万円.

→ 「アメリカの法律」や「攻撃ツールの基本的な使い方」などの基礎的な問題が多い。
→ (Src: Twitter) 「環境とツールの豊富さがいい。ツールを動かしながら学べる」
https://twitter.com/enigma63/status/989099449321308161

GIAC のペネトレーションテスター向け認定
基本は SANS トレーニングのあとに受講。
四択式で基準点を満たす(各認定によって基準点が異なる)
費用は 80万円ぐらい

→ 教科書の持ち込みが出来るが、知識を組み合わせて解く問題が多い。(深い知識が求められる)
→ 実務的でとても品質が良い。

Offensive Security (OSCE, OSCP, OSWP の3つがオンラインで受講できる)
Kali Linux 開発元の Offensive Security が運営するペネトレーションテスター向けの資格。
各認定に対応したトレーニングを受講し、試験環境を攻撃してレポーティングする内容。
費用は 10 ~ 20 万円。

→ 海外のペネトレーションテスターが目標とする「難関」の資格。
→ トレーニング環境は「マテリアルを渡すので、勝手にやってみてください」という構成。
→ Lab 環境で 30ホスト以上攻略できるようになってから挑戦するのがオススメ

例) OSCP 試験
<実技(23時間45分)>
5つのホストに侵入して、それぞれ権限昇格する
<報告(24時間)>
実技の内容を報告書に纏めて提出する。

認定条件:ホスト攻撃により得られる得点 + 報告書の点数 で 70点を超える.
ボーナス : テキストの演習を全て纏め、Lab 環境の制圧手段を報告書に纏めて提出すると追加点

FAQ

Offensive Security の試験のレポートの形式は?
→ テンプレートは公開されている。
https://www.offensive-security.com/reports/sample-penetration-testing-report.pdf


VyOS で挑む IPv4 over IPv6 IPsec

スピーカー : @genta さん
Sub-keyword? : 「雰囲気で VyOS をやろう。バグを直そう。貢献しよう。」

経歴

・VyOS Helium (安定版) のフルビルドを試した
・脆弱性対応のために「Linux 本家から取り込まれたパッチに漏れがあった」ことに気づく
→ 「コントリビュータ」として語れるように。

なお、下記の技術があれば「コントリビュータ」になれる!
「ドヤ顔」ができる!

・パズルを解く能力
(git log –p を読む,   grep –ril ‘keyword’ する, try-and-error をする)

How to become a Contributor without technology skills:

1. 二分探索でコードのエラー行を発見する。(コードを消したり戻したりしてみつける)
2. エラーコードをググる。
3. 治す。

開発の人たちは怖くない。

ドンドンコミュニケーションをしていこう。
無料で英語が使える環境を触ることも出来るよ?

こういう経験、よくありますよね?

・IPsec を張りたくなった。 IPhone で L2TP/IPSec とかしたい。
・実家と BGP 張りたい。親が病気でどうしても張らなければいけない。

→ これを 素の Linux で見たそうとするのはとても大変。 VyOS ならサクッと出来る。

VyOS とは?

→ Linux と 各種 OSS と設定スクリプト(シェル環境) が一緒にまとまったもの。
→ JUNOS と似たコマンド体系!
→ ただ 安定版の Kernel はとても古い (Debian : squeeze)

IPv4 over IPv6 IPSec をやってみた。

→ IPv6 網を経由すると早くなるらしい? (理由は分からないけれど)
→ でも各拠点は IPv4..  なら 「IPv4 over IPv6 すればいいじゃない!」

ダメだった。

なぜダメだったの?

→ カーネルが古い。 OSS も古い。 vti6 対応してない。
→ なら Linux の git から cherry-pick してくればいいじゃない?

・・そんな4月頃。「 VyOS 1.2.0 Current 」が更新される

→ iproute2 が更新される。
→ カーネルも更新され、最初から対応されている。 cherry-pick いらない・・。
→ CLI に関しては IPv4 ベースで使えない。←  頑張ってここを修正する必要がある。

VyOS 現状のまとめ

これは VyOS ではない。 Debian だ。
さすれば道は開かれん。
(意訳:コンフィグを手で書けば動く)

→ みなさんでここのところ、頑張って治していきましょう・・!


なぜSphinxで手順書を作るのか

スピーカ : @tcsh さん

SPHINX で手順書を生成しよう。

なぜなら Include できるから。 (CSV, ソースコード, ドキュメントのパーツ etc..)
→ 画像やコードを純粋に挿入出来る (イメージとしては TeX っぽい。)
→ 定数置換が出来る。
→ シェルスクリプトを貼り付けて、それを実行させることができる(!)

手順書は「ドキュメント」だけ・・?

→ SPHINX を使うと、運用で使える「シェルスクリプト」を一発生成できる。
→ また「索引」が自動生成されたりしてとっても良い感じ。
(個人的には Sandcastle と似たような感じのイメージ・・)

よく使われる例

→ API や環境、演算結果等はスクリプトで生成し、
人間が書かねばならないところ(設計意図など)だけを手で書いて
常に最新のドキュメントを簡単に生成できるようにする。自動化する。


まとめ

久しぶりの参加で面白かったです。

ただちょっと、雨上がりだったことを完全に忘れていてか
最後の方ちょっと気分が悪かったです。。体力回復してこう・・。

Visual Studio での TeX 編集を頑張ってみる。


どうもみむらです。絶賛修論作成期間です。

修論書きたくない?なら書くな。いやいや。
こう、楽しく書きたいんですよね。修論。

そんなわけで、こっそりですが Visual Studio の TeX 対応拡張を
修論の現実逃避目的で開発を開始しました。

こうすると、TeX を書くのは「デバッグ」の一環になるのでとても楽しいです。


現状はこんなところ:

2016-01-18 (4)

2016-01-18 (5)

 

以前、色づけとビルドの部分のみを取り出して、

 

こういう感じで作ったことがありましたが、
今回はこのレベルではなくてカッチリと作り込む感じです。

例えば、画像ファイルはビルド時に自動的に extractbb されるとか。
あとは tex ファイルを eps 化して、プレビュー画面を付けてみようかなぁ・・とか。

もちろん、エラー欄にビルドエラーとかの表示は出しますけどね!

 

本来の修士論文の方をあくまでも優先するのと、
修士論文が仕上がってしまったら開発を投げてしまう可能性があるので、
そうしたら・・いえ、なんでもないです。

 

もし気になる方が居れば、こちらにてソースコードを公開しています。
https://github.com/mimura1133/vstex

基本的に、私が書いた部分に関してのライセンスは MIT ライセンスで。

であであー。

QR puzzle Write-up


どうもみむらです。

冬だ!おこただ!CTFだ! ということで、
今年も SECCON CTF 2015 のオンライン予選に参加しました。

12月5日~12月6日ということで、
んじゃ泊まり込んでやってみますか・・ということで、
大学に泊まり込んでやっていました。

・・・論文作成で煮詰まっていたので、気分転換にもいいよね! ということで。

 

今回は出題された問題のうち、 “QR-Puzzle (Windows)” という問題について。

問題概要や想定解に関しては、出題者である山崎さんの記事を閲覧して頂ければとおもいます。

SECCON 2015オンライン予選に3問を出題しました! | ラック公式ブログ | 株式会社ラック
http://www.lac.co.jp/blog/category/security/201512072.html

 

さて。
CTF, Windows と来ると勝手に「やる気スイッチ」(古い?)が入る私です。

問題に関してこんな感じで解きました:


1. ファイルを見る。

image

.net !!
ドットネットですよ、おくさん!!

これはもう、この時点で やる気スイッチ が入ります。
びんびんに入ります。

 

ということで、まずは逆アセンブリ結果を見ていきます。

image

まずリソースを見て、”SmartAssembly なのかなぁ..” と思いを馳せ、

次に作者の名前をみて「ごめんなさい..」という懺悔の気持ちになり、
いったん気分転換の為にお風呂に行きました。

このとき、銭湯にて、風呂場にいた皆さんからもの凄く強い視線を感じて
「何か私ミスしてるかな・・」と思って振り返ったところ、
皆さん背中や腕に絵が描かれていたのはいい思い出です。
でもそのあと「怖い人じゃない・・!」と思う出来ごともありまして、
ルシウス技師の言葉を思い出した・・ということがありました。

 

その後、いったん自分のなかで「ごめんなさい」をしたうえで、
「んじゃ解くか!」ということで解析を始めました。

いえ、以前こういう形で取り上げられたことがありまして・・
http://www.slideshare.net/ymzkei5/xss-201412089

また、いろいろとお世話になっているかたでもありますので、申し訳ない気持ちがあったのですが、「これは CTF だ。今は競技に集中して、終わった後、お会いした時に謝ればいい」と気持ちを切り替えました。

 


2. プログラムを起動する

image

QRCode のパズルゲームになっていました。
手でかちゃかちゃやって、何か文字が得られる QR であるということも分かりました。


3. 難読化を解く

プログラムがどういうものか分かったところで、難読化を解きます。
なんとなく雰囲気から SmartAssembly 感がしていましたので、
その難読化解除ツールをインターネット上から適当に持ってきて適用します。

 

難読化解除前:

image

難読化解除後:

image

 

読めるようになりました。


4. Form_Load を読む

普通の .net なアプリケーションを読む場合、読み始める場所は多々あるのですが、
画面の初期化部分のコードを見ることで、何を叩いているのかを調べることにしました。

こんな感じのコードです。
スタックベースの処理系なので、引数を積んで、呼び出して、結果は積まれる。というような。

image

 

でもって、注目したいのはこのあたり。

image

 

引数(数字)を取って、返値は文字列になる。
なんとなく答えの文字列を読んでそうな雰囲気がしましたので、ここを読んでみます。

読み込んでいると思われる所は他にも幾つかありましたが、
読むのが面倒くさそうだったのでやめました・・。

たとえば、答えをメモリ上で MD5Hash にしている・・と思われる箇所など、
幾つか良さそうな場所もありました。

image

見た感じ、リソースファイルから何か読み出しているんだろう、という雰囲気が伝わってきます。

確認のためにコンストラクタも見てみますと、
自分自身を取得してその中のリソースファイルを抜き出した後、
処理を実行している事が読めますので、この中に何か答えに繋がるものがあるな、と判断できます。

(実際にはリソースデータをデータとして抜き出した後、難読化を解除し、そのあとそのデータをライブラリとして読み直して、中に書かれている命令を実行するコードが書かれているようです。)

image


5.内部リソースを展開

いちいち手で解いてもいいのですが、CTF は時間勝負ということで、
「どうせ一回解いたデータはメモリ上に持ってるだろ・・」ということでデータを抜き出します。

デバッガでちまちまーっとやって ( “.loadby sos clr” とか・・! ) 抜き出すとこんな感じ:

image

なんかこう、英単語帳みたいな Dictionary 型のデータが出てきました。

 

もしかして・・と思い、最初に手で解いた答えの文字列が入っていないかどうかを調べると、
この一覧に含まれていました。

どうやら使えそうです。


6.機械的に解く。

じゃ、総当たりすればいいんですかね?
ということで適当にプログラムを書いてみます。

(言語は HSP.

origdic="seccon|accept|achieve|acquire|add|advance|affect|agree|allow|appear|apply|approach|argue|assume|avoid|bear|beat|belong|bite|care|catch|claim|communicate|compare|consider|consume|contact|contain|continue|cost|count|cover|create|cross|decline|define|depend|describe|destroy|determine|develop|die|disappear|discover|draw|earn|encourage|enter|establish|excite|exist|expect|explain|express|face|fail|fear|feed|fire|fit|flow|follow|gain|gather|get|guess|hit|hold|hunt|hurt|imagine|improve|include|increase|indicate|influence|insist|introduce|invent|involve|lay|lead|lie|lose|maintain|manage|manufacture|marry|mean|mention|miss|observe|offer|perform|please|prefer|prepare|press|prevent|produce|program|protect|prove|provide|publish|raise|reach|realize|receive|recognize|reduce|refer|reflect|refuse|regard|remain|remember|reply|represent|require|reveal|rise|risk|rule|satisfy|save|search|seat|seek|seem|serve|share|solve|sound|spend|spread|stay|steal|stick|strike|struggle|suffer|suggest|support|suppose|surprise|survive|tend|treat|vary|waste|wear|win|wonder|worry|action|activity|advantage|aid|amount|area|arms|aspect|atmosphere|attempt|attitude|audience|basis|behavior|benefit|bill|birth|blood|brain|case|cause|challenge|chance|character|choice|civilization|class|clerk|communication|community|company|competition|content|control|crowd|culture|customer|damage|degree|demand|desire|detail|development|difference|difficulty|direction|disease|distance|doubt|economy|education|effect|environment|event|evidence|exchange|exercise|experience|experiment|expression|fact|factor|failure|feature|field|figure|force|form|freedom|generation|god|government|growth|habit|history|idea|industry|information|issue|kid|knowledge|labor|lack|language|law|level|life|limit|line|literature|loss|majority|mark|market|mass|material|meal|measure|method|million|mind|mistake|moment|most|movement|nation|nature|note|object|office|opinion|opportunity|order|paper|party|period|phone|place|plant|pleasure|policy|population|position|power|practice|president|price|principle|problem|process|product|production|progress|purpose|quality|range|rate|reality|reason|relation|relationship|research|respect|response|rest|result|science|sense|shape|side|sign|situation|skill|society|sort|species|speech|stage|standard|state|step|stranger|stress|structure|subject|success|supply|surface|system|task|taste|technology|temperature|term|theory|trade|traffic|truth|universe|university|value|variety|view|war|weather|weight|afraid|ancient|available|average|aware|basic|certain|close|common|complete|complex|concerned|correct|direct|dressed|due|economic|environmental|equal|essential|expensive|familiar|famous|foreign|free|full|general|healthy|heavy|huge|human|impossible|individual|industrial|international|likely|local|major|married|medical|mental|modern|national|native|natural|necessary|obvious|ordinary|original|own|particular|past|personal|physical|political|popular|possible|practical|present|private|professional|public|recent|related|right|round|scientific|separate|serious|similar|single|social|special|strange|sure|thick|traditional|useful|various|vast|whole|wrong|abroad|actually|badly|especially|eventually|exactly|extremely|forward|frequently|generally|highly|however|immediately|indeed|later|maybe|merely|naturally|otherwise|particularly|pretty|probably|quite|recently|simply|therefore|although|unless|while|except|toward|worth|behind|abandon|absorb|accomplish|accompany|accuse|adapt|admire|admit|adopt|advertise|afford|aim|alter|annoy|appeal|arise|arrange|associate|attach|attend|attract|behave|bind|block|blow|borrow|breathe|collect|combine|command|compete|complain|compose|concentrate|conclude|confuse|connect|considerable|consist|construct|contribute|convey|convince|cope|criticize|decision|declare|decrease|defeat|defend|deny|derive|devote|disappoint|discuss|dislike|display|distinguish|disturb|divide|educate|emerge|emphasize|employ|enable|encounter|entertain|estimate|examine|expand|explore|export|expose|extend|fix|frighten|govern|graduate|greet|handle|hang|hate|hesitate|hire|identify|ignore|imply|import|impress|inform|intend|interpret|isolate|judge|notice|obtain|occupy|oppose|organize|overcome|participate|pause|perceive|permit|persuade|possess|praise|predict|preserve|pretend|promote|propose|punish|purchase|pursue|quit|react|recommend|recover|reject|release|rely|remind|remove|repair|replace|reserve|respond|retire|roll|rush|select|settle|sink|smell|stare|stimulate|stretch|suit|surround|suspect|tear|threaten|transfer|transform|translate|transport|vote|warn|account|addition|address|advice|affair|agent|agreement|agriculture|alternative|ancestor|anger|anxiety|appearance|assumption|association|author|authority|automobile|background|capacity|capital|career|characteristic|charge|circumstance|citizen|climate|conclusion|condition|conduct|conference|confidence|conflict|consequence|consumption|continent|contrast|contribution|conversation|cooperation|copy|creation|crime|crisis|criticism|crop|curiosity|custom|debate|debt|decade|definition|delight|democracy|desert|destruction|device|diet|disaster|discipline|discussion|distinction|district|drug|element|employee|enemy|entertainment|error|evolution|excuse|expert|explanation|extent|faith|fate|fault|favor|flight|focus|fuel|function|genius|goal|grammar|grant|guide|harm|height|household|humanity|ideal|imagination|immigrant|impact|impression|income|independence|instruction|intelligence|item|journey|joy|judgement|laboratory|landscape|laughter|leisure|lesson|luck|manager|manner|master|match|matter|merchant|murder|necessity|neighborhood|notion|novel|observation|occasion|occupation|operation|organization|origin|pain|passage|passenger|personality|phenomenon|philosopher|philosophy|physics|plenty|politician|politics|popularity|presence|profit|project|proof|property|proportion|proverb|psychologist|quantity|reaction|region|religion|remark|reputation|revolution|reward|row|security|self|shift|shortage|sight|significance|skin|soil|soldier|solution|statement|status|stock|strength|substance|sum|survey|survival|talent|theme|thought|threat|tongue|tradition|treatment|tribe|trust|union|vehicle|victim|violence|virus|vision|vocabulary|wealth|wisdom|witness|youth|accurate|actual|alike|anxious|appropriate|asleep|attractive|awake|biological|bored|brief|capable|chemical|civilized|comfortable|complicated|conscious|constant|contemporary|contrary|convenient|creative|critical|curious|current|dependent|distant|domestic|dramatic|dull|eager|educational|effective|efficient|elderly|emotional|empty|engaged|enormous|entire|evil|extra|extraordinary|extreme|fair|FALSE|fat|favorite|female|financial|firm|former|friendly|fundamental|gentle|global|harmful|historical|honest|immediate|independent|intellectual|intelligent|internal|junior|latter|literary|medium|military|mysterious|narrow|nearby|negative|nervous|nuclear|opposite|patient|pleasant|polite|positive|potential|previous|primary|primitive|proper|proud|rare|reasonable|remarkable|responsible|rough|rural|senior|sensitive|severe|significant|silly|slight|smart|solid|specific|stupid|sudden|suitable|superior|technical|terrible|tiny|tough|typical|unique|universal|unknown|unusual|upset|urban|useless|valuable|visible|vital|wealthy|welcome|well-known|willing|absolutely|alive|apart|closely|constantly|directly|entirely|fairly|forever|fully|gradually|largely|necessarily|nevertheless|normally|obviously|occasionally|possibly|properly|rapidly|seldom|slightly|somehow|somewhat|surely|totally|unfortunately|virtually|widely|wherever|despite|unlike|acknowledge|adjust|advise|amuse|analyze|assure|astonish|beg|bend|blink|bow|broadcast|burst|bury|capture|cease|celebrate|characterize|cling|commit|confine|confirm|confront|constitute|convert|cultivate|cure|dare|delay|deliver|depress|devise|diminish|disagree|discourage|dominate|dwell|eliminate|embarrass|endure|ensure|equip|evolve|exhaust|exhibit|fascinate|float|fold|found|fulfill|gaze|generate|grasp|guarantee|guard|illustrate|imitate|impose|inclined|industrialize|inspire|interfere|interrupt|investigate|justify|leap|melt|misunderstand|neglect|nod|offend|originate|overlook|owe|pour|pray|proceed|protest|rank|relieve|request|resist|resolve|restrict|retain|review|ruin|scare|scatter|scream|secure|specialize|spoil|strengthen|substitute|suppress|swallow|sweep|trace|undergo|urge|wander|weigh|whisper|yell|absence|accent|acceptance|access|acquaintance|affection|aggression|alarm|ambition|appetite|application|appointment|arrangement|athlete|avenue|band|border|burden|campaign|candidate|cash|category|cave|cell|charm|colleague|colony|committee|companion|comparison|complaint|complexity|composition|confusion|construction|contract|convention|courage|crash|crew|critic|description|dialect|dignity|disadvantage|dispute|division|divorce|document|ecology|economics|editor|emotion|emperor|enterprise|enthusiasm|equality|era|exception|executive|expense|explosion|extinction|facility|fairy|flame|fortune|foundation|frontier|fund|funeral|fur|furniture|garbage|gene|globe|grave|ground|harmony|harvest|honor|hunger|immigration|impulse|incident|infant|inhabitant|injury|insect|insight|instinct|institution|instrument|insurance|introduction|investment|liberty|limitation|load|location|logic|lord|lung|luxury|mail|mammal|mineral|minority|mood|motive|myth|neighbor|nerve|obligation|orbit|output|owner|participant|passion|patience|perception|perspective|pile|pioneer|poison|portion|possession|preference|prejudice|privilege|profession|pronunciation|prospect|punishment|pursuit|ray|recognition|reference|reflection|relief|requirement|resident|ritual|root|sacrifice|scholar|seed|servant|shade|shame|shelter|shore|similarity|site|specialist|statistics|steam|strip|stuff|suburb|tale|telescope|tension|territory|text|tide|tip|tone|traffic jam|tragedy|trail|trait|transportation|trap|treasure|trial|trick|unemployment|version|virtue|volunteer|voyage|wage|weapon|Westerner|absolute|abstract|accustomed|additional|adequate|aggressive|amazing|annual|apparent|artificial|Atlantic|atomic|awful|based|brilliant|calm|casual|civil|classical|definite|delicate|democratic|desirable|dirty|distinct|elaborate|electrical|elementary|equivalent|evident|exact|excessive|external|frequent|generous|genuine|grand|guilty|identical|inevitable|inferior|initial|inner|intimate|invisible|keen|latest|legal|liberal|located|logical|long-term|massive|mature|mechanical|minor|mutual|numerous|odd|overwhelming|painful|passive|peculiar|permanent|plain|precious|precise|precisely|prime|principal|profound|racial|rational|raw|relative|reliable|remote|routine|rude|satisfactory|sensible|spare|spiritual|steady|strict|subtle|sufficient|tremendous|tropical|ultimate|uncomfortable|unexpected|unlikely|unpleasant|verbal|visual|widespread|aloud|altogether|barely|commonly|consequently|deliberately|effectively|essentially|firmly|increasingly|literally|practically|primarily|readily|regardless|regularly|roughly|socially|steadily|traditionally|undoubtedly|whereas|beneath"

TEXTBOXADDR = 0xA098E
PROGBARADDR = 0x110C6A

sysfont 17
split origdic,"|",dic
prog = 0
repeat
if prog > 299 : break
last = "HELLO SECCON"
sendmsg TEXTBOXADDR,0xC,0,last
await 0
repeat length(dic)
sendmsg TEXTBOXADDR,0xC,0,dic(cnt)
sendmsg PROGBARADDR,0x408
if  prog != stat: prog = stat: title "Q."+stat+" - HIT: "+dic(cnt): break
loop
loop
title "DONE."

 

使い方としては TEXTBOXADDR と PROGBARADDR にウィンドウハンドルの値を与えて実行すれば、
あとは3分程度ほったらかして置くだけで答えが表示されています。

仕掛けとしては、

1. テキストボックスに WM_SETTEXT (0xC) メッセージを送り、任意のメッセージで初期化する。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms632644(v=vs.85).aspx

2. テキストボックスに取得した辞書の単語を一つ取り出して送る。

3. プログラムバーに PBM_GETPOS (0x408) メッセージを投げて現在の進捗を調べる。
https://msdn.microsoft.com/en-us/library/windows/desktop/bb760830(v=vs.85).aspx

4. 進捗が 299 を超えていればソルバを終了する。

というような流れです。

 


Appendix.

じゃ、どうやって守ればいいのというところですが・・。
私もプレイヤーですので詳しく書くと色々と対策されそうなのでボソボソッと。
(でももう、聞かれたら答えようかなとも思ってます。。

たとえば今回私が使用した SendMessage 系は
Windows の昔ながらのコンポーネントが問題で使用されていた為に使えたというところがあり、
そうでなければ防げたのかなとも。

あとは、メモリに展開したデータをそのままにしておくというのも、あんまり・・と思ってみたり。
それ以外にも気になった点はいくつかありました。

・・・時間が出来たら、私がもし作問者側ならどう対策しよう・・というのを実験してブログ記事を書いてみたいところです。


そんなこんなで、久しぶりに CTF でワイワイした、そんな2日間(?)でした。
(そんなわけで、 CTF Advent Calendar 2015 の記事にもしてみました。

MS 実装の csharp コマンドである “csi” コマンドを使ってみた。


みむらです。

今朝方、新潟の日本酒を飲みに行こうかなぁ・・ ( http://anisec.jp/yuzawa/ ) と思っていた所、
鋭敏電子の秋月さんも「こっ・・これはっ・・!」となる記事を見かけ、
いても経ってもいられず、移動中の車内で試してみることにしました。

記事としては次の記事。
http://blogs.msdn.com/b/visualstudio/archive/2015/10/08/visual-studio-2015-update-1-ctp.aspx

Visual Studio 2015 の Update 1 CTP がリリースされましたよという記事なのですが、
その中に、”Visual C# Interactive Compiler..” というものがありまして、
どうも見てみると、 mono の csharp コマンドのようなことをするプログラムのようで、
これは確かめなければっ・・! ということで現在に至ります。


使ってみた:

image

TAB による推測が出ないので、少し入力しづらいという点はありますが、
C# らしいコードを普通に書いて、ごにょごにょできるのはとても素晴らしいと思います。


インストール方法:

ダウンロードの URL がとても見つけづらいのですが、
Visual Studio 2015 Update 1 CTP
ここからダウンロードが可能です。

セットアップを開始すると、
image

こんな感じのおなじみの画面でセットアップが行われていきます。

終わりましたら、 「Visual Studio コマンドプロンプト」から “csi” コマンドで起動できます。

Windows で特定の IP アドレスが静的に設定できない場合


みむらです。ちょっとしたメモ。

色々と弄っていましたら、IP アドレスの静的な設定で
特定のアドレスだけ設定しようとしてもその値がクリアされるという問題が起きていました。

その解決法を見つけましたのでメモ。


netsh int ipv4 reset netsh int ipv6 reset

 

早い話が netsh コマンドを使って全部のアダプタ設定をリセットする、という内容です。

コマンドを入力した後マシンを再起動し、
IP アドレスを設定し直すとうまくいくと思います。