前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP渗透基础入门其一

PHP渗透基础入门其一

作者头像
月萌
发布2020-06-11 22:12:10
5010
发布2020-06-11 22:12:10
举报
文章被收录于专栏:月萌月萌

利用一些方法使某些不应该返回的数据返回或者执行某种不该执行的命令,这个过程就叫注入,这里有个很简单的事例

提示:了解Mysql和php可能更容易理解 那我们来举个例子: 这个语句拼接方式如下

代码语言:javascript
复制
 $sql='select * from users where userName='$userName' and password='$password'; 

假如我们想登录username为1的用户 我们应该怎么构建的sql语句??? 如下例子

代码语言:javascript
复制
 select * from users where userName=1 and password=正确密码 

   select * from users where userName=1

俩种代码等效

当然我们不知道正确密码我们可以试试第二种怎么实现。 那么我们又不是去提交sql给后端 那么参数会被处理 我们看看后端代码

代码语言:javascript
复制
    <?php include_once("function/database.php"); 
   // $userName = $_POST['userName']; 
 // $password = $_POST['password'];       $userName = addslashes($_POST['userName']); 
  $password = addslashes($_POST['password']); getConnect(); 
 $loginSQL = "select * from users where userName='$userName' and password='$password'"; ..... 

(省略 )我们提交的账户就是变量 userName 密码就是变量 password 但是这里使用addslashes函数(函数过滤了 单引号(’)双引号(")反斜杠()) 呵???那么我们可以名正言顺的屏蔽 and password=xxx 注释我们可以使用/**/ 这样可以绕过过滤 username填写 1/* password */ 然后就成功啦

加强方案

1.替换参数各种敏感字符(# ’ or and 等) 仅仅用addslashes函数是不安全的 保证参数的安全

2.使用pdo分两次发生sql语句 99.9%的安全 其中不安全原因来自于配置问题进行编码边缘操作 提示

现在程序的php sql注入几率很小,加上如果使用pdo 就基本不可能了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 加强方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档