tcpserver は D.J.Bernstein 氏作のサーバ制御ツールで ucspi-tcp というパッケージに入っています。UCSPI とは DJB 氏が提案している UNIX Client-Server Program Interface という TCP/IP のクライアント・サーバ通信ツールのインターフェースの仕様です。また、接続制御のために同氏作のデータベース cdb を用います。
https://ctftime.org/event/2102 web/terms-and-conditions web/flaglang web/la housing portal web/new-housing-portal web/pogn web/jason-web-token web/ctf-wiki 状況把握 cookieを保持しながらXSSを達成する cookie有りの状態でPOST /flagする POST /flagの結果を取り出してくる 最終payload web/terms-and-conditions ソースコード無し。 規約が出てくるので是非同意したいのだが「I Acc…
executileのv0.1.1をリリースした.#include不足でコンパイルできないバグを2年くらい前に修正したのにタグを切り忘れていた. executileは,systemdからソケットアクティベーションされることを期待してるプログラムをsystemd以外の環境(コンテナとか)で実行するためのヘルパープログラム集にしたいと思って名前をつけた.「集」と言っても今のところinet-listen-socketというプログラムひとつしかない.これはTCP/UDPソケットをリスンして,チェインされたプログラムにsystemdのsd_listen_fds規約で渡すだけの機能を持っている.要はinet…
#ECDH #InvalidCurveAttack #CRT 楕円曲線の位数がある程度小さい数を含むように素因数分解できる場合に、楕円曲線のgenerator * (order / factor)をやると、位数がfactorな部分群のgeneratorが求まる(位数を調整するテク)。あとは #CRT で復元 #!/usr/bin/env python import socketserver, threading PORT = 12345 FLAG = int(b"y0u're_th3_3llipt1c_curv3_mas7tr".hex(), 16) A = 0x7D5A0975FC2C305…
#!/usr/bin/env python3 import socketserver, sys from Crypto.Util.number import getPrime import gmpy2 import random, math from secret import flag def recvline(req): buf = b"" while not buf.endswith(b"\n"): buf += req.recv(1) return buf class RequestHandler(socketserver.BaseRequestHandler): def handle…
概要 プロセス周辺の知識が必要だなと感じる場面が何度かあったので、ざっくり深掘ります。 そもそもプログラムはどうやって実行されているのか プロセスを学ぶ前に、そもそもプログラムはどうやって実行されるのかが見えてくると、プロセスが理解しやすくなります。 以下に、静的型付け言語で書いたプログラムがどのように実行されるかの手順をまとめます。 まず、プログラムのファイルはハードディスクに存在しています。 ビルドを実行して、機械語で書かれた実行ファイルを作成します。この実行ファイルもハードディスクに保存されます。(ビルドはコンパイル処理 + リンク処理) 実行ファイルのプログラムを実行した場合、OSは実…
from hash import secureHash import SocketServer import string import random from text import * import os from hashlib import sha256 PORT = 2000 ROUNDS = 10 TIMEOUT = 120 sigma = string.ascii_letters + string.digits + "!@#$%^&*()-_=+[{]}<>.,?;:" def isPrintable(x): global sigma alpha = set(sigma) bet…
#0CTF_Quals_2021 #!/usr/bin/python3 import os import socketserver import random import signal import string import struct from hashlib import sha256 import secrets import pykeepass from flag import flag MAXSIZE = 0x2000 class Task(socketserver.BaseRequestHandler): def proof_of_work(self): proof = ''…
前回 以下の部分まで進んだ。 konbuni.net リダイレクト 実際にやってみる 今まではあるページに遷移するもの、と認識。 もっと厳密にいうと、 「レスポンスヘッダーのLocationに記されたURLにファイルを取得しに行っている」 ということらしい。 試しにchromeの開発者モードを開き、以下の二つのURLにアクセスしてみる。 https://kmaebashi.com/programmer/webserver https://kmaebashi.com/programmer/webserver/ /が付いていないほうはリダイレクト(301)が発生。 付いていないほうは発生せず、一発…
今回の目標 前回はhtmlファイルをブラウザに返してくれるところまで実装した。 今回の目標として、 htmlファイルに埋め込まれた画像を返却できるようにする。 htmlファイル・画像等ファイルの情報を全てブラウザで表示できるようにする。 リクエストしたファイルが見つからなかったら、404エラーを返す。 ソースコード Server.php <?php // localhostのport8001を使用 class Server { public $address = '127.0.0.1'; public $port = '8001'; // DocumentRoot const DOCUMENT…
はじめに 前回の続きになります。 脱・伸び悩みWebエンジニアシリーズとなります。 konbuni.net また、以下の記事でインストールしたApacheを本格的に使っていきます。 konbuni.net HTTPとは? 超簡単に言うと、サーバーにあるファイルを操作するときに使う通信の手順。 (よくプロトコルとか規約とか言われるけど、自分はその説明だと正直全く分からんかった…。) あるサーバー(サイト)にあるこのファイル(ページ)が見たい!! そんなときはこのHTTPの定められた手順に乗っ取り、そのルールを守って、何かを作成したり送ったりする必要がある。 その一つがHTTPの中のGETメソッド…
はじめに 今回は超簡単なWebサーバを作っていきたいと思います。 こちらの本ではコードはJavaなのですが、Javaの環境構築をするのは結構大変です。 また、私自身はPHPをよく扱うので、書籍内のコードをphpに読み替えて、作成していこうと思います。 ソケット通信で接続を確立する サーバとクライアント間で何かをやり取りしたい!と思った時、まずは両者をつなぐものが必要になります。 一体何が必要なのでしょうか? 答えはソケットです。 ソケットとは??という問いにはこちらの記事が分かりやすかったです。 envader.plus しっかり理解するには色々と前提知識が必要ですが、 そのあたりはハンズオン…
gihyo.jp この書籍を参考に、RubyでWebサーバを作ってみようと思います。 目次 目次 動作環境 実装 実装のゴールの確認 初期化 待機 リクエスト受信 レスポンス送信 切断 全体のコード index.htmlを用意する 起動 確認 ソースコード モドキじゃないサーバへ 実装 画像やCSSなどを送信できるようにする TCP接続を繰り返し受け付けるようにする HTMLファイルの用意 index.htmlを書き換え next.htmlを用意する 起動 確認 ソースコード 動作環境 wsl2 Debian Ruby 3.2.2 実装 実装のゴールの確認 WebサーバはブラウザからのHTTP…
gihyo.jp この書籍を参考に、RubyでTCPサーバ/クライアントを作ってみました。 目次 目次 TCPとソケット 動作環境 サーバ側 初期化 待機 データ受信 データ送信 切断 ソースコード クライアント側 初期化 送信 ソースコード 実行 client_send.txtとserver_send.txtファイルを用意する 起動 確認 TCPサーバをWebブラウザで叩く サーバ起動 URL入力 確認 TCPクライアントでWebサーバを叩く tcp_client.rbの書き換え 起動 確認 ソースコード TCPとソケット TCP(Transmission Control Protocol)…