分享一篇使用SQL注入漏洞拖库的实例讲解
技术百科
零下一度
发布时间:2017-05-17
浏览: 次 利用sql注入漏洞登录后台和利用sql注入漏洞拖库是我学习了相关内容之后的一点小结,没啥深度。
同上一篇文章一样,我们需要创建数据表,并在表中出入几条数据以备测试之用。
在数据库中建立一张表:
代码如下:
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注入漏洞用来测试。
代码如下:
代码如下:
利用SQL注入漏洞拖库"; if (!$row){ echo "该记录不存在"; exit; } echo "标题
".$row['title'].""; echo "内容
".$row['content'].""; ?>
我们直接在浏览器中输入:
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查询语句中变为:
SELECT * FROM article WHERE articleid='5' into outfile 'e:/whf.txt'#'
仔细分析下之后,我们可以这样子构造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函数)等等,当然了,如果能直接向以上的演示那样将表中的数据全部导出的话就没必要去猜表名列名等等。
有点累了,就写到这里了。
利用SQL注入漏洞登录后台和利用SQL注入漏洞拖库是我学习了相关内容之后的一点小结,没啥深度,正如文章开头所说,权当总结,别无它意。
【相关推荐】
1. 特别推荐:“php程序员工具箱”V0.1版本下载
2. 如何防止sql注入?介绍5种防止sql注入的方法
3. 分享五个著名的SQL注入漏洞扫描工具
4. 分享一个SQL注入的实例过程
# 相关内容
# 并在
# 我们可以
# 才会
# 没啥
# 要去
# 提出了
# 就不
# 子句
# 栏中输入
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Mac怎么安装软件_Mac安装dmg与pkg文件的
- c++中的Tag Dispatching是什么_c
- Windows电脑如何截屏?(四种快捷方法)
- 如何优化Golang程序CPU性能_Golang
- windows如何禁用驱动程序强制签名_windo
- 如何使用Golang实现错误包装与传递_Golan
- php嵌入式多设备通信怎么实现_php同时管理多个
- Win11文件扩展名怎么显示 Win11查看文件后
- Python项目回滚策略_发布安全说明【指导】
- c++如何使用std::bitset进行位图算法_
- c++如何使用std::bind绑定函数参数_c+
- php转exe用什么工具打包快_高效打包软件推荐【
- Go 语言标准库为何不提供泛型切片的 Contai
- Windows 10怎么隐藏特定更新补丁_Wind
- Win11怎么更改系统语言_Win11中文语言包下
- Win11怎么查看显卡显存_查询Win11显卡详细
- Python类装饰器使用_元编程解析【教程】
- 如何用::实现工具类方法调用_php静态工具类设计
- c++20的std::format怎么用 比pri
- Win11怎么关闭自动维护 Win11禁用系统自动
- MAC如何修改默认应用程序_MAC文件后缀关联设置
- Python脚本参数接收_sys与argparse
- php做exe支持多线程吗_并发处理实现方式【详解
- Win10如何卸载微软拼音输入法 Win10只保留
- Win11怎么设置桌面图标间距_Windows11
- Windows怎样关闭锁屏广告_Windows关闭
- Win11怎么设置触控板手势_Windows11三
- Windows如何拦截腾讯视频广告_Windows
- 如何在Golang中指定模块版本_使用go.mod
- c++怎么调用nana库开发GUI_c++ 现代风
- php控制舵机角度怎么调_php发送pwm信号控制
- php中self::能调用子类重写的方法吗_静态绑
- Python字符串处理进阶_切片方法解析【指导】
- 如何在同包不同文件中正确引用 Go 结构体
- Win11怎么关闭搜索历史_Win11清除设备上的
- Golang如何避免指针逃逸_Golang逃逸分析
- Mac如何修改Hosts文件?(本地开发与屏蔽网站
- Windows10怎样连接蓝牙设备_Windows
- Win11任务栏颜色怎么改_Win11自定义任务栏
- Win11关机快捷键是什么_Win11快速关机方法
- 如何在 Python 测试中动态配置 @backo
- Win11时间格式怎么改成12小时制 Win11时
- 如何使用Golang实现微服务事件驱动_使用消息总
- Win11如何设置计划任务 Win11定时执行程序
- Windows 10怎么录屏_Windows 10
- Python抽象类与接口设计_规范说明【指导】
- Win11怎么设置指纹解锁 Win11笔记本录入指
- Windows的便笺功能如何使用?(桌面备忘技巧)
- 如何使用Golang反射创建map对象_动态生成键
- Win11怎么关闭任务栏小图标_Windows11

QQ客服