php sql注入审计,php审计基础一:sql注入
【1】普通sql注入:
$sql = "INSERT INTO books(bookname, publisher, author, price, ptime,pic,detail) VALUES('{$_POST["bookname"]}', '{$_POST["publisher"]}', '{$_POST["author"]}', '{$_POST["price"]}', '".time()."', '{$up[1]}', '{$_POST["detail"]}')";
$result = mysql_query($sql);
if($result && mysql_affected_rows() > 0 ) {
echo "插入一条数据成功!";
}else {
echo "数据录入失败!";
}
直接将传入的参数不加过滤进入到数据库中
【2】宽字符注入:
条件
当mysql建表时,将表的字符集设置成gbk时(defaultcharset=gbk)
且当在php连接数据库时将数据库的字符集设置成(mysql_query("setcharacter_set_client=gbk");
(1)可利用%df%27绕过addslashes()这个函数
(2)可绕过pdo的quote()这个函数
(3)pdo的也被绕过:
第一种写法:
header("Content-type:text/html;charset=utf-8");
try {
$pdo = new PDO("mysql:host=localhost;dbname=test","root","niexinming132");
} catch (Exception $ex) {
echo "连接失败";
}
echo "连接成功";
$pdo->query("set character_set_client=gbk");
$id=$_GET["id"];
$query="select * from myuser where id=?";
echo $query;
echo "
";
$stmt=$pdo->prepare($query);
$pdostat=$stmt->execute(array($id));
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row)
{
foreach ($row as $data)
{
echo $data." ";
}
echo "
";
}
第二种写法:
header("Content-type:text/html;charset=utf-8");
try {
$pdo = new PDO("mysql:host=localhost;dbname=test","root","niexinming132");
} catch (Exception $ex) {
echo "连接失败";
}
echo "连接成功";
$pdo->query("set character_set_client=gbk");
$id=$_GET["id"];
$query="select * from myuser where id=:id";
echo $query;
echo "
";
$stmt=$pdo->prepare($query);
$pdostat=$stmt->execute(array("id"=>$id));
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row)
{
foreach ($row as $data)
{
echo $data." ";
}
echo "
";
echo "执行完毕";
var_dump($pdo->errorInfo());
}
利用:
显示:
连接成功select* from myuser where id=:id
1 5.5.50-0ubuntu0.14.04.1-logroot@localhost 4执行完毕
php sql注入审计,php审计基础一:sql注入相关推荐
- SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师
目录 第一部分:基础--增删查改 [第一章]做好准备 Getting Started (时长25分钟) [第二章]在单一表格中检索数据 Retrieving Data From a Single Ta ...
- SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(3)
[第八章]视图 创建视图 就是创建虚拟表,自动化一些重复性的查询模块,简化各种复杂操作(包括复杂的子查询和连接等) 注意视图虽然可以像一张表一样进行各种操作,但并没有真正储存数据,数据仍然储存在原始表 ...
- SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(5)
[十二章]数据类型 介绍 MySQL的数据分为以下几个大类: String Types 字符串类型 Numeric Types 数字类型 Date and Time Types 日期和时间类型 Blo ...
- SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(4)
[第十章]触发器和事件 触发器 触发器是在插入.更新或删除语句前后自动执行的一段SQL代码(A block of SQL code that automatically gets executed b ...
- SQL Server调优系列基础篇(子查询运算总结)
前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...
- SQL Server调优系列基础篇(联合运算符总结)
前言 上两篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符的优化技巧,本篇我们总结联合运算符的使用方式和优化技巧. 废话少说,直接进入本篇的主题. 技术准备 基于SQL Server200 ...
- sql怎么撤回update_零基础快速自学SQL,2天足矣!
此文是<10周入门数据分析>系列的第6篇. 想了解学习路线,可以先行阅读" 学习计划 | 10周入门数据分析 " 上一篇分享了数据库的基础知识,以及如何安装数据库,今天 ...
- concat mysql sql注入_sql注入-mysql注入基础及常用注入语句
最近在教学中,关于SQL注入,总发现学生理解起来有些难度,其实主要的原因是对各类数据库以及SQL语句不熟悉,今天先介绍mysql注入需要掌握的基础, Mysql内置information_schema ...
- DRDS SQL 审计与分析——全面洞察 SQL 之利器
背景 数据库存储着系统的核心数据,其安全方面的问题在传统环境中已经成为泄漏和被篡改的重要根源.而在云端,数据库所面临的威胁被进一步的放大.因此,对云数据库的操作行为尤其是全量 SQL 执行记录的审计日 ...
- SQL Server上的审计表和数据版本控制
目录 介绍 背景--审计表 背景--数据版本控制 让我们一石二鸟,并使用审计表也用于版本化数据 使事情变得清晰的视图示例 审计表 审计触发器 上下文信息 从C# EF6传递上下文 最终评论和一些高级技 ...
最新文章
- 2018-3-31 ELM极限学习机--笔记(黄广斌PPT,以及极限学习机原理介绍的部分,但是忘记网址了)
- SQLServer中利用NTILE函数对数据进行分组的一点使用
- 力扣(LeetCode)打卡刷题交流计划(长期维护)
- 使用泛型创建只读集合
- hive 百分比_HIVE短期内再次突破前高
- java与java ee_CapeDwarf – Java EE上的Google App Engine
- python多线程写同一文件_Python多线程写文件实例
- 老白聊数据-关于销售预测的那些事
- Facade(装饰模式)
- 客快物流大数据项目(二):物流项目详细介绍
- 提取unity3d游戏资源文件
- Linux学习_系统文件IO
- 4.3.2 Calculating and Applying VaR
- 三星14纳米EUV DDR5 DRAM量产;Amazfit推出三款智能手表;Whale帷幄获5000万美元融资 | 全球TMT...
- Gmail账号申诉成功
- 中公教育python教师_为什么中公教育、华图的老师不自己去考公务员?
- vue关闭eslint代码检测
- 常见的关系型数据库与非关系型数据库对比详解。
- 本地jar运行在docker中的方法
- dede网站SEO教程:织梦seo优化入门手册
热门文章
- 罗永浩将举办「老人与海」发布会;微软疑似遭遇大范围全球宕机;Python 3.9 首个测试版发布 | 极客头条...
- 漫画:什么是希尔排序?
- @程序员,如何轻松实现数据可视化?
- 如何掌握所有的编程语言?
- 弃 Windows 转投 Linux,微软全面进军 IoT!
- javaweb实训第三天上午——Servlet
- 禁用oracle的默认账户,Oracle EBS默认的账户
- Java实例方法和类方法的区别
- JAVA day15 Collection(集合)、Iterator迭代器、泛型<E>
- mysql resultmap_MyBatis ResultMap