[PHP] Non alphanumeric code

[PHP] Non alphanumeric code TL;DR PHP의 가변 함수와  bit 연산자로 alphabet 없이 함수를 실행 시킨다. 1. alphabet이 아닌 문자열을 변수에 넣는다. 2. bit연산자를 통해 원하는 문자열의 bit 값으로 바꾸어 준다. 3. 가변 함수를 사용해 함수를 실행 시킨다. <?php if (isset($_GET[‘eval’])) { if (preg_match(‘/[a-z]/i’, $_GET[‘eval’])) { die(‘No ALPHABET!!!!’); } else { eval(‘echo ‘.$_GET[‘eval’].’;’); } } 조건 …

[phpTrick] array === array compare bypass(?) (<5.5.9)

php Array === Array compare bug Example Code <?php $arr = [‘admin’, ‘password’]; $auth = $_GET[‘auth’]; if( $arr === $auth && $auth[0] != ‘admin’){ echo ‘Hello admin!’; } else { echo ‘login plz’; } 위와 같은 코드가 있을 때, 2번째 줄 $arr의 0번째인자가 admin으로 박혀있고, 3번째 줄에선 $auth와 $arr의 키/값 순서까지 일치해야 true여야하고(identity), $auth[0]이 admin이 …

[phpTrick] php safe_mode bypass vulnerability (< 5.1.6, <4.4 )

php safe_mode bypass (<5.1.6, <4.4) Normal Example //localhost/download.php?dir=path/file.jpg와 같은 파일을 다운 받게 하는 페이지가 존재할 때, LFI를 통해 서버의 파일을 다운받으려고 할 때 //localhost/download.php?dir=../../../../../../etc/passwd와 같은 쿼리를 날리게 되면 Warning: fopen(/some/path/../../../../../../etc/passwd) [function.fopen]: failed to open stream: Permission denied in /var/www/html/download.php on line 1 Safe mode 가 활성화 되어있기 때문에 다운로드가 불가능하다. Bypass Example 이때 //localhost/download.php?dir=../../../../../../etc/passwd/./처럼 자기 자신의 파일을 …

[Vulnerability of PHP Function] extract()

Extract($_POST) or ($_GET)[php.net] PHP에서 Extract()함수를  사용함에 있어서 발생할 수 있는 위험성을 알아본다. Extract() 함수 Extract($_GET)과 같이 선언 될 경우 $_GET[id]가 의미하는 바와 $id가 의미하는 바가 같아진다.   서버 사이드 변수 조작(holyshield_CTF) <?php $up=”abc”; extract($_GET); $down=”efg”; echo “u p : $up<br>”; echo “down: $down”; ?> 위와 소스코드와 같은 경우 extract 함수 위에 선언된 변수($up)의 경우 사용자 마음대로 …