目录

  • 1 实验介绍
    • 1.1 实验目的
    • 1.2 实验环境
  • 2 实验
    • 2.1 实验分析
    • 2.2 实验过程
    • 2.3 实验结果总结—万能用户名及万能密码
  • 3 总结

1 实验介绍

1.1 实验目的

由于网页服务端对代码的过滤不够严谨,可能会存在万能用户名或万能密码绕过的风险。
加深对网页代码和SQL代码的理解。

1.2 实验环境

实验靶机——win2008虚拟机:

  • 本节实验靶场是在win2008系统上基于phpstudy搭建的一个简单网站,win2008及phpstudy的安装过程可以参考《【语言环境】WAMP环境部署及优化—以win2008R2SP1为操作系统》,网站的搭建过程可以参考《【(SQL+HTML+PHP)综合】一个简单论坛网站的综合开发案例(具有用户注册、登录、注销、修改信息、留言等功能)》。

  • 本实验在该论坛的登录页面进行实验。

  • 该网站对登录账号密码的验证代码如下所示。

<?php
include "../inc/dblink.inc.php"//将数据库连接的文件包含到此文件中
?>
<html>
<head><meta charset="utf-8"><title>  登录----今日论坛</title></head>
<body><h1>今日论坛BBS</h1><?phpif(isset($_POST['userSubmit'])){if($_POST['vcode']==$_COOKIE['vcode']){$userName=$_POST['userName'];$userPass=$_POST['userPass'];$sql="select * from users where name='".$userName."' && password='".md5($userPass)."'";if($results=mysqli_query($link,$sql)){if(mysqli_num_rows($results)>0){setcookie('name',$userName,time()+3600*24, "/PHP/jrltbbs");//注意cookie的路径,不同路径的cookie认为是两条cookieecho "登录成功,返回<a href='../index.php'>首页</a>或<a href='./index.php'>个人中心</a>";}else{echo "用户名或密码错误,<a href='./login.php'>请重新登录</a>";}}else{die("sql语句有误");}}else{echo "验证码错误,<a href='./login.php'>请重新登录</a>";}}else{$html=<<<HTML<form method="post">用户名:<input type="text" name="userName"><br/>密码:<input type="password" name="userPass"><br/>验证码:<input type="text" name="vcode"> <iframe src= "./vcode.php" width="100" height=30 frameboder="0"></iframe><br><input type="submit" name="userSubmit"  value="登录"></form>
HTML;echo $html;}?><hr/>
</body>
</html><?php
mysqli_close($link);
?>

根据上述sql语句,可初步分析,关键变量是name,而不是password(无论输入啥,都会进行md5加密,无法进行Sql语句的拼接)

2 实验

2.1 实验分析

(1)上述代码第8行用于在数据库中检验客户端输入账号密码是否存在,而能否登录成功关键在于第10行 if 语句判断条件是否为真,也就是说只要构造的用户名或密码能让SQL语句能成功查询并返回结果,就能实现登录。
(2)由于SQL语句采用的是单引号闭合的方式,因此所构造的语句需要注意屏蔽前后的单引号.

2.2 实验过程

(1)输入网址http://172.16.1.1/PHP/jrltbbs/member/login.php进入网站的登录页面

(2)在登录界面输入用户名aaa' or 1=1#,密码随意,如下,点击登录。

(3)可以看到成功登录。

(4)点击个人中心,可以看到目前登录的账户是数据库中注册的第一个账号。

2.3 实验结果总结—万能用户名及万能密码

采用不同用户名及密码的组合进行实验结果如下。其中表中的万能用户名字母(如aaa和a),要注意用户是数据库中存在的还是不存在的,会导致结果不一样。

用户名 密码 结果 分析
aaa’ or 1=1# 随意 成功 采用单引号屏蔽变量前的单引号,采用#注释掉变量后续语句
aaa’ or ‘1’='1 随意 失败 因为and的优先级比or的优先级高,语句先执行’1’=‘1’ and password = '随意’语句得到false,再执行name = ‘aaa’ or false,结果还是false,所以SQL语句无法查询到内容,登录失败.
a’ or ‘1’='1 随意 成功 与上一组合不同的是,此处a是刚好碰到数据库中有该用户名,所以or语句执行成功,适合用于爆破特定用户名
a’# 随意 成功 此处a是刚好碰到数据库中有该用户名,所以执行成功,适合用于爆破特定用户名
随意 aaa’ or 1=1# 失败 由于密码字段在代码中被MD5编码过,无法实现语句构造的功能
随意 aaa’ or ‘1’=‘1’ 失败 同上

注意:当后台代码对输入参数进行过滤转换时,需要注意思考之前学过的各种绕过技巧。

3 总结

(1)加深理解SQL语句构造与绕过;
(2)掌握万能用户名与密码检测的方法。

【业务安全-04】万能用户名及万能密码实验相关推荐

  1. 万能用户名和万能密码

    万能用户名 any' union select * from user – (后面有个注释符) 联合查询,是查询的结果大于1,为真 万能用户名防御 PDO $username=$REQUEST['us ...

  2. 23-mysql万能用户名和万能密码

    1.万能密码 注入的时候写入   用户名  aa   密码  'bb' or 1=1 2.万能用户名 注入的时候 用户名为(注意:不加sql中的分号): aa   union select * fro ...

  3. php万能注入密码,php下的SQL注入万能用户名和密码

    1.针对有单引号的情况 : 万能密码 : select * from users where username='xxxx' and password='xxxxxx' or 1='1'; 万能用户名 ...

  4. WIFI密码破解 WIFI万能钥匙 显示连接密码去除广告优化版

    WIFI密码破解 WIFI万能钥匙 显示连接密码去除广告优化版 ◎基于国内最新版(理论支持安卓P) ◎更换包名,不更新,不翻车,稳定好用 ◎全新显密,获取到的密码将在热点下方着色显示 ◎智能显密,没有 ...

  5. ubuntu-18.04 修改用户名密码

    1. 开放root登录 设置root密码 $ sudo passwd root 切换到root 用户 $ sudo -i 修改/etc/pam.d/gdm-autologin $ vim /etc/p ...

  6. Ubuntu18.04设置1位数简单密码(三十二)

    Ubuntu18.04设置1位数简单密码 大家用Ubuntu设置密码是会遇到一个痛点,假如设置简单的密码时,会提示让设置更复杂的密码,下面通过一种方法可以设置简单密码. # sudo passwd 用 ...

  7. dropbear 用户名_openwrt默认密码

    Openwrt没有现成的密码!你必须要在你通过telnet第一次登陆的时候设置一个.任何全新的被安装上的Openwrt镜像,都会开启这些默认设置: dnsmasq (DHCP daemon) (一个负 ...

  8. 进入计算机用户名和密码,巧用U盘进入设密码系统免于输入用户名和登录密码...

    巧用U盘进入设密码系统免于输入用户名和登录密码 发布时间:2014-04-30 17:27:58   作者:佚名   我要评论 在登录时免于输入用户名和登录密码,而一旦移走了这些设备,系统便可以设置为 ...

  9. JWT 添加用户名或邮箱 密码校验

    JWT 用户名或邮箱 密码校验 参考 https://learnku.com/articles/6216/laravel-uses-jwt-to-implement-api-auth-to-build ...

  10. 修改用户名_新华美育查找用户名及修改密码的方法分享

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以免费收到最新内容了.每天都有分享,完全是免费订阅,请放心关注. 声明:本文转载自网络,如有侵权,请在后台留言联系我 ...

最新文章

  1. python 备份交换机_干货 | 如何用python实现每天定时备份交换机配置文件? 真香~...
  2. 疯狂了!当游戏爱上MongoDB会怎么样???
  3. 企业应用“数据优先”革命的下一个主战场:安全与运营
  4. c语言选择结构程序设计报告,C语言学习与总结---第四章:选择结构程序设计
  5. django 视图-----视图函数
  6. php 为什么ctrl加 没用,电脑ctrl+c不能用怎么办
  7. 预见2021:《2021年中国呼叫中心产业全景图谱》 未来十年八大预测
  8. js中函数参数arguments、callee、caller,值传递、重载
  9. 解析大型.NET ERP系统 分布式应用模式设计与实现
  10. mysql bit_or() bit_count()函数
  11. 红米2 miui android5.1,Redmi 2 MIUI7 Android 5.1闪回到Android 4.4和第三方Rec更新5
  12. 全国地址邮编.sql
  13. 计算机科学与技术专业叙述,计算机科学与技术专业描述怎么写
  14. 京东Cookie抓取
  15. 十分钟学懂Python入门基础3(中)
  16. 关键词热度分析工具_不懂亚马逊关键词分析怎么办?10款超好用的亚马逊运营必备关键词研究分析工具,建议收藏!...
  17. 【存储数据恢复】esx vmfs的互斥导致存储数据丢失的数据恢复案例
  18. 企业级大数据、数分资料免费下载(附百度云破解神器)
  19. JAVA计算机毕业设计大学校园兼职网站Mybatis+系统+数据库+调试部署
  20. web服务器性能排名,主流Web服务器性能测试

热门文章

  1. 杰里之一拖八烧写器版本更新:1TO8_V3.0.25【篇】
  2. NISP和CISP考试通过率怎样?
  3. 计算机 数据挖掘 知识,计算机软考考试必备知识点:数据挖掘
  4. Cannot create file C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr
  5. origin拟合曲线
  6. 工地人员定位管理系统,如何有效做到安全生产双预防?
  7. Hyperscan 5.4.0 安装教程 (CentOS7环境)
  8. 第五次上课 PPT作业——随机数组,并求和
  9. 手写bpnn算法实现iris多分类
  10. 【图像去噪】基于自适应布谷鸟算法优化维纳滤波器实现多光谱图像去噪附matlab代码