Skip to content

Instantly share code, notes, and snippets.

View ts0818's full-sized avatar

ts0818 ts0818

View GitHub Profile
@ts0818
ts0818 / gist:e86785462d53562d9df5
Last active September 29, 2015 06:11
session
<?php
/* PpSessionクラス */
class PpSession {
protected $timeout; // セッションタイムアウト時間
// セッション存在チェック
@ts0818
ts0818 / gist:b59cb6cd6d706ab4d3e1
Created October 19, 2015 12:33
パーフェクトphpのオーバーロード
<?php
/* クラスSomeClassを定義 */
class SomeClass{
// privateな値を保存するコンテナ(プロパティ)
private $values = array();
// privateなコンテナ(プロパティ)へのアクセサ(メソッド)getter
@ts0818
ts0818 / null_byte_attack_01.php
Created November 5, 2015 07:39
パーフェクトPHP nullバイト攻撃
<?php
/**
* 文字列中のnullバイトを削除する関数
* 引数が配列の場合は、配列の要素に対して再帰的に処理を行う
*/
function delete_null_byte($value){
if (is_string($value) === true) {
$value = str_replace("\0", "", $value);
} elseif (is_array($value) === true) {
$value = array_map('delete_null_byte', $value);
@ts0818
ts0818 / null_byte_attack_02.php
Created November 5, 2015 07:48
パーフェクトPHP nullバイト攻撃対応方法
<?php
/**
* 文字列中のnullバイトを削除する関数
* 引数が配列の場合は、配列の要素に対して再帰的に処理を行う
*/
function delete_null_byte($value){
if (is_string($value) === true) {
$value = str_replace("\0", "", $value);
} elseif (is_array($value) === true) {
$value = array_map('delete_null_byte', $value);
@ts0818
ts0818 / directory_travasal_01.php
Last active November 5, 2015 08:01
パーフェクトPHP ディレクトリトラバーサル
<?php
/**
* このプログラムは脆弱性のサンプルです。
* 公開サーバに設置しないで下さい
*/
if (isset($_GET['file']) === true && $_GET['file'] !== '') {
// GET変数で指定されたファイルが /var/www/html に存在すれば内容を出力
$file = '/var/www/html/' .$_GET['file'];
if (file_exists($file) === true) {
readfile($file);
@ts0818
ts0818 / directory_travasal_02.php
Last active November 5, 2015 08:00
パーフェクトPHP ディレクトリトラバーサル対応方法 ホワイトリスト方式
<?php
if (isset($_GET['file']) === true && $_GET['file'] !== '') {
// 指定されたファイルがfile1かfile2でなければ処理終了
if (! in_array($_GET['file'], array('file1', 'file2'))) {
exit();
}
// GET変数で指定されたファイルが /var/www/html に存在すれば内容を出力
$file = '/var/www/html/' . $_GET['file'];
if (file_exists($file) === true) {
readfile($file);
@ts0818
ts0818 / directory_travasal_03.php
Last active November 5, 2015 07:58
パーフェクトPHP ディレクトリトラバーサル対応方法 ブラックリスト方式
<?php
if (isset($_GET['file']) === true && $_GET['file'] !== '') {
// 指定されたファイル名に「..」が含まれていたら処理終了
if (strpos($_GET['file'], '..') !== false) {
exit();
}
// GET変数で指定されたファイルが /var/www/html に存在すれば内容を出力
$file = '/var/www/html/' . $_GET['file'];
if (file_exists($file) === true) {
readfile($file);
@ts0818
ts0818 / directory_travasal_04.php
Created November 5, 2015 07:55
パーフェクトPHP ディレクトリトラバーサル対応方法 不正文字列除去方式
<?php
if (isset($_GET['file']) === true && $_GET['file'] !== '') {
$file = str_replace("\0", "", $_GET['file']); // nullバイトを削除
$file = '/var/www/html/' . basename($file); // ファイル名以外の部分を削除
// GET変数で指定されたファイルが /var/www/html に存在すれば内容を出力
if (file_exists($file) === true) {
readfile($file);
}
}
@ts0818
ts0818 / eval_attack_01.php
Created November 5, 2015 08:03
パーフェクトPHP eval攻撃
<?php
/**
* このプログラムは脆弱性のサンプルです。
* 公開サーバに設置しないでください
*/
$string = 'こたんたにたちたわた、世界!';
eval("echo htmlspecialchars(str_replace('" . $_GET['keyword'].
"','', '".$string."'), ENT_QUOTES, 'UTF-8');");
@ts0818
ts0818 / eval_attack_02.php
Created November 5, 2015 08:07
パーフェクトPHP eval攻撃対応方法 
<?php
$string = 'こたんたにたちたわた、世界!';
// 入力された文字列が$string変数に含まれている場合だけ処理を行う
if (strpos($string, $_GET['keyword']) !== false) {
eval("echo htmlspecialchars(str_replace('".$_GET['keyword'].
"','', '".$string."'), ENT_QUOTES, 'UTF-8');");
}