0
0

More than 1 year has passed since last update.

SDCTF

Posted at

初めに

SDCTFで学んだことをまとめていきます。
全然時間が取れず期間内にはほとんど触ることができなかった(educationalしかできてない...)ので、次のCTFの時には解く時間をしっかり確保するようにしたいです。
間違ってたら教えていただけるとありがたいです。

OSINT

This flag has been stolen

Wayback Machine

Wayback Machineを使うことでサイトが過去にどのようなものだったのかを見ることができる。

REVENGE

A Bowl of Pythons

わかった部分から少しずつコードを修正していくことで、コードを見やすくしていく。
関数化、コード化されている部分を自分で実行してみることでコードをより簡単にしていく。
pythonのコードを見るときは横にpythonのターミナルを開いて、逐次実行しながら理解していくとよい。

eval

pythonではeval関数を用いることで引数のコードを実行することができる。

format

pythonでもprint関数でフォーマットを用いることができる。
{}で囲まれた部分はその後ろの.format()に存在する配列に対応している。

-1

pythonの配列においてインデックスがマイナスの場合は後から数える。
-1だと配列の最後の値を指す。

xor

g xor fib = fのとき、f xor fib = gとなる。

PWN

printfailed

ダイレクトパラメータアクセス

printf関数において、%N$dとすることで、N番目の引数を表示させることができる。

CyberChef

シーザー暗号を解くにはCyberChefが有効。
https://cyberchef.org
rotを用いることで文字のASCIIはいじることができるが、記号はいじることができないので、subを用いて調整する。

Pwntool

pwntoolを使ってctfを解くときは、手元にバイナリと自分で作ったダミーのflagファイルを用意する。
pythonでソルバーを書く。
process()に処理したい内容(たとえばバイナリを実行するであったり、netcatで接続するであったり)を書くことで、その環境でソルバーを実行することができる。
recvlineで出力された内容を受け取り、sendline()で括弧の内容を入力する。

JAIL

haxlab

シェルを開く

import os
os.system("sh")

でシェルを開くことができる。

dir

dir関数を用いることで、引数に指定したオブジェクトのアトリビュート(変数や関数)を表示することができる。
このとき__で始まるものは特殊なアトリビュートである。

getadder

getadder(object,"attribute")でもアトリビュートを参照することができる。

dict

__dict__にはすべてのアトリビュートが格納されている。

配列

flagを取り出すことができなくても、flagを配列のように扱い、要素を順番に取り出すことによって表示させることができる。

monkey patch

pythonでは__builtins__に含まれている関数も実行時に上書きすることができる。

lambda

pythonではlambda 引数:式で関数を定義することができる。(ただし名前なし)

#FORENSICS

needle-in-a-haystack

cyberchef

cyberchefにバイナリファイルをぶち込むことも可能。
render imageで画像ファイルとして出力する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0