IGGG Advent Calender 2015のために書いた記事です。
常設CTFで遊んでたらPwnable系の問題を解いてるうちにいろいろと勉強になったのでまとめます。
PwnableとはCTFのジャンルの1つで、プログラムの脆弱性をつき、本来アクセスできないメモリ領域にアクセスして操作し、フラグを取得する感じの問題です。
別名としてExploitがあります。
| /* | |
| Algorithm W | |
| */ | |
| use std::collections::BTreeMap; | |
| use std::collections::BTreeSet; | |
| type X = String; | |
| type U = i32; | |
| type Assump = BTreeMap<X, Scheme>; | |
| type Subst = BTreeMap<U, T>; |
| module tinyBase64Decoder | |
| open System | |
| open System.Collections.Generic | |
| // Declare fundamental functions | |
| // Generate n length Integer List (0 upto n - 1) | |
| let iota n = [0..n-1] | |
| // Generate n length List of x |
IGGG Advent Calender 2015のために書いた記事です。
常設CTFで遊んでたらPwnable系の問題を解いてるうちにいろいろと勉強になったのでまとめます。
PwnableとはCTFのジャンルの1つで、プログラムの脆弱性をつき、本来アクセスできないメモリ領域にアクセスして操作し、フラグを取得する感じの問題です。
別名としてExploitがあります。
| (* Groovy: | |
| /** | |
| * Hindley-Milner type inference | |
| * Ported to Groovy from Scala by Example Chapter 16 code. | |
| * (http://www.scala-lang.org/docu/files/ScalaByExample.pdf) | |
| * refered also | |
| * https://github.com/namin/spots/blob/master/hindleyMilner/typeInference.scala | |
| * Japanese page of 'Scala by Example': | |
| * http://www29.atwiki.jp/tmiya/pages/78.html | |
| */ *) |
| (main {string[] args} : bool; | |
| string (str "HelloWorld"); | |
| bool (res { | |
| (io (writeln (str)))(); | |
| return true; | |
| }); | |
| return res; | |
| ) |
| /** | |
| * Hindley-Milner type inference | |
| * Ported to Groovy from Scala by Example Chapter 16 code. | |
| * (http://www.scala-lang.org/docu/files/ScalaByExample.pdf) | |
| * refered also | |
| * https://github.com/namin/spots/blob/master/hindleyMilner/typeInference.scala | |
| * Japanese page of 'Scala by Example': | |
| * http://www29.atwiki.jp/tmiya/pages/78.html | |
| */ | |
| import groovy.transform.* |