<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Shell on ashitaka blog</title>
    <link>https://8fd9c3c3.blog-1xe.pages.dev/tags/shell/</link>
    <description>Recent content in Shell on ashitaka blog</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Sun, 05 May 2019 08:48:56 +0900</lastBuildDate>
    <atom:link href="https://8fd9c3c3.blog-1xe.pages.dev/tags/shell/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>第3回CTF勉強会 | ksnctf</title>
      <link>https://8fd9c3c3.blog-1xe.pages.dev/2019/05/05/ctf-3/</link>
      <pubDate>Sun, 05 May 2019 08:48:56 +0900</pubDate>
      <guid>https://8fd9c3c3.blog-1xe.pages.dev/2019/05/05/ctf-3/</guid>
      <description>&lt;h1 id=&#34;第3回ctf勉強会&#34;&gt;第3回CTF勉強会&lt;/h1&gt;
&lt;p&gt;ksnctfの9, 11, 12, 13が課題で, 14が演習問題である. 11が難しいらしい&lt;/p&gt;
&lt;h3 id=&#34;9-digest-is-secure&#34;&gt;9 Digest is secure!&lt;/h3&gt;
&lt;p&gt;pcapファイルをダウンロードして, wiresharkでhttp通信をフィルタリングしてみると, digest認証の通信が行われている. ちなみにDigest認証とは、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Digest認証とは、Basic認証と同じくApacheで利用できるアクセス制限です。ユーザーIDとパスワードを求める点までは全く同じですが、入力されたユーザーIDとパスワードをハッシュ関数であるMD5を用いて解析されにくい状態で送信する仕組みです。しかし、Basic認証と比べて後発の機能なので、かつては一部対応していないブラウザがありました。現在ではほとんどのブラウザに対応しているため、Basic認証ではなくDigest認証が使われるケースが増えています。&lt;a href=&#34;https://madalinazaharia.com/column/basic-authentication-and-digest-authentication/&#34;&gt;レンタルサーバー比較なび&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;ここで, 認証の際に渡しているパラメータをみてみる.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Digest username=&amp;ldquo;q9&amp;rdquo;&lt;/li&gt;
&lt;li&gt;realm=&amp;ldquo;secret&amp;rdquo;&lt;/li&gt;
&lt;li&gt;nonce=&amp;ldquo;bbKtsfbABAA=5dad3cce7a7dd2c3335c9b400a19d6ad02df299b&amp;rdquo;&lt;/li&gt;
&lt;li&gt;uri=&amp;quot;/~q9/&amp;quot;&lt;/li&gt;
&lt;li&gt;algorithm=MD5&lt;/li&gt;
&lt;li&gt;response=&amp;ldquo;c3077454ecf09ecef1d6c1201038cfaf&amp;rdquo;&lt;/li&gt;
&lt;li&gt;qop=auth&lt;/li&gt;
&lt;li&gt;nc=00000001&lt;/li&gt;
&lt;li&gt;cnonce=&amp;ldquo;9691c249745d94fc&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これから以下のようにresponseが作成される.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;A1 = ユーザ名 &amp;#34;:&amp;#34; realm &amp;#34;:&amp;#34; パスワード
A2 = HTTPのメソッド &amp;#34;:&amp;#34; コンテンツのURI
response = MD5( MD5(A1) &amp;#34;:&amp;#34; nonce &amp;#34;:&amp;#34; nc &amp;#34;:&amp;#34; cnonce &amp;#34;:&amp;#34; qop &amp;#34;:&amp;#34; MD5(A2) )
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これをみると. パスワードがわからなくてもA1さえわかればサーバーから送られてきたnonceを元にresponseを生成できることがわかる. ここで, A1を得るためにresponseを解読する. MD5は脆弱性が存在し鍵長も短いので復号ツールで復号できてしまう.&lt;/p&gt;
&lt;h4 id=&#34;追記&#34;&gt;追記&lt;/h4&gt;
&lt;p&gt;後のパケットにA1が帰ってきているので, ツールを使わなくて良い.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://qiita.com/chroju/items/3ddae568206b8bc3d8f9&#34;&gt;Qiita:暗号化とハッシュ化に関する基本的な事柄まとめ&lt;/a&gt;
&lt;a href=&#34;https://hashtoolkit.com/reverse-hash/?hash=c3077454ecf09ecef1d6c1201038cfaf&#34;&gt;Hash Toolkit: 復号ツール&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;c627e19450db746b739f41b64097d449:bbKtsfbABAA=5dad3cce7a7dd2c3335c9b400a19d6ad02df299b:00000001:9691c249745d94fc:auth:31e101310bcd7fae974b921eb148099c
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この結果A1がわかった. ちなみにA1は解読できなかったのでパスワードがわからない. しかし他の全てのパラメータがわかるのでresponseを生成できる.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
