简单的SQL注入学习

引贴:

http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/

首先需要编写一个php页面,讲php页面放入/opt/lampp/htdocs目录下:

解释一下这个页面:

1.通过if语句判断变量是否初始化

2.if语句中通过mysql_connect()函数连接数据库

3.连接数据库成功后,选择一个数据库

4.选择完数据库后执行一条mysql查询

5.进行查询结果的处理

6.使用echo讲查询结果输出,便于查看

 

接下来配置数据库mululu_testdb,创建users表,并且造数据

然后使用 sql 语句取到指定的记录 参数从浏览器传入
取到的记录显示在指定的位置 效果就酱紫:

先来看看 and 注入和 or 注入:

再来看看加法注入和减法注入:

以上就是最简单的 SQL 注入示例;
通过传入人为构造的参数 取得本来拿不到的数据;

 

如果要攻击数据库 最起码要知道被攻击的是什么数据库 
首先从 Web 应用技术上就可以获得一些线索:
如果是使用 ASP 或者 .NET 开发的系统 数据库就可能是 SQLServer
如果是使用 PHP 开发的系统 数据库就可能是 MySQL 或者 PostgreSQL
而如果是使用 Java 开发的系统 它挂的数据库就可能是 Oracle 或者 MySQL

除了 Web 应用之外 底层操作系统也可以提供线索:
比如安装 IIS 作为服务器平台 则后台数据库就可能是 SQL Server
而允许 Apache 和 PHP 的 Linux 服务器 就可能使用 MySQL 或者 PostgreSQL

另外还可以借助错误信息来判断数据库类型
因为报错中有可能直接显示数据库的类型:

 

为了获知某个表里面存在多少个字段 可以注入 order by 子句:

 

还可以通过 union 语句注入的方式 获得数据库的用户名和版本:

 

然后就可以通过注入语句 获得所有的数据库的名字:
select * from users where id = 1 union select null,schema_name,null from information_schema.schemata 

 

上图所示 服务器上所有的数据库就这样暴露出来 。。。

有了数据库的名字 还可以进一步获取表的名字:
select * from users where id = 1 union select null,table_name,null from information_schema.tables where table_schema='bugfree' 

有了表名字 获取字段名字也很容易:
select * from users where id = 1 union select null,column_name,null from information_schema.columns where table_name='bf_bug_info' and table_schema = 'bugfree' 

 

至此 我们已经利用 SQL 注入的方式 获得了太多信息
然鹅 我们甚至还可以获得更多 

在掌握数据库连接密码的情况下 我们来查询一下 mysql.user 表:

那么如果没有密码呢 通过注入的方式 也可以获得这些数据:
select * from users where id = 1 union select Host,user,password from mysql.user 

以上展示的就是最为基础的 SQL 注入的实现形式了

假设 SQL 语句是 INSERT into 表名 values ('X',X,X); 

那么就往数据库插入了非法数据了。。。。。

转载于:https://www.cnblogs.com/xiaoyaojinzhazhadehangcheng/p/8042029.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vb红绿灯自动切换_VB红绿灯程序

《VB红绿灯程序》由会员分享,可在线阅读,更多相关《VB红绿灯程序(4页珍藏版)》请在人人文库网上搜索。1、VB红绿灯演示Private Sub Command1_Click()While (1)Shape1.FillColor RGB(255, 0, 0)Shape2.FillColor RGB(0, 0, 0)Shape3.FillColor RGB(0, …

什么是网站监控?

网站监控是跟踪网站的可用性和性能,以最小化宕机时间,优化性能并确保顺畅的用户体验。维护网站正常运行对于任何企业来说都是至关重要的,因而对大多数业务来说,网站应用监控都是一个严峻的挑战。Applications Manager网站应用监控…

循序渐进PYTHON3(十三) --4-- DJANGO之CSRF使用

用 django 有多久,跟 csrf 这个概念打交道就有久。 每次初始化一个项目时都能看到 django.middleware.csrf.CsrfViewMiddleware 这个中间件每次在模板里写 form 时都知道要加一个 {% csrf_token %} tag每次发 ajax POST 请求,都需要加一个 X_CSRFTOKEN 的…

java string replace 重载_关于Java:如何使用replace(char,char)替换字符b的所有实例为空...

如何使用replace(char,char)将字符" b"的所有实例全部替换为空。例如:Hambbburger to Hamurger编辑:有一个约束,我只能使用1.4.2,这意味着没有重载版本的replace!你不能因为什么都不是字符&#…

JavaScript——执行环境、变量对象、作用域链

前言 这几天在看《javascript高级程序设计》,看到执行环境和作用域链的时候,就有些模糊了。书中还是讲的不够具体。通过上网查资料,特来总结,以备回顾和修正。 目录: EC(执行环境或者执行上下文,Execution …

java线程interrupt用法_Java 如何中断线程

本篇文章帮大家学习java 如何中断线程,包含了Java 如何中断线程使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。以下实例演示了如何使用interrupt()方法来中断线程并使用 isInterrupted() 方法来判断线程是否已…

laravel5.4之artisan使用总结一

Artisan是laravel自带的命令行接口: php artisan list 编写命令 生成命令: 可以使用Artisan命令,php artisan make:command ConsoleTest 执行完这个命令后,会在app/Console/Commands 目录下创建ConsoleTest命令类。会包含默认的属…

java如何保证类不被回收_垃圾回收机制保证了Java程序不会出现内存溢出。( )

【简答题】1.激素(名词解释)【单选题】6.下列哪种情况下可引起ADH分泌增加【判断题】在Java中使用String类型的实例对象表示一个字符串。( )【判断题】static关键字可以修饰成员变量,也可以修饰局部变量。( )【单选题】建设项目投资控制应贯穿于建设工程全过程,在建设项目实施阶…

intellij idea 分屏设置 与快捷键

1、找到分屏功能 File -> setting -> keymap,搜索(注意大小写):   Split Vertically 水平分屏   Split Horizontally 垂直分屏 2、设置快捷键, 编辑快捷键的地方在搜索框同一行:    在标签上直…

java parseexception_Java ParseException类代码示例

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException; //导入依赖的package包/类Overridepublic void read(File file) throws IOException {try {Document doc db.parse(file);NodeList nlTimeSlots (NodeList) xp.evaluate("/ANNOTATION_DOCU…

bzoj 4016: [FJOI2014]最短路径树问题

Description 给一个包含n个点,m条边的无向连通图。从顶点1出发,往其余所有点分别走一次并返回。 往某一个点走时,选择总长度最短的路径走。若有多条长度最短的路径,则选择经过的顶点序列字典序最小的那条路径(如路径A为1,32,11&am…

java.nio.file 找不到_java - 断言该错误:无法访问路径(找不到java.nio.file.Path) - 堆栈内存溢出...

我想使用Robolectric进行单元测试,但是我正在尝试使用robolectric进行简单测试,因此一开始我很困惑。 我遵循了手册,对示例进行了同样的操作,甚至其他帖子也无济于事。 每次收到错误消息:无法访问路径。 找不到java.ni…

SSH整合方案二(不带hibernate.cfg.xml)

整体结构: 1.引入相关jar包 2.编写实体类和映射文件 package cn.zqr.domain;public class Customer {private Long cust_id;private String cust_name;private Long cust_user_id;private Long cust_create_id;private String cust_source;private String cust_industry;privat…

java铃声类_MediaPlayer.setDataSource中的java.lang.IllegalStateException,使用铃声类

我有一个用户(Samsung Galaxy S5,Android 4.4)报告的崩溃,我不明白发生了什么。这似乎是可以吸收的,但也许有些人遇到了同样的问题,或类似的问题。MediaPlayer.setDataSource中的java.lang.IllegalStateException,使用…

POJ 1742 Coins ( 经典多重部分和问题 DP || 多重背包 )

题意 : 有 n 种面额的硬币,给出各种面额硬币的数量和和面额数,求最多能搭配出几种不超过 m 的金额? 分析 : 这题可用多重背包来解,但这里不讨论这种做法。 如果之前有接触过背包DP的可以自然想到DP数组的定义 > dp[i][j] 表示…

java nextintln_java – 从lambda表达式引用的局部变量必须是final或者有效的final

我有一个JavaFX 8程序(适用于JavaFXPorts交叉平台),它实际上是为了做我想做的事情,但却是一步之遥.程序读取文本文件,对行进行计数以建立随机范围,从该范围中选取一个随机数并读取该行以进行显示.The error is: local variables referenced from a lambda expression must be f…

css用hover制作下拉菜单

首先我们的需求就是 制作一个鼠标移动到某个区域就会有下拉菜单的弹出,这样会有更多的子类内容,示例代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>*{mar…

java链式调用空指针_java 链式调用

前言现在很多开源库或者代码都会使用链式调用。因为链式调用在很多时候&#xff0c;都可以使我们的代码更加简洁易懂。以下Student类有多数个属性&#xff0c;让我们看看非链式调用和链式调用有何区别。非链式调用Main类&#xff1a;/*** Created by chenxuxu on 17-1-10.*/pub…

mysql 字典索引_【大白话mysql】你真的了解 mysql 索引吗?

本文来源于公众号&#xff1a; 跬步匠心什么是索引&#xff1f;当我们使用汉语字典查找某个字时&#xff0c;我们会先通过拼音目录查到那个字所在的页码&#xff0c;然后直接翻到字典的那一页&#xff0c;找到我们要查的字&#xff0c;通过拼音目录查找比我们拿起字典从头一页一…

java菜单面板设置完能关闭_用Java创建一个屏幕外框架(或者:当所有应用程序窗口关闭时,如何避免Mac上的空白菜单)?...

你一定要考虑WizardOfOdds非常有用的答案.正确使用“The Application Menu”将有所帮助,并且很容易设置最小的Info.plist开始.持久的文件菜单将允许您的应用程序在其他人关闭时打开一个新窗口.这个answer链接到一个简单的example.虽然Apple的Human Interface Guidelines是您用户…