MISC

Hack Zone Tunisia 2019 writeup Microscope

Microscope

16 ×

I'm usually looking down, into a microscope.

http://149.56.110.180:1234/

Author: PsycoR


URLにアクセスしてソースを確認すると次のようなHTMLソースになっています。
<!DOCTYPE html>
<html>
    <head>
        <title>Microscope</title>
    </head>
    <body>
        <table>
            <tr>
                <td bgcolor="#474946"></td>
                <td bgcolor="#383961"></td>
bgcolorをバイナリデータとして読み替えるとGIF89aになります。bgcolorをバイナリデータとしてファイルに保存するPythonプログラムを書きます。
from bs4 import BeautifulSoup
import struct

f = open('Microscope.html')
html = f.read()
f.close()
soup = BeautifulSoup(html, 'html.parser')
tds = soup.find_all('td')
data = ''
for td in tds:
data += td.get('bgcolor')[1:]
f = open('aaa.gif', 'wb')
for i in range(0, len(data), 2):
f.write(struct.pack('B', int(data[i:i+2], 16)))
f.close()
実行すると次のアニメーションGIFファイルができます。

aaa

アニメーションGIFのフレームを順番に取得してQRコードを読ませるPythonプログラムを書きます。
from PIL import Image, ImageSequence
from pyzbar.pyzbar import decode

im = Image.open('aaa.gif')
frames = (frame.copy() for frame in ImageSequence.Iterator(im))
flag = ''
for frame in frames:
data = decode(frame)
flag += data[0][0].decode('utf-8', 'ignore')
print(flag)
実行するとフラグが出力されます。
フラグは、
HZVII{7h3_0r161n4l_qr_c0d3_w45_d3v3l0p3d_1n_1994.}

Hack Zone Tunisia 2019 writeup Welcome

Welcome

5

This is our Welcome Task :)

http://149.56.110.180:1337/

Author: PsycoR


URLにアクセスします。ソースを表示するとフラグが記載されています。

1

フラグは、
HZVII{d0nT_Tru5t_Cl1pb04rd}
です。



FireShell CTF 2019 writeup babycryptoweb

babycryptoweb

60

Can you help me recover the flag?

https://babycryptoweb.challs.fireshellsecurity.team/

提示されたURLを表示すると次のようにPHPのソースコードが表示されます。
<?php
$code '$kkk=5;$s="e1iwZaNolJeuqWiUp6pmo2iZlKKulJqjmKeupalmnmWjVrI=";$s=base64_decode($s);$res="";for($i=0,$j=strlen($s);$i<$j;$i++){$ch=substr($s,$i,1);$kch=substr($kkk,($i%strlen($kkk))-1,1);$ch=chr(ord($ch)+ord($kch));$res.=$ch;};echo $res;';
    
if (isset(
    
if (isset($_GET['p']) && isset($_GET['b']) && strlen($_GET['b']) === && is_numeric($_GET['p']) && (int) $_GET['p'] < strlen($code)) {
    
    $p = (int) $_GET['p'];
    
    $code[$p] = $_GET['b'];
    eval(
    eval($code);
} else {
    
} else {
    show_source(__FILE__);
}

}
?>    
パラメータとしてpとbを必要とします。pは数字で$codeの文字列長より小さい値、bは1文字である必要があります。$codeのpで指定された位置の文字をbで指定した文字で置き換えてeval関数で実行します。
$codeを読みやすく記述すると次のようになります。
$code = '
$kkk=5;
$s="e1iwZaNolJeuqWiUp6pmo2iZlKKulJqjmKeupalmnmWjVrI=";
$s=base64_decode($s);
$res="";
for($i=0, $j=strlen($s); $i < $j; $i++)
{
$ch=substr($s,$i,1);
$kch=substr($kkk,($i % strlen($kkk)) - 1, 1);
$ch=chr(ord($ch)+ord($kch));
$res.=$ch;
};
echo $res;
';
上記の「+」を「-」に置き換えてみます。
pに201、bに-を指定してアクセスするとフラグが表示されます。
フラグは、
F#{0n3_byt3_ru1n3d_my_encrypt1i0n!}
です。



PlaidCTF 2017 writeup zipper

zipper

Misc (50 pts)

Something doesn't seem quite right with this zip file. 

Can you fix it and get the flag?

ダウンロードしたzipファイルは壊れているようでそのままでは解凍できません。下記URLのZIPファイルフォーマットを参考にしながら、バイナリエディタでzipファイルを確認します。
https://ja.wikipedia.org/wiki/ZIP_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88)#.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.83.98.E3.83.83.E3.83.80

まず、ローカルファイルヘッダは下記のようになっています。ファイル名の長さとファイル名がおかしいようです。
開始 サイズ 項目 備考
0  
4   シグネチャ 50 4B 03 04  
4  
2   展開バージョン 14 00  
6  
2   ビットフラグ 02 00  
8  
2   圧縮メソッド 08 00  
10
2   最終変更時間 FC 99  
12
2   最終変更日付 92 4A  
14
4   CRC32 3E A9 2E 53  
18
4   圧縮サイズ 46 00 00 00 70bytes
22
4   非圧縮サイズ F6 00 00 00 246bytes
26
2   ファイル名の長さ(n) 29 23 9001bytes
28
2   拡張フィールドの長さ(m)  1C 00 28bytes
30
n   ファイル名 00 00 00 00 00 00 00 00
30+n m 拡張フィールド

セントラルディレクトリファイルヘッダは下記のようになっています。これもファイル名の長さとファイル名がおかしいようです。
開始 サイズ 項目 備考
0  
4   シグネチャ  50 4B 01 02  
4  
2   作成バージョン 1E 03  
6  
2   展開バージョン 14 00  
8  
2   ビットフラグ 02 00  
10
2   圧縮メソッド 08 00  
12
2   最終変更時間 FC 99  
14
2   最終変更日付 92 4A  
16
4   CRC32 3E A9 2E 53  
20
4   圧縮サイズ 46 00 00 00 70bytes
24
4   非圧縮サイズ F6 00 00 00 246bytes
28
2   ファイル名の長さ(n) 29 23 9001bytes
30
2   拡張フィールドの長さ(m)  18 00 28bytes 
32
2   ファイルコメントの長さ 00 00  
34
2   開始ディスク番号 00 00  
36
2   内部ファイル属性 01 00  
38
4   外部ファイル属性 00 00 B4 81  
42
4   ローカルファイルヘッダの開始位置 00 00 00 00  
46
n   ファイル名 00 00 00 00 00 00 00 00  
46+n
m 拡張フィールド     

最後にセントラルディレクトリの終端レコードを確認します。これは特に問題ないようです。
開始 サイズ 項目 備考
0  
4 シグネチャ 50 4B 05 06  
4  
2 ディスク数 00 00  
6  
2 セントラルディレクトリの開始ディスク 00 00  
8  
2 セントラルディレクトリ数 01 00  
10
2   セントラルディレクトリ合計 01 00  
12
4   セントラルディレクトリサイズ 4E 00 00 00  
16
4   セントラルディレクトリ開始位置 88 00 00 00  
20
2   コメントの長さ(n)  00 00  
22 n   コメント    

それでは、zipファイルを修復してみます。
  1. ファイル名の長さが8バイトと分かりますので、ローカルファイルヘッダとセントラルディレクトリヘッダのファイル名の長さのフィールドを08 00に修正します。
  2. 次に、ローカルファイルヘッダとセントラルディレクトリヘッダのファイル名のフィールドをダミーで41 41 41 41 41 41 41 41(AAAAAAAA)に修正します。
 つまり、下図のように修正します。
1

これで解凍できるようになります。解凍したファイルをテキストエディタで確認すると下記のようになっています。
                                  
                                  
Huzzah, you have captured the flag:
PCTF{f0rens1cs_yay}               
                                  
                                  
                                  
フラグは、
PCTF{f0rens1cs_yay}
です。 

詳解 圧縮処理プログラミング
昌達 慶仁
SBクリエイティブ
2010-10-26



PlaidCTF 2017 writeup sanity check

sanity check

Misc (1 pts)

The flag is PCTF{poop}


フラグは、
PCTF{poop}
です。



PlaidCTF 2017 writeup logarithms are hard

logarithms are hard

Misc (10 pts)

What is e^(1.000000001)? 

Please enter in decimal with 7 places. 
(For example, if the answer was 2.71828183... the flag would be 2.7182818 )

Pythonでe^(1.000000001)を計算してみます。
>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> print(math.e**(1.000000001))
2.718281831177327
2.7182818をsubmitしてみますが、フラグではないようです。

logarithms bugでググります。電卓のlog計算のバグがあるようです。下記サイトで、yxの10の9乗のところの値が怪しいです。

フラグは、
2.7191928
記事検索
ギャラリー
  • TetCTF 2023 NewYearBot
  • UUT CTF writeup Find The Password
  • UUT CTF writeup The Puzzle
  • Hack Zone Tunisia 2019 writeup Microscope
  • Hack Zone Tunisia 2019 writeup Welcome
  • SwampCTF 2019 writeup Brokerboard
  • SwampCTF 2019 writeup Leap of Faith
  • SwampCTF 2019 writeup Last Transmission
  • CBM CTF 2019 writeup Long road
カテゴリー