简单的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);
那么就往数据库插入了非法数据了。。。。。
简单的SQL注入学习的更多相关文章
- 实验吧_简单的sql注入_1、2、3
简单的sql注入1 看着这个简单的界面,一时间没有特别好的思路,先输入一个1',发生了报错 初步猜测这是一个字符型的注入,他将我们输入的语句直接当成sql语句执行了,按题目的意思后面肯定过滤了很多注入 ...
- 【实验吧】CTF_Web_简单的SQL注入之3
实验吧第二题 who are you? 很有意思,过两天好好分析写一下.简单的SQL注入之3也很有意思,适合做手工练习,详细分析见下. http://ctf5.shiyanbar.com/web/in ...
- 【实验吧】CTF_Web_简单的SQL注入之1
题目链接:http://ctf5.shiyanbar.com/423/web/ 简单的SQL注入之1,比2,3都简单一些.利用2 的查询语句也可以实现:1'/**/union/**/select/** ...
- sql注入学习心得与sqlmap使用心得
做题是最好的老师 首先先来分享一下我用来练手的题目,实验吧中的简单的sql注入1,2,3 不得不说,sql注入真是一个神奇的东西,至少我以前看起来一点头绪都没有的题目能入手了 首先是简单的sql注入3 ...
- 实验吧之【简单的sql注入 1、2、3】
实验吧的三道sql注入(感觉实验吧大部分web都是注入) 简单的SQL注入 地址:http://ctf5.shiyanbar.com/423/web/ 这道题也是sql注入,输入1,页面显示正常,输出 ...
- 实验吧简单的SQL注入1,简单的SQL注入
接上面一篇博客. 实验吧简单的sql注入1 题目连接 http://ctf5.shiyanbar.com/423/web/ 同样,直接输入 1加个但引号,结果下面有返回错误, ...
- 实验吧简单的sql注入3
今天早上起来发现有人评论说我没更新实验吧sql注入3,主要是因为前段时间都去做bugku去了 但是重做这道题发现以前的姿势不行了,exp()报错不再溢出,现在不能用这个姿势,所以这里重新整理了一遍思路 ...
- 简单sql注入学习
sql注入是什么? 所谓SQL注入,就是通过把SQL命令插入到Web表单提 交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQ ...
- SQL注入学习资料总结
转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html 什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Lang ...
随机推荐
- 大数据处理-Bloom Filter
大数据处理--Bloom Filter 布隆过滤器(Bloom Filter)是由巴顿.布隆于一九七零年提出的.它实际上是一个很长的二进制向量和一系列随机映射函数. 如果想判断一个元素是不是在一个集合 ...
- Java编译后产生class文件的命名规则
今天刚好有同学问了下Java编译后产生的.class文件名的问题,虽然一直都在使用Java做开发,但是之前对编译后产生的.class文件名的规范也基本没做了解过,也真的是忏愧啊!今天无论如何都要总结下 ...
- 回文树(回文自动机) - URAL 1960 Palindromes and Super Abilities
Palindromes and Super Abilities Problem's Link: http://acm.timus.ru/problem.aspx?space=1&num=19 ...
- Pycharm 建立工程,包含多个工程目录
- lmbench
lmbench作为性能检测工具的一种,提供内存,网络,内核等多方面的测试工具.是benchmark众多功能测试软件中的一种.几天了解了下,记录于此. 参考链接 http://www.bitmover. ...
- 敏捷软件开发实践-Release Process/Release Plan(转)
介绍: 因为我们的开发周期是迭代进行的,以Sprint为单位,我们每个 Sprint如何去和客户说我们的成果呢,那么我就需要Demo和release一些新功能,或者一些bug fixing.Demo我 ...
- 【BZOJ】2440: [中山市选2011]完全平方数(莫比乌斯+容斥原理+二分)
http://www.lydsy.com/JudgeOnline/problem.php?id=2440 我觉得网上很多题解都没说清楚...(还是我太弱了? 首先我们可以将问题转换为判定性问题,即给出 ...
- 【BZOJ】1064: [Noi2008]假面舞会(判环+gcd+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1064 表示想到某一种情况就不敢写下去了.... 就是找环的gcd...好可怕.. 于是膜拜了题解.. ...
- error C2678: 二进制“+”: 没有找到接受“const char [22]”类型的左操作数的运算符(或没有可接受的转换)没有与这些操作数匹配的“+”运算符
错误:没有与这些操作数匹配的“+”运算符,操作数类型为const char [20]+CString 分析原因:其提示操作数类型为const char [20]+CString 可见是类型有问题 故加 ...
- Python+selenium之简单介绍unittest单元测试框架
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...