纯属分析  并不是漏洞 也可以叫漏洞
程序文件不多 大致能和用户交换的就是  留言本 和网址提交
2个都详细看了几次  按本小菜看来是没有使用可能性
但看完下列分析或许可能用到
现在只剩下后台可以找了
admin/index.php 必须经过这里才能使用里面的文件
所以从这里下手
经典对白 看代码  index.php
<?
require ‘../init.php’;
if(empty($_GET[c]) || ($_GET[c]==’login’ and (empty($_GET[a]) || $_GET[a]==’login’)) || $_GET[c]==’securimage’)
//看来只能运行login和securimage 2个 一个是登录 一个是验证码
{}
else
{
mod_auth::instance(); //看权限检测
session_write_close();
}
load_controller();
?>
看文件 mod_auth
$auth = mod_login::instance();
if(!$auth->is_login())
{
header(“location: ./index.php?c=login”);
}
//经测试这里不能用关闭脚本方法去绕过  因为还有别的地方验证,开始以为可以 ,后来才发现还没退出清除COOKIES
!$auth 就是instance转过来 那段不用看了 没什么作用
主要是is_login   看下
public function is_login()
{
$cookie = array_var($_COOKIE, AUTH_KEY . ‘_admin_auth’);
//获取COOKIE头   注AUTH_KEY为114la
if (isset($cookie) and !empty($cookie))
//判定是否为空…..
{
$cookie_data = explode(‘:’, base64_decode($cookie));
//重点  解密这段东西并变成数组  用;分开
if (count($cookie_data) == 3)
//如果有3组数据
{
$current_cookie_auth = $cookie_data [1];
if ($current_cookie_auth == $this->())
//get_user_agent  就是
//return md5(AUTH_KEY . ‘_’ . $_SERVER [HTTP_USER_AGENT]);
//AUTH_KEY 是114la  然后加个_ 再加浏览器版本 然后MD5加密  这里可以自己结构了
{
$current_cookie_username = $cookie_data [0];
$current_cookie_password = $cookie_data [2];
//看到没? 账号密码是保存在COOKIES里的
if (self::verify_login_in($cookie_data [0], $cookie_data [2]))
//下面就是 存在后给予管理员权限的代码  忽略不看了
//下面是 verify_login_in 检测代码
$password_md5 = md5($password);
$select = “select * from ylmf_admin_user where
`name`=’$username’ and `password`=’$password_md5′  ”;
if (app_db::query($select))
//以上是自动登录代码
然后就是看114la_admin_auth  是如何加密的

看登录验证代码
if (self::verify_login_in($username, $password))
//$username, $password是POST提交的  全宇宙的登录方式都基本这样
{
$auth_key = self::get_user_agent();
//上面解析了  //get_user_agent  就是
//return md5(AUTH_KEY . ‘_’ . $_SERVER [HTTP_USER_AGENT]);
//AUTH_KEY 是114la  不是随机生成的
$auth_password = $password;
$auth_username = $username;
//上面2个不用解析了
self::update_login($username);
//记录登录记录
$cookie_value = base64_encode($auth_username . ‘:’ . $auth_key . ‘:’ . $auth_password);
//重点…账号 + 114la  +密码…..
$cookie_expire = time () + 3600; //20分钟
//这里没用的 不用理
$cook_pre = AUTH_KEY . ‘_admin_auth’;
//cookies前缀
$_COOKIE[$cook_pre] = $cookie_value;
//这里也不需要理会
setcookie(AUTH_KEY . ‘_admin_auth’, $cookie_value, $cookie_expire, PATH_COOKIE);
//写入COOKIE
return true;
}

看来解密方式非常简单 就是explode(‘:’, base64_decode($cookie));
这样既获得管理员明文账号密码

怎么获得管理员的COOKIES?  就是提交网址功能!
在提交的主页里加一段获取COOKIES 然后记录在文件的代码就行了 这里不多说 很简单(注意:不能实现跨域获取!)
因为管理员必须要登录后台才能查看提交网址 所以必然只有管理员才看到你的网址并打开 并具有那个ll4la_admin_auth的COOKIES
99%的人审核网站肯定会打开看一下 还有一个就是看都不看就通过….就是白痴他祖先

注 :并不是利用XSS盗COOKIES 因为这套程序暂时没发现XSS漏洞 因为能给你使用的只有留言本和提交网址.
而是引导管理员打开你的PHP网站来获得需要的COOKIES

获取管理员COOKIES 0DAY  就是社会工程学    因为提交网址收录的 必然管理员已经登录(具有条件了)才能看到  看到后必然打开你的网址才看下能否值得收录
利用方式很明显了,这需要针对性!

PS:你的网站如何获得目标网站COOKIES?  这方法很多  跨域就难了  挂马总可以把?    钓鱼可以把?成功后偷cookies文件。

———–admin补充———

C:>nc 80C:>nc 80
GET /url.php?n=%0d%0a%20<script>alert(/xxxx/)</script> HTTP/1.1
Cookie: PHPSESSID=72d4f5acfea3dca011a03d7a2aabb9c5; xxadboo=; layout=1; mailid=1
0; cnzz_a30002711=0; sin30002711=javascript%3AYP8DcqS0CXjo5VL2%28%29%3C%3E; rtim
e30002711=0; ltime30002711=1295677010546; cnzz_eid30002711=6762761-1295677143-ja
vascript%3AYP8DcqS0CXjo5VL2%28%29%3C%3E
Host:
Connection: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Accept: */*

HTTP/1.0 200 OK
Date: Sat, 22 Jan 2011 10:23:11 GMT
Server: Apache
Content-Disposition: attachment; filename=”
<script>alert(/xxxx/)</script>”
Cache-Control: max-age=259200
Expires: Tue, 25 Jan 2011 10:23:11 GMT
Content-Length: 279
Content-Type: application/octet-stream
Powered-By-ChinaCache: MISS from CNC-BJ-D-3S1
Connection: keep-alive

[DEFAULT]
BASEURL=http://www.114la.com/?desk
[InternetShortcut]
URL=http://www.114la.com/?desk
IDList=
IconFile=http://www.114la.com/favicon.ico
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut.A]
[InternetShortcut.W]
IconFile=E:+AFyPb072fxaPkQBc-favicon.ico

C:>

可惜是Content-Type: application/octet-stream,利用不了http响应头跨站脚本漏洞了 ,不知道谁可以?