当前位置: 首页 > news >正文

万能密码登录-Post型注入攻击

1.创建数据库

1.1创建SQL脚本

DROP DATABASE IF EXISTS lab;
CREATE DATABASE lab;
USE lab;

create table users
(
id int not null auto_increment,
username char(32) not null,
passcode char(32) not null,
primary key(id)
);

insert into users(username,passcode) values('admin','admin123');
insert into users(username,passcode) values('alice','alice456');
 

1.2将脚本文件导入到数据库

登录之后导入

2.建立基于session验证的用户登录网站

2.1创建用户登录页面login.html

将from表单的文本框和密码框的参数交给check_login.php处理

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
<style>#a{ width: 300px; text-align: right;}.b{width: 150px;height:20px;}
</style>
</head>
<body><div id=a><form name="form_login" method="post" action="check_login.php">Username: <input type="text" class=b name="username" /> <br>Psssword: <input type="password"  class=b name="passwd" /> <br><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Reset" value="Reset" /></form></div>
</body>
</html>

2.2设置编码方式为utf8并保存

2.3登录验证后端页面

<?php//包含数据库连接
include('con_database.php');//获取输入的信息
$username = isset($_POST['username']) ? mysqli_escape_string($con,$_POST['username']) : '';
$passwd = isset($_POST['passwd']) ? mysqli_escape_string($con, $_POST['passwd']) : '';if($username == '' || $passwd == '' ) 
{ echo "<script>alert('请输入用户名和密码!'); history.go(-1);</script>"; exit;
}//执行数据库查询
$sql="select * from users where username = '$username' and passcode = '$passwd' ";$query = mysqli_query($con,$sql)
or die('SQL语句执行失败'.mysqli_error($con));
//如果查询结果存在,说明用户名和密码正确
if($row = mysqli_fetch_array($query))
{session_start();$_SESSION['username'] = $row[1];echo "<a href='welcome.php'>欢迎访问</a>";
}else{echo "<script>alert('登录失败!'); history.go(-1);</script>"; 
}
mysqli_close($con);
?>

数据库连接功能的文件con_database.php

<?php
$con=mysqli_connect('127.0.0.1','root','123456')
or die('数据库连接失败');
mysqli_select_db($con,'lab')
or die('选择数据库失败');
?>

2.4欢迎页面

<?php
session_start();
if(isset($_SESSION['username']))
{echo '欢迎用户'.$_SESSION['username'].'登录';echo "<br>";echo "<a href='logout.php'>退出登录</a>";
}
else
{echo '您没有权限访问此页面';
}
?>

2.5销毁页面

<?php
session_start();
session_unset();
session_destroy();
echo "注销成功";
?>

2.6功能测试

(我第一次测试失败是因为输入网页的时候输入错了一个字母)

username

admin

password

admin123

3.万能密码SQL注入攻击测试

安装notepad用于编辑文档

需要对login页面进行修改(前面给的是已经优化的防护代码)

<?php//包含数据库连接
include('con_database.php');//获取输入的信息
$username = isset($_POST['username']) ? $_POST['username'] : '';
$passwd = isset($_POST['passwd']) ? $_POST['passwd'] : '';if($username == '' || $passwd == '' ) 
{ echo "<script>alert('请输入用户名和密码!'); history.go(-1);</script>"; exit;
}//执行数据库查询
$sql="select * from users where username = '$username' and passcode = '$passwd' ";$query = mysqli_query($con,$sql)
or die('SQL语句执行失败'.mysqli_error($con));
//如果查询结果存在,说明用户名和密码正确
if($row = mysqli_fetch_array($query))
{session_start();$_SESSION['username'] = $row[1];echo "<a href='welcome.php'>欢迎访问</a>";
}else{echo "<script>alert('登录失败!'); history.go(-1);</script>"; 
}
mysqli_close($con);
?>

3.1用户名注入

在usename输入'or 1=1 or'

password随便输入个123

点击submit

相关文章:

  • Kafka Broker 总体工作流程
  • 基于Qt的app开发第十一天
  • 02.Embedding:数字变矩阵
  • 【C语言】共享内存
  • fastadmin后台管理员角色组控制是否显示导出数据按钮
  • 【windows】终端/命令行显示中文乱码
  • 自用git记录
  • java数组,ArrayList,LinkedList
  • 机器学习——支持向量机SVM
  • Android学习之登录界面(包含忘记密码 记住密码)(java + 详细注释 + 源码)
  • 基于大模型的大肠癌全流程预测与诊疗方案研究报告
  • Github 2025-05-25 php开源项目日报 Top10
  • 最好用的wordpress外贸主题
  • 反序列化之Wakeup方法绕过
  • Flink流水线集成Gravitino
  • Java反射详解
  • JVM 的内存模型
  • MySQL#秘籍#一条SQL语句执行时间以及资源分析
  • 超简单Translation翻译模型部署
  • 信奥赛CSP小学五年级动态规划入门
  • app开发流程 网站开发/中国十大新闻网站排名
  • 建筑公司网站应该则么做/个人如何做网络推广
  • 网站开发和c语言/上海seo排名
  • 衢州市建设工程管理处网站/百度热度指数排行
  • 爱唐山做贡献月评十佳投票网站/百度seo和谷歌seo有什么区别
  • 做网站开始要注意什么/网站关键字优化技巧