外链论坛

 找回密码
 立即注册
搜索
查看: 40|回复: 1

SQL注入进阶篇一php代码审计

[复制链接]

2570

主题

144

回帖

9914万

积分

论坛元老

Rank: 8Rank: 8

积分
99140901
发表于 2024-7-11 17:55:32 | 显示全部楼层 |阅读模式

前言

实质的网站中和用户的输入输出接口不可能想那样防御办法的。此刻各大网站都在运用waf对网站APP的业务流量进行恶意特征识别及防护,,避免网站服务器被恶意入侵。因此咱们必须绕过waf,这篇文案就用代码审计的方式给大众讲解有些sql的绕过技巧。

关键字过滤

部分waf会对关键字进行过滤,咱们可以用体积双写关键字来绕过。

源代码分析

<?php require db.php; header(Content-type:text/html;charset=utf8); $username=dl($_POST[username]); $password=dl($_POST[password]); $dl="SELECT * FROM xs WHERE username=$username and password=$password"; //登录界面后台处理 $ck=mysqli_query($db,$dl); $row = mysqli_fetch_array($ck); if($_POST[login]){ if($row) { echo"你的暗码".$row[username]; }else{ echo"登录失败"; } } function dl($gl){ $gl=str_replace(array("union","UNION"),"","$gl"); $gl=str_replace(array("select","SELECT"),"","$gl"); $gl=str_replace(array("database","DATABASE"),"","$gl"); $gl=str_replace(array("sleep","SLEEP"),"","$gl"); $gl=str_replace(array("if","IF"),"","$gl"); $gl=str_replace("--","","$gl"); $gl=str_replace("order","","$gl"); return $gl; }

分析一下代码,首要获取了数据,加载dl函数以后带入了数据库中执行,而后if判定是不是有提交,是不是登录成功,登录成功后回显用户的账号,这是一个非常简单的后台登录代码。往下看有一个自定义函数dl,函数内运用了str_replace(),str_replace()的功效是替换字符串,这儿union,select,database ,if这些常用的注入字符体积写都被替换成空。做了一个简单的危险字符过滤自定义函数。

关键字过滤注入办法

体积写和双写关键字来尝试绕过,返回代码里有回显位因此能够union注入,dl函数把union,select这些字符替换成空然则mysql中是不不区分体积写的,因此能够体积写混写来绕过dl函数的过滤。例如Select Union DAtabase()这般的字符是能够执行的。能够用双写的手法,例如seselectlect这般的语句, dl函数会把里面的select替换为空这般两边的字符凑在一块刚好又是一个select这般就起到了绕过的功效

体积写绕过语句为 -1’ unioN Select dataBASE(),2 #

双写关键字绕过语句为 -1’ ununionion selecselectt databasdatabasee(),2 #

回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-21 05:39:11 | 显示全部楼层
你的言辞如同繁星闪烁,点亮了我心中的夜空。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-3 23:29 , Processed in 0.064813 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.