00:00
我们得验证一下来执行 ctrl shiftf10执行,我们来看看这个会不会有问题啊,用户名我们在这输进去什么呢?张三呗,密码的123呗。是不是? ctrl shiftf10再运行。用户名我们写上JACK123。我们再去运行,我随便写一个ABC。密码123。登录失败吗?因为这个用户密码错了嘛,对吧,好注意听啊,重点不是为了讲这个,重点在这里你。你信不信我输一个用户名密码。即使不对。也能登录成功。看啊看我怎么输啊。
01:11
用户名密码随便输的吧,走。登录成功了吗?当前程序存在问题是我用户名输进去这个密码输进去这个的时候呢,登录成功了,这种现象被称为circle注入。黑客经常使用啊。
02:00
就是他不是一个普通人,他是一个非常专业的程序员,或者说他是一个非常专业的黑客,此时他输用户名密码的时候,用户名密码他输的非常有讲究。啊,你的程序呢,留了一个后门。也就是说有一个bug,有一个漏洞。在很多年前,这个bug在在一些网站上是存在的。啊,就是也就是说您虽然不是这个网站的会员,或者说不是这个就就不比如说一个普通系统啊,传统系统,你虽然不是管理员,但是呢。我。是一个程序员或者是一个黑客,那么输进去用户名和密码,像这样输的话。就登进去了。登录进去了。那这个很危险呀,如果是个银行系统呢。
03:03
那用户名密码你这样登进去你就就危险了是吧?哎,我就就举举个例子啊,但是现在这种问题已经解决了,不可能出现这个问题,对吧,你去京东京东上试试。用户名的话,我就随便写一个呗。这个行吧。是吧?
04:06
嗯。这个用户名和密码在这个前两年输的时候啊,如果按照这种方式输入的话,京东呢,就会把这个账户给锁住冻结。就是如果用户名和密码是像我刚才这样输入的话,他就会把那个账户给他冻结住。对现在呢,京东它那个改改了一下,现在不是冻结了。这不是冻结的,就是告诉你佣兵密码是错误的是吧,哎。16号解决,对,很久很久以前,就是两年吧,两年之前的,输这个用户名,这个密码,只要这种密码这么输,输进去,他立马把账户给你锁了。所以你你就紧接着啊,在这个京东这个这个位置上会出现一个红色字体,会告诉你这个这个账户被锁被锁定了啊,如果想什么这个解除锁定的话,需要这个申请啊,需要进行什么什么申请,现在没有了,现在没有了,就是以前你要想锁一个人的账户很简单啊,怎么锁用户名知道的前提下,下边输这个密码,他马上就锁了,这个账户不能用了。
05:14
张辉,锁住了,现在呢,可能更人性化一些。这是导致,诶这种现象被我们称为司后注入,对吧?这是一种安全隐患,是不是安全隐患啊?好,各位导致分析一下导致后注入的最根本原因是什么?我们一起来看看这个SQL语句。各位。我们加一下断点行吗?可以吧,加断点的意思就是程序现在执行到这个位置上是吗?这么大。但这一行还没有执行对不对,以上是不是都执行了,好那么接下来我们来执行一下啊,那这块呢,咱们就直接点它之后呢,这有个debug看见了吗?Debug啊debug这块的启动之后呢,接下来用户名我们在这呢,输进去一个随便的用户名密码,我这样输OR1等于一回车。
06:20
他现在呢,经过这个程序的执行,走到了这个断点上,我们可以停在这里看一下这个SQL语句。就这个circleq语句就这个circleq,各位看看看一下,看一下这个circle是什么样的,这个circle。或者看后面。看那个,看那个。双引号开始,双引号结束。在这个双引号当中有这么一条SQL语句select新from tu这张表外条件是登录名等于它,按密码等于它,或者一等于一。
07:00
就是现在我这个程序员啊,非常的专业,我把这个密码拼进去之后呢,彻底把你这条搜狗语给废了。说你看一等于一是不是恒成立,二是什么意思?或者或者的意思是只要有一边成立是不是都成立,哎,你们有没有学过这个或者的意思,或者的意思就是只要有一边成立是不是恒成立,那这个语句就很扯了。来,我们copy一下value啊,然后接下来我们把这个语句在我们的这个数据库当中,我们执行一下,我们看它查询出来是什么东西。都能查出来。就跟你这个条件有跟没有没关系。因为我二或者一等于一,这个已经成立了,这个已经成立了,前半截就忽略了。听懂什么意思了吗?那导致你这条SQL语句是不是都能查出来数据啊?而你的判断逻辑是什么?是只要结果集里边有数据,是不是就登录成功?
08:07
对不对。攻进去了。对吧,哎,你你可以考虑在一些。好,那这块呢,咱们让他结束就行了,各位啊,结束就行了。然后呢,这块啊,你们还是没有告诉我导致搜Q注入的根本原因是什么。导致搜狐注入的根本原因,并不是因为用户输进去的这个东西啊。导致SQ注入的最根本原因是用户输进去了。并且。并且最主要的原因是因为这个被当做了SQL语句的一部分被编译进去了。这是最关键的因素。序行把数据库管理系统,数据库管理系统会把这个S进行编译,大家想这会编译是不是已经迟了,已经晚了吧,是不是用户该拼进去的,非法的东西该都拼了,你在这再编是不是正好上当?
09:24
对吧?好,大家设想一下,如果用户提供的信息里边含有SQL语句的关键字,如果这些关键字不参加SQL语句的编译,是不是就没事了?不参加编译啊,不参加您这条搜狗语句的编译就没事啊,但这个不行。这个恰好拼串拼进去,然后再往下干啥,编译正好编译进去。注意啊,以上正好,怎么着正好完成了circle语句的拼接。
10:01
以下代码的含义是发送SQL语句给谁DBMSDBMS进行什么编译,Circle或者进行circleq编译。正好将用户提供的什么非法信息编译进去。导致了原SQL语句、原SQ语句的含义被什么扭曲了?明白吗?哎,导致的含义被扭曲了。所以这里呢,我想说的是什么呢?导致circleq语circleql注入的根本原因是什么呢?是用户输入的信息中含有什么SQL语句的什么关键字,并且这些关键字参与了SQL语句的什么编译过程,导致so语句的原意被扭曲。
11:20
被扭曲,进而达到注入。住进去,你别小看这个啊,他如果注入的比较严重的话。他可以严重的破坏你数据库当中的数据,你现在这个好像无所谓是个查询是吧。那你注入的如果是一个这个删除啊,对吧,或者是修改啊之类的。是不是哎,都会出很大的问题,那么至于怎么去解决这个搜狗注入,我们下节课再看。休息一下。
我来说两句