- 浏览: 841125 次
- 性别:
- 来自: 南京
-
文章分类
最新评论
-
xieye:
jetty插件有好几个版本,1.6,1.7,1.8
我选的是用 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
还有,
注:第2部分时,需要先安装jetty,我自己在安装过程 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
说明一下:实际使用中,导入时我并没有错误。2、我把eclips ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
其实还是有一些先决条件的。1是外部环境,2是进步是阶段性的(意 ...
(转载文章)如何愉悦起来:一位精神治疗师的见解 -
mandy_yanzi:
我都已经饿7天了坚持为了我的衣衣
身体健康的问题
php基础知识-sql注入
示例代码下载页http://xieye.iteye.com/blog/1336095(在附件)
sql注入是指:黑客利用编写不严谨的php程序中的漏洞,进行数据窃取或数据破坏的行为。
如果没有test库,首先建立test数据库。
然后,建一个用户表
use test;
-- 创建用户表
CREATE TABLE member (
id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
username varchar(255) NOT NULL DEFAULT '' COMMENT '用户名',
password varchar(255) NOT NULL DEFAULT '' COMMENT '密码',
primary KEY (id )
)default charset=utf8 COMMENT='会员表';
-- 往会员表插入两条数据。
insert into member(username,password)values('name1', 'name1');
insert into member(username,password)values('name2', 'name2');
-- 检查表
show tables;
可以写个简单的程序来测试数据库的正确性。
代码说明:
文件夹是sql_injection
3.php是列出所有用户,同时也是一个公共文件,被别的文件调用。
4.php是测试sql注入,程序编写错误的例子
5.php是测试sql注入,程序防止注入、编写正确的例子。
演示:
首先列出所有用户的程序:
http://localhost/command/peixun/sql_injection/3.php
一个错误的导致sql注入的程序(首先确保magic_quotes_gpc = 0)
http://localhost/command/peixun/sql_injection/4.php
首先在用户名输入admin,密码输入1,发现是正确的。
再次注册,在用户名输入
5', 'f'); delete from member; -- \
密码输入1
点击注册。
发现提示一堆致命错误,这时开新窗口,重新输入
http://localhost/command/peixun/sql_injection/3.php
发现刚才注册的用户数据没有了,说明被注入了delete语句。
光防止delete是不够的,重要的是确保每个字符串里面都被转义过,很多php框架都实现了此功能,当然必须要调用才可以。
一个正确的的防止sql注入的程序
http://localhost/command/peixun/sql_injection/5.php
看代码可知,代码使用了zend的防止注入的功能,不会遭受注入了,在zend框架中,更多防注入使用的是?参数,请自行阅读zend文档。
另外,其实把php.ini中的magic_quotes_gpc打开也可以防注入,但是付作用太多,所以一般不用。
代码可下载。
3.php
4.php
5.php
示例代码下载页http://xieye.iteye.com/blog/1336095(在附件)
sql注入是指:黑客利用编写不严谨的php程序中的漏洞,进行数据窃取或数据破坏的行为。
如果没有test库,首先建立test数据库。
然后,建一个用户表
use test;
-- 创建用户表
CREATE TABLE member (
id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
username varchar(255) NOT NULL DEFAULT '' COMMENT '用户名',
password varchar(255) NOT NULL DEFAULT '' COMMENT '密码',
primary KEY (id )
)default charset=utf8 COMMENT='会员表';
-- 往会员表插入两条数据。
insert into member(username,password)values('name1', 'name1');
insert into member(username,password)values('name2', 'name2');
-- 检查表
show tables;
可以写个简单的程序来测试数据库的正确性。
代码说明:
文件夹是sql_injection
3.php是列出所有用户,同时也是一个公共文件,被别的文件调用。
4.php是测试sql注入,程序编写错误的例子
5.php是测试sql注入,程序防止注入、编写正确的例子。
演示:
首先列出所有用户的程序:
http://localhost/command/peixun/sql_injection/3.php
一个错误的导致sql注入的程序(首先确保magic_quotes_gpc = 0)
http://localhost/command/peixun/sql_injection/4.php
首先在用户名输入admin,密码输入1,发现是正确的。
再次注册,在用户名输入
5', 'f'); delete from member; -- \
密码输入1
点击注册。
发现提示一堆致命错误,这时开新窗口,重新输入
http://localhost/command/peixun/sql_injection/3.php
发现刚才注册的用户数据没有了,说明被注入了delete语句。
光防止delete是不够的,重要的是确保每个字符串里面都被转义过,很多php框架都实现了此功能,当然必须要调用才可以。
一个正确的的防止sql注入的程序
http://localhost/command/peixun/sql_injection/5.php
看代码可知,代码使用了zend的防止注入的功能,不会遭受注入了,在zend框架中,更多防注入使用的是?参数,请自行阅读zend文档。
另外,其实把php.ini中的magic_quotes_gpc打开也可以防注入,但是付作用太多,所以一般不用。
代码可下载。
3.php
<?php //测试sql注入的公共文件 require_once('../Public/CommandLine.php'); $db = Sys::getdb(); $sql ="select * from test.member"; $result = $db->fetchAll($sql); $html =" <h2>当前所有用户的列表</h2> <ul>"; foreach ($result as $value) { $html .= "<li>{$value['username']}</li>"; } $html .= '</ul>'; $html .= "<br /><a href=\"4.php\">注册用户</a>"; echo $html;
4.php
<?php //测试sql注入:错误的例子 require_once('../Public/CommandLine.php'); $isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0; if ($isget) { $html = <<<longs <html> <body> <h3>注册用户页面</h3> <form method="post"> 请输入用户名:<input type="text" name="username" value=''> 请输入密码: <input type="text" name="password" value=''> <input type="submit" value="注册"> </form> </body> </html> longs; echo $html; } else { //危险的例子,会导致sql注入 $db = Sys::getdb(); $sql = "insert into member(username, password)values('" . $_POST['username'] . "', '" . md5($_POST['password']) . "')"; echo $sql; $db->query($sql); } //无论如何,最后显示所有的用户 include('3.php');
5.php
<?php //测试sql注入,正确的例子 require_once('../Public/CommandLine.php'); $isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0; if ($isget) { $html = <<<longs <html> <body> <h3>注册用户页面(修改版)</h3> <form method="post"> 请输入用户名:<input type="text" name="username" value=''> 请输入密码: <input type="text" name="password" value=''> <input type="submit" value="注册"> </form> </body> </html> longs; echo $html; } else { //正确的例子, 不会导致sql注入 $db = Sys::getdb(); $sql = "insert into test.member(username, password)values('" . $_POST['username'] . "', '" . md5($_POST['password']) . "')"; $db->insert("test.member", array( 'username'=> $_POST['username'] , 'password' => $_POST['password'], )); // echo $_POST['name1']; } //无论如何,最后显示所有的用户 include('3.php');
发表评论
-
召唤神龙 - 安装 centos 8, php 8, mysql 8, laravel 8 的整套 php 运行环境
2020-11-27 16:26 738本文编写时间:2020-11-27 传说集齐龙珠可以召唤神 ... -
centos8 使用阿里镜像快速安装php7.4套件
2020-11-15 00:48 899centos8 使用阿里镜像快速安装php7.4套件 本文只 ... -
centos7 使用阿里镜像快速安装php7.4套件
2020-11-15 00:32 1289本文只考虑centos7 今日 2020-11-16 rem ... -
composer常用命令
2020-11-05 14:46 1511列出当前全局配置 composer config -l -g ... -
期待centos8+php8 + mysql8 + laravel8,8888
2020-10-29 19:24 551期待centos8+php8 + mysql8 目前主要使用 ... -
ubuntu 安装 php7.4以及各类插件
2020-10-24 13:20 1162ubuntu 安装 php7.4以及各类插件 安装系统 最近 ... -
宝塔定义站点
2020-02-24 10:41 2宝塔定义站点。 1111111111111111111111 ... -
让php-fpm以root账号运行
2020-02-19 21:41 838一般来说,我们没有这种需求,但是当需要时, 可以让php-fp ... -
将代码部署到coding.net
2020-01-10 14:20 669coding.net 是一个git仓库,有免费有收费。 首先 ... -
php部署工具deployer技巧 - vendor目录创建
2020-01-06 12:06 935deployer是个好东西,可是每次都composer ,其实 ... -
自定义redis多个实例
2020-01-04 01:17 662假如多个项目部署到同一台服务器,有时会被redis的各项目前缀 ... -
推荐使用php的部署工具 deployer
2020-01-03 16:48 951php部署代码可以使用 https://deployer.or ... -
使用composer 类库 cachetool 清除opcache 的缓存
2020-01-03 16:38 980php的生产服务器上,需要把opche打开。 但有时,会被缓 ... -
laravel容器学习体会
2019-12-31 15:11 692根据文档与实测结果 假设我在app下建一个Services目 ... -
phalcon 自定义超强日志类
2019-12-18 10:00 844phalcon自带的日志文件类,有两个麻烦之处。 1、路径不能 ... -
自定义后台的使用
2019-12-18 05:22 431如果自己写后台,保存用户的表单请求值 所有的情况如下: 1 ... -
phalcon 自定义事件使用的多种方式
2019-12-16 20:43 785方法1:官方文档的方式。 这是控制器: public ... -
phalcon对控制器返回值的使用以输出json
2019-12-16 19:17 854在phalcon里,控制器的Action的方法的返回值没啥用。 ... -
phalcon数据库DB使用实例
2019-12-12 17:12 715整理了一下phalcon的db使用,写了个demo。 ... -
php-redis5.0降级成php-redis4.3
2019-08-22 00:01 901最新版本的php的redis插件,版本是5.0 但是可能会有 ...
相关推荐
下面将详细讨论PHP登录页面实现及其与SQL注入的相关知识点。 1. PHP登录页面基础: - `conn.php`:这个文件通常包含数据库连接代码,使用PHP的`mysqli_connect()`或`PDO`函数建立到MySQL数据库的连接。 - `login....
这部分从Background-1基础知识开始,涵盖了SQL注入的基础概念,如SQL语法、查询结构和如何识别易受攻击的点。Less-1至Less-4逐步引导用户了解如何通过构造恶意输入来执行未授权的数据库查询,揭示了SQL注入的基本...
SQL 注入基础知识点总结 SQL 注入是指 web 应用程序对用户...通过学习 SQL 注入基础知识、工具和环境搭建、MySQL 数据库基础知识、SQL 注入防御、SQL 注入类型和基本步骤,我们可以更好地理解和防御 SQL 注入攻击。
在DVWA(Damn Vulnerable Web Application)的SQL注入(low)级别中,可以学习到多个关于SQL注入的知识点。例如,了解了SQL语句中的"ORDER BY"子句,它用于对查询结果进行排序。"ORDER BY 1"意味着按照第一个字段...
### SQL注入经典教程知识点解析 #### 一、SQL注入概览与原理 SQL注入是一种常见的攻击方式,利用软件中未经过滤的用户输入,将恶意的SQL代码插入到查询语句中,以此来操纵数据库执行非预期的操作。这种攻击之所以...
通过对本书的学习,读者不仅能掌握SQL注入的基础知识,还能学会如何防范此类攻击。希望每位读者都能成为网络安全领域的专家。 --- 以上内容基于“SQL注入自学指南”教材的核心知识点进行了详细阐述,希望能帮助...
以下是对"SQL注入漏洞演示源代码-曾是土木人"的相关知识点的详细说明: 1. SQL注入原理: SQL注入的基础在于应用程序未能充分过滤或验证用户提供的输入数据。当用户输入的数据被直接拼接到SQL查询语句中时,恶意...
6. **sql教学文档**:这些文档将提供关于SQL语言的基础知识,以及关于SQL注入的理论和实战技巧。它们会讲解如何编写安全的SQL查询,避免SQL注入,并教你如何防御这种攻击。 学习这个教学包,你将能深入了解SQL注入...
1. **SQL注入原理**:SQL注入的基础在于利用程序对用户输入数据的信任,当输入的数据未经充分验证就被拼接到SQL查询语句中,攻击者可以构造特定的SQL片段来绕过认证、获取未经授权的数据,甚至对数据库进行破坏。...
尽管前两部分涵盖了SQL注入的基础知识和实践操作,但对于更高级的主题,如挂马、提权和留下后门等,这些内容可能会涉及更复杂的技术细节和道德问题。对于这些高级话题,一般情况下不会在公开场合进行演示,而是仅仅...
在IT安全领域,SQL注入是一种常见的攻击手段,它利用了应用程序对用户输入处理不当的漏洞。这篇文章的主题是“学习之sql注入漏洞网址的创建”,它旨在帮助初学者或研究人员建立一个自定义的环境来模拟SQL注入攻击,...
这本珍藏版教程可能会是一个全面的资源,不仅适合初学者学习SQL注入的基础知识,也对有经验的开发者和安全专业人员提供有价值的见解和策略。通过深入理解和应用这些知识点,可以显著提高Web应用程序的安全性,避免...
描述中提到的“入门的各种SQL注入技巧”表明内容会从基础知识开始讲解,而“了解sql注入不可多得的好资料”说明了本书内容的实用性和学习价值。 标签“SQL注入天书”强调了书籍的主题和范畴,即专门针对SQL注入技术...
### 知识点一:网站初级SQL手工注入基础概念 SQL手工注入是一种常见的Web安全漏洞利用方式,通过向应用程序提交...希望本知识点能帮助初学者建立起关于SQL手工注入的基础知识体系,并在此基础上不断深入学习和发展。
数据库SQL注入攻击是一种常见的网络安全威胁,它主要针对使用SQL(结构化查询语言)的数据库系统。这类攻击通过在用户输入的数据中嵌入恶意SQL代码,从而欺骗数据库服务器执行非授权的操作,获取敏感信息,甚至完全...
#### 二、基础知识回顾 ##### 2.1 数据库系统概述 数据库系统主要包括数据库(Database)和数据库管理系统(Database Management System, DBMS)。数据库是用于存储数据的集合体,而DBMS则是一套用于创建和维护...
1. **SQL注入基础**:SQL注入是通过操纵应用程序的SQL查询语句来执行非预期的操作。例如,一个不安全的用户输入处理可能导致攻击者在查询中添加"DROP TABLE Users"这样的恶意指令,导致数据丢失。 2. **Havij的功能...
下面将详细讨论SQL注入的基础知识、攻击流程、类型以及危害,并提供实战案例。 1. **SQL注入基础** - SQL是结构化查询语言,用于管理和操作关系数据库,如MySQL、Oracle和SQL Server等。 - SQL注入是指攻击者在...
宽字节SQL注入基础知识点总结 宽字节SQL注入是一种特殊类型的SQL注入攻击,主要针对使用宽字节字符集(如GBK、UTF-16等)的数据库管理系统。宽字节SQL注入攻击的关键在于exploit宽字节字符集的特性来 bypass 数据库...
### SQL 注入从入门到精通 #### 一、SQL 注入基本概念与数据库认知 - **SQL 注入定义**: - SQL Injection(SQL 注入)是指通过将 SQL 命令插入到 Web 表单提交的数据或输入的查询字符串中,最终欺骗服务器执行...