收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来
如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
正文
-
用户输入参数(用户id)
-
后台执行SQL(查询用户信息)
-
查询结果在前端回显
知道网站的功能逻辑后,我们来了解一下联合注入的核心:union 关键字
MySQL提供了 union 关键字,连接多个查询语句,并将查询结果合并,即联合查询。
我们尝试在查询用户信息(id=1)时,使用 union 关键字,连接另外一个查询语句,在地址栏中输入: ?id=1' union select 1,version(),@@datadir -- a
。
程序的执行逻辑如下:
仔细观察一下就会发现,我们已经查询到了其他数据,但页面只能展示第一条数据:
想让页面展示第二条数据,可以使用分页,但这里我们使用另外一种方式:空查询。
提示1:如果不了解联合查询可以查看下面这张流程图,如果看不懂可以自己尝试编写SQL并观察执行结果。
提示2:select 1,version(),@@datadir;
是MySQL查询语句的一种特殊形式,里面用到了两个函数:
-
version():返回数据库版本
-
@@datadir:返回数据库安装路径
如果你不理解这个查询语句的格式,可以在自己的数据库中执行以下几个SQL,并观察结果:
select database();
select 1;
select 1,2,3;
select 1,database(),version();
正常的用户id都是从1开始自增的,如果查询的id为0或者是负数,一定是空查询。
在地址栏输入:?id=0' union select 1,version(),@@datadir -- a
程序的执行逻辑如下:
除此之外,我们可以将 union 右侧的查询语句替换成其他内容,以获取数据库中的所有信息。
以上便是联合查询的基本原理,接下来,我们在实战案例中使用一下联合注入。
========================================================================
还是上面的测试网站(SQLi Labs靶场的第一关),先来测试注入点。
地址栏输入 ?id=1' and 1 -- a
,页面正常显示:
地址栏输入 ?id=1' and 0 -- a
,页面异常(空)显示:
确定注入点:单引号字符型注入。
接下来,开始使用联合注入,地址栏输入以下payload:
?id=0’ union select 1,2 – a
页面报错了……字段数不同
MySQL规定,union 关键字连接的两个查询语句,查询的字段数必须保持一致。
这就意味着,我们在使用联合注入之前,必须先要判断网站的查询语句,查询了几个字段,这里,我们使用 order by 来判断查询的字段数。
order by 关键字可以按照指定字段排序,如果排序的字段不存在,则会报错。
利用这一特性,我们可以从第一个字段开始排序,然后是第二个、第三个……,当页面出现报错时,就可以判断出网站的查询字段数。
先按照第一个字段排序,地址栏输入 ?id=1' order by 1 -- a
再按照第二个字段排序,地址栏输入 ?id=1' order by 2 -- a
再按照第三个字段排序,地址栏输入 ?id=1' order by 3 -- a
再按照第四个字段排序,地址栏输入 ?id=1' order by 4 -- a
第四个字段排序时开始报错,可以确认第四个字段不存在,网站查询语句的查询字段有只有三个。
字段确定以后,我们就可以使用联合查询了,地址栏输入以下payload:
?id=0’ union select 1,2,3 – a
从页面的响应我们可以看到,2和3的位置可以显示出来,1的位置没有显示出来,因此,我们可以在2或者3的位置返回查询结果。
我们将 2 的位置换成一个函数(获取当前使用的数据库),在地址栏输入以下payload:
?id=0’ union select 1,database(),3 – a
页面中显示了当前使用的数据库:
接下来,我们在 2 的位置返回查询语句的结果(数据库的所有用户),在地址栏输入以下payload:
?id=0’ union select 1,(select group_concat(user) from mysql.user),3 – a
提示:
-
使用括号包裹SQL,可以让数据库把括号中的内容当做一个整体执行。
-
字段处使用 group_concat() 函数,可以将查询结果拼接成一个字符串(可以尝试不加此函数来观察页面的响应结果),不了解次函数的同学可以参考我的另一篇文章:MySQL group_concat函数使用详解
我们可以在 2 的位置替换不同的查询语句,来获取数据库中的所有数据。
接下来,我们整理一下联合注入的使用步骤。
========================================================================
使用前提:页面有显示位
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
png)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
[外链图片转存中…(img-m0XIsAuw-1713860156719)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!