PHP代码审计 -1.SQL注入总结

0x01 背景         

最近在学习PHP代码审计,这里做一个SQL注入总结,是对自己学习知识的总结,也是为自己学习的笔记,方便自己反复翻阅。

 

0x02 PHP代码审计-SQL注入

挖掘SQL注入漏洞的时候,最简单也最容易被发现的就是什么都没过滤的情况。

 代码示例 

<?php                                                                                                                                                              $id = $_REQUEST[ 'id' ]; //接收参数 
$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; //sql语句拼接                                                                             $result = mysql_query( $query ) ; //带入数据库执行 
?>

 什么都没过滤的情况下,我们只需按照参数拼接的位置去构造POC,参数位置可能在select/insert/update/delete或者order by/group by /having/limit等关键字之后,这需要我们对sql注入有一个比较清晰的认知,方能快速构造POC。

 

0x03 绕过全局防护

现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号。遇到这种情况我们就需要找一些编码解码的函数来绕过全局防护。

情况一:urldecode()

 '   url编码是%27

 % url编码是%25

%2527 ---服务器接收参数进行还原---%27--urldecode解码--单引号

%252527---urldecode解码--%2527--urldecode解码---%27(单引号)

<?php
    $idmysql_real_escape_string($_GET[ 'id' ]);   //模拟全局过滤
    echo $id;
    echo "<br />";
    $id=urldecode($id);                             //模拟url解码
    echo $id;
    $query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; //sql语句拼接                                                                             $result = mysql_query( $query ) ; 
?>

 通过%2527绕过单引号的过滤,然后通过url解码为%27,从而绕过单引号的过滤,带入到数据库操作,造成sql注入。

 

情况二: base64_decode()

 通过base64_decode解码,从而绕过单引号的过滤,把单引号带入数据库。

代码示例如下:

<?php
    $idmysql_real_escape_string($_GET[ 'id' ]);                //模拟全局过滤
    echo $id;
    echo "<br />";
    $id=base64_decode($id); //模拟base64_decode解码
    echo $id;
    echo "<br />";
    $query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";                                                                                    $result = mysql_query( $query ) ;
?>

 

 情况三:宽字节注入

宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞。具体原理如下: 1.正常情况下当GPC开启或使用addslashes函数过滤GET或POST提交的参数时,黑客使用的单引号 ‘ 就会被转义为: \’; 2.但如果存在宽字节注入,我们输入%df%27时首先经过上面提到的单引号转义变成了%df%5c%27(%5c是反斜杠\),之后在数据库查询前由于使用了GBK多字节编码,即在汉字编码范围内两个字节会被编码为一个汉字。然后MySQL服务器会对查询语句进行GBK编码即%df%5c转换成了汉字“運”(注:GBK的汉字编码范围见附录),而单引号逃逸了出来,从而造成了注入漏洞。 现在基本上都会将mysql的连接配置为“set character_set_client=binary”来解决这个问题 。

输入-- 錦’,“錦”这个字,它的utf-8编码是e98ca6,它的gbk编码是e55c,而上面提到过反斜杠\正好为5c,首先经过addlashes函数或GPC对单引号转义变为:錦\’,然后这里注册时会经过icnov函数会对”錦”转化为gbk编码,最后就是:%e5%5c%5c%27。反斜杠被转义了(%5c%5c),从而单引号逃逸出来引发注入漏洞。

 POC:

   %E9%8C%A6%27%20union%20select%201,2,3,user(),5,6,7,database(),9%23 

 

因为# %0a的一些闭合都被过滤了,可以使用-<a>- a会在浏览器执行为-- a这样就闭合了

 

  

情况四:二次注入

 二次注入也是一种比较常见的注入,它涉及到入库和出库。因为有全局转义所以入库的时候:

Insert into table (username) values (‘hack\’’); 这样入库后转义符就会消失变成了hack’,这样如果hack’出库被带入查询的话就会成功的引入了单引号导致注入。

 

0x04 可能存在的注入点

1、注入点类似id=1这种整型的参数就会完全无视GPC的过滤;

2、注入点包含键值对的,那么这里只检测了value,对key的过滤就没有防护;  

3、有时候全局的过滤只过滤掉GET、POST和COOKIE,但是没过滤SERVER。 附常见的SERVER变量(具体含义自行百度):QUERY_STRING,X_FORWARDED_FOR,CLIENT_IP,HTTP_HOST,ACCEPT_LANGUAGE

4、FILES注入,全局只转义掉GET、POST等传来的参数,遗漏了FILES; 

5、变量覆盖,危险函数:extract()、parse_str()、$$。

6、 is_numberic函数

 

最后

 

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

 

 

 

转载于:https://www.cnblogs.com/xiaozi/p/5538921.html

【语音分离】基于平均谐波结构建模的无监督单声道音乐声源分离(Matlab代码实现)内容概要:本文介绍了基于平均谐波结构建模的无监督单声道音乐声源分离方法,并提供了相应的Matlab代码实现。该方法通过对音乐信号中的谐波结构进行建模,利用音源间的频率特征差异,实现对混合音频中不同乐器或人声成分的有效分离。整个过程无需标注数据,属于无监督学习范畴,适用于单通道录音场景下的语音与音乐分离任务。文中强调了算法的可复现性,并附带完整的仿真资源链接,便于读者学习与验证。; 适合人群:具备一定信号处理基础和Matlab编程能力的高校学生、科研人员及从事音频处理、语音识别等相关领域的工程师;尤其适合希望深入理解声源分离原理并进行算法仿真实践的研究者。; 使用场景及目标:①用于音乐音频中人声与伴奏的分离,或不同乐器之间的分离;②支持无监督条件下的语音处理研究,推动盲源分离技术的发展;③作为学术论文复现、课程项目开发或科研原型验证的技术参考。; 阅读建议:建议读者结合提供的Matlab代码与网盘资料同步运行调试,重点关注谐波建模与频谱分解的实现细节,同时可扩展学习盲源分离中的其他方法如独立成分分析(ICA)或非负矩阵分解(NMF),以加深对音频信号分离机制的理解。
内容概要:本文系统介绍了新能源汽车领域智能底盘技术的发展背景、演进历程、核心技术架构及创新形态。文章指出智能底盘作为智能汽车的核心执行层,通过线控化(X-By-Wire)和域控化实现驱动、制动、转向、悬架的精准主动控制,支撑高阶智能驾驶落地。技术发展历经机械、机电混合到智能三个阶段,当前以线控转向、线控制动、域控制器等为核心,并辅以传感器、车规级芯片、功能安全等配套技术。文中还重点探讨了“智能滑板底盘”这一创新形态,强调其高度集成化、模块化优势及其在成本、灵活性、空间利用等方面的潜力。最后通过“2025智能底盘先锋计划”的实车测试案例,展示了智能底盘在真实场景中的安全与性能表现,推动技术从研发走向市场验证。; 适合人群:汽车电子工程师、智能汽车研发人员、新能源汽车领域技术人员及对智能底盘技术感兴趣的从业者;具备一定汽车工程或控制系统基础知识的专业人士。; 使用场景及目标:①深入了解智能底盘的技术演进路径与系统架构;②掌握线控技术、域控制器、滑板底盘等关键技术原理与应用场景;③为智能汽车底盘研发、系统集成与技术创新提供理论支持与实践参考。; 阅读建议:建议结合实际车型和技术标准进行延伸学习,关注政策导向与行业测试动态,注重理论与实车验证相结合,全面理解智能底盘从技术构想到商业化落地的全过程。
【顶级EI复现】计及连锁故障传播路径的电力系统 N-k 多阶段双层优化及故障场景筛选模型(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI复现】计及连锁故障传播路径的电力系统 N-k 多阶段双层优化及故障场景筛选模型(Matlab代码实现)》的技术资源,重点围绕电力系统中连锁故障的传播路径展开研究,提出了一种N-k多阶段双层优化模型,并结合故障场景筛选方法,用于提升电力系统在复杂故障条件下的安全性与鲁棒性。该模型通过Matlab代码实现,具备较强的工程应用价值和学术参考意义,适用于电力系统风险评估、脆弱性分析及预防控制策略设计等场景。文中还列举了大量相关的科研技术支持方向,涵盖智能优化算法、机器学习、路径规划、信号处理、电力系统管理等多个领域,展示了广泛的仿真与复现能力。; 适合人群:具备电力系统、自动化、电气工程等相关背景,熟悉Matlab编程,有一定科研基础的研究生、高校教师及工程技术人员。; 使用场景及目标:①用于电力系统连锁故障建模与风险评估研究;②支撑高水平论文(如EI/SCI)的模型复现与算法验证;③为电网安全分析、故障传播防控提供优化决策工具;④结合YALMIP等工具进行数学规划求解,提升科研效率。; 阅读建议:建议读者结合提供的网盘资源,下载完整代码与案例进行实践操作,重点关注双层优化结构与场景筛选逻辑的设计思路,同时可参考文档中提及的其他复现案例拓展研究视野。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值