php mysql替换字符串方法
代码如下 | 复制代码 |
field_languages_value like '%Mandarin Chinese%'"); d",$b,$result->nid); |
在数据库中建立一张表:
代码如下 | 复制代码 |
CREATE TABLE `article` ( `articleid` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '', `content` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`articleid`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; |
在表中插入数据的操作我就不贴代码了,可以去下载下来直接导入到数据库。
接下来,写一个处理用户请求的页面,这里,我们故意不过滤用户提交过来的数据,留下个SQL注入漏洞用来测试。
代码如下:
代码如下 | 复制代码 |
<?php $servername = "localhost"; $dbusername = "root"; $dbpassword = ""; $dbname = "test"; $id=$_GET['id'];//id未经过滤 $conn=mysql_connect($servername,$dbusername,$dbpassword) or die ("数据库连接失败"); mysql_select_db($dbname,$conn); mysql_query('set names utf8'); $sql = "SELECT * FROM article WHERE articleid='$id'"; $result = mysql_query($sql,$conn); $row = mysql_fetch_array($result); echo "<p>利用SQL注入漏洞拖库<p>"; if (!$row){ echo "该记录不存在"; exit; } echo "标题<br>".$row['title']."<p>"; echo "内容<br>".$row['content']."<p>"; ?> |
我们直接在浏览器中输入:
代码如下 | 复制代码 |
http://127.0.0.1/marcofly/phpstudy/sqlinsert/showart.php?id=1 |
即可访问article表中id为1的一条记录
访问结果如下:
接下来,我们就利用这个漏洞(不知道该漏洞的情况下,只能通过工具+手工检测),演示一下如何将article表下载下来。
在地址栏中输入:
代码如下 | 复制代码 |
’ into outfile 'e:/sql.txt'%23 |
分析:%23是#的ASCII码,由于在地址栏中直接输入#后到数据库系统中会变成空,需要在地址栏中输入%23,那么才会变成#,进而注释掉后面的sql语句。
运行之后,打开E盘,发现多了一个sql.txt文件,打开之后,里面就是表article中的一条记录。
为什么只有一条记录呢?难道该数据表就只有一条记录?不是这样的,因为我们只检索id为1的一条记录而已,那么能否将article表中的所有记录一次性全部下载下来呢?
答案是可以的,只要你的构造的SQL语句足够灵活(再次提出了构造SQL语句的灵活性)。
分析一下,当在URL地址栏中输入’into outfile 'e:/sql.txt'%23的时候,合并到sql查询语句中变为:
代码如下 | 复制代码 |
|
仔细分析下之后,我们可以这样子构造SQL语句:
代码如下 | 复制代码 |
SELECT * FROM article WHERE articleid='' or 1=1 into outfile 'e:/whf.txt'#' |
这样的话,无论如何WHERE子句总是为真,换句话说,该sql语句等价于如下:
代码如下 | 复制代码 |
SELECT * FROM article into outfile 'e:/whf.txt'#' |
懂了吧,该sql语句在先执行select语句,将表article中的所以内容全部检索出来,然后再执行into outfile 'e:/whf.txt'#'将内容导出来。
不信的话,你执行下……
利用SQL注入漏洞,我们可以猜测表名,列名,用户的密码长度(LEFT函数)等等,当然了,如果能直接向以上的演示那样将表中的数据全部导出的话就没必要去猜表名列名等等
本教程为php入门者提供的一篇关于php连接mysql数据库以及查询与读写mysql数据库的实现,有需要学习的同学可以参考一下下哦。一、连接数据库
数据库变量文件:connectvars.php
代码如下 | 复制代码 |
<?php //服务器 define('DB_HOST', '127.0.0.1'); //用户名 define('DB_USER', 'root'); //密码 define('DB_PASSWORD', 'root'); //数据库 define('DB_NAME','test') ; ?> |
在使用处连接数据库
代码如下 | 复制代码 |
require_once 'connectvars.php'; |
二、对数据库进行增、删、改、查
//查询、修改、删除操作都写成SQL语句
代码如下 | 复制代码 |
$query = "SELECT * FROM toyota ORDER BY ID DESC"; //$data保存信息较为丰富,可用其判断是否操作成功,或利用其取数据,查询记录条数 $data = mysqli_query($dbc,$query); |
三、判断操作是否成功
代码如下 | 复制代码 |
if($data){ |
四、获得查询记录数目
代码如下 | 复制代码 |
$count = mysqli_num_rows($data); |
五、对记录进行循环操作
假设记录中有个字段为'url'
代码如下 | 复制代码 |
while($row = mysqli_fetch_array($data)){ |
必须对服务器启用 SQL Server 混合模式身份验证。
在尝试建立连接时必须设置 UID 和 PWD 连接属性。UID 和 PWD 必须映射到有效的 SQL Server 用户和密码。
注意:
包含右大括号 (}) 的密码必须使用另一个右大括号进行转义。例如,如果 SQL Server 密码为“pass}word”,则 PWD 连接属性的值必须设置为“pass}}word”。
在使用 SQL Server 身份验证连接到 SQL Server 时应采取以下预防措施:
下面看一个简单的实例:
代码如下 | 复制代码 |
<?php $conn = sqlsrv_connect( $serverName, $connectionInfo); $tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())"; $row = sqlsrv_fetch_array($stmt); sqlsrv_free_stmt( $stmt); |
近期项目软件升级到支持事务处理,做个示例供大家学习参考
环境 mysql 5.2 /php 5
支持事务的table 类型 需要InnoDB
代码如下 | 复制代码 |
<?PHP /* 创建事务 */ mysql_query('COMMIT') or exit(mysql_error());//执行事务 mysql_close($LinkID); |
相关文章
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
intellij idea快速查看当前类中的所有方法(推荐)
这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02- 1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
js导出table数据到excel即导出为EXCEL文档的方法
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13- 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
- ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果̳...2017-07-06
- 本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
- 单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
- 要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25