Skip to content

Instantly share code, notes, and snippets.

Avatar

ts0818 ts0818

View GitHub Profile
View gist:e86785462d53562d9df5
<?php
/* PpSessionクラス */
class PpSession {
protected $timeout; // セッションタイムアウト時間
// セッション存在チェック
@ts0818
ts0818 / gist:b59cb6cd6d706ab4d3e1
Created Oct 19, 2015
パーフェクトphpのオーバーロード
View gist:b59cb6cd6d706ab4d3e1
<?php
/* クラスSomeClassを定義 */
class SomeClass{
// privateな値を保存するコンテナ(プロパティ)
private $values = array();
// privateなコンテナ(プロパティ)へのアクセサ(メソッド)getter
@ts0818
ts0818 / null_byte_attack_01.php
Created Nov 5, 2015
パーフェクトPHP nullバイト攻撃
View null_byte_attack_01.php
<?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_04.php
Created Nov 5, 2015
パーフェクトPHP ディレクトリトラバーサル対応方法 不正文字列除去方式
View directory_travasal_04.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 / directory_travasal_03.php
Last active Nov 5, 2015
パーフェクトPHP ディレクトリトラバーサル対応方法 ブラックリスト方式
View directory_travasal_03.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_02.php
Last active Nov 5, 2015
パーフェクトPHP ディレクトリトラバーサル対応方法 ホワイトリスト方式
View directory_travasal_02.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_01.php
Last active Nov 5, 2015
パーフェクトPHP ディレクトリトラバーサル
View directory_travasal_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 / eval_attack_01.php
Created Nov 5, 2015
パーフェクトPHP eval攻撃
View eval_attack_01.php
<?php
/**
* このプログラムは脆弱性のサンプルです。
* 公開サーバに設置しないでください
*/
$string = 'こたんたにたちたわた、世界!';
eval("echo htmlspecialchars(str_replace('" . $_GET['keyword'].
"','', '".$string."'), ENT_QUOTES, 'UTF-8');");
@ts0818
ts0818 / eval_attack_02.php
Created Nov 5, 2015
パーフェクトPHP eval攻撃対応方法 
View eval_attack_02.php
<?php
$string = 'こたんたにたちたわた、世界!';
// 入力された文字列が$string変数に含まれている場合だけ処理を行う
if (strpos($string, $_GET['keyword']) !== false) {
eval("echo htmlspecialchars(str_replace('".$_GET['keyword'].
"','', '".$string."'), ENT_QUOTES, 'UTF-8');");
}
@ts0818
ts0818 / upload_attack_01.php
Created Nov 5, 2015
パーフェクトPHP ファイルアップロード攻撃
View upload_attack_01.php
<?php
/**
* このプログラムは脆弱性のサンプルです。
* 公開サーバに設置しないでください
*/
// アップロードされたファイルは、ドキュメントルート内のuploadsディレクトリに保存
$upload_dir = '/var/www/html/uploads/';
if (empty($_FILES) === false && empty($_FILES['upfile']) === false) {
if (is_uploaded_file($_FILES['upfile']['tmp_name']) === true) {