为您找到资讯结果约 27
关于基于约束的SQL攻击 在创建数据库的时候,一般会先定义整个表的结构,假设我要做的是登录入口,先简单地创建一个用户表。(用户表中,我这里是定义了三个字段,第一个是ID,然后第二个是用户名) 表已经建完之后,看起来也没什么问题,那么如果说我开发完了之后,是不是应该有个登录入口? 对没有账号的人来说,需要有一个注册入口。注册的本质是一个insert的过程,就是往里插入一条数据。假如里面数据库没有数据,我就要往里加一个管理员账户。这个管理员我就会对它设置成admin,密码是12346789。 (先去创建这张数据表,看一下,然后去创建一张,对吧?只有两张表,然后我就去对uc。里面是空的,对吧?我接下来就往里插条数据insert。       刚才我们提到了去注册的时候,它的本质其实是我们一起插入一条数据,它的长度是有限制的,它限制了30位,如果说我们插入31位会这样,它会自动的把31位就是说大于30的东西给吃掉,就是相当于抹掉了,它只会插入前30位。 那么查出去插入的时候,它肯定会先去查一下,你去操作数据在表中原来存不存在。假设我去插了一个31位的数据,它自然表中是永远不会存在的,那么他就会把这31位的数据往表里去插。   比如说用户名是这个密码是大于六位,且包含大写字母小写字母和数字。这么复杂的大写字母小写字母和数字,我就随便设一个,比如说大写字母,这正常登录试试看。大写字母小写字母数字就做一个段落。密码就是一个去做一个登录,发现这个时候就成功了,所以这个就是一个基于约束攻击的简单介绍。 题目: 课时2   约束条件的安全测试10分20秒 基于约束的就讲这么多。接下来的话就讲一下报错注的一些问题,然后去做一个简单的分析,然后也会结合一道题目来讲解。 首先来看一个简单的一个公式,直接往上套就可以去用了。   但是我觉得既然学了还是要能了解就去了解一下, 报错注入 首先要去了解一下一些函数:   flow函数是向下取整。如果我们将rand*2之后,它的结果其实就会有0和1两个结果。   这张表它其实就是默认会存在,而且这张数据表中的行数是很大的,后面我们也会去讲到这个问题。在盲注中会用到一些笛卡尔积的形式调数据表数据量的问题。这个地方其实表中的数据量是很大的,所以说这个地方就是跟数据量会有一个关系,然后也可能跟后面的也会有一定的关系,要不然也不用这个横竖了。   我们再继续向下看,   他这个地方就是010101001。是这样子,我第二次再执行一次。0011,这两次的执行结果是不一样的,你首先明白这个问题,然后第二另外一条语句它是加了一个0。 像这地方可以看一下,如果说0选中之后,去看这个序列,它是01101100的,即前几位,我们再去做一个01101100。所以说他的前几位序列是一致的,而且你要明白一个点,就是说刚才我们去他产生报错的原因,是不是一一条数据不报错,一条数据不报错,然后调出两条数据开始报错,三条数据也可能报错。那么其实他曝出的前提条件就是前面几条数据有就可以了,对吧?但到底需要几条数据,这个地方我们要进一步去看。那么所以说他肯定和序列是有关系的,因为像这种不加零的情况下,它是随机报错,就是两条数据,三条数据随机报错,但是加0必然报错。 这个地方我们可以演示。   如果是不加零的话,我们可以是验证一下我的说法。           group,by的话它key这一列它其实必然是唯一的,不能出现重复,那么这个时候它就不符合表的一个结构问题,它自然就会报错了。就是这样的一个逻辑,可以看一下。   首先它会去建立一个虚拟表,就是我刚才演示的演示的一个表,组件就是像这个地方一样的,就像这个地方那样列明,然后这个是它数量:   发现第一条结果为零,查询虚拟表0不存在,它要做一次插入。插入的时候,本质其实是第二次调用,第二次调用就会在被计算一次,那么这时候插入的其实就是一个E那么插入了一周,接下来又是个E0110和幺序列,就这个序列对吧?那么又正常一的数量上去加一就是结果就是K等于1,它的那么就是数量事儿,对吧?然后接下来又是个零011,就会重复上一次的操作,查到的是零,它又想插个1,1是存在的,所以就会报错了。   去做一个插入,本质是第二次计算,第二次计算它就会超的一个实际值,然后第三次计算又是一个查询,查询之后又会做一个插入,那么如果它出现报错,其实只要是插入的值两次是一致的,它就会报错,所以说在你只有表中只有两条数据的时候,如果是随机数,那它就有可能去报错,因为你两次超过值都是一样的。产生一个序列是一个0101,假设就是个去掉,查到一个0插入个1,而且它查到又是个0,又查个1,这时候就直接报错了。但是其实它查的数据只有两行,这个就是数据量少的时候报错的原因。   我们再仔细来看一下这个语句这条数据。   它报错的关键点其实是在于这个里面的这条数据,假如在于这条数据,我们可以把它复制出来看一下。   不一定要用0和1来代,只是为了方便大家理解。 除了这个报错函数之外,还有很多的其他的报错函数可以再去看一下,因为格式不符自然就要报错。 像这个函数可以看一下,它的报错,其实就是有局限性。   这包括函数的基本原理就是这些。接下来的话我们去看一个题目,这是来自于实验题目。           去做了之后,你会发现其实是不行的,我这里就不演示了。                          
具体场景——session 我们可以查一下手册,看看这个参数是默认开启: 举栗子 通过上传一个orange作为key传一个值传给这个变量,放到file函数中,再去比对file函数读取结果文件中的第一行0前面六个字符串是否匹配,如果是orange就会作为包含,否则就会显示源代码。 这道题的难点在于包含一个文件要控制里面的内容,file函数的作用是把一个整一个文件读到一个数据中去,filename要读取文件名: Session.upload_progress.enabled这个参数会生成一个上传进度文件,如何生成、是否可控以及它有什么用呢? 用curl来操作 可以尝试着在后面再去跟一个文件,再次传一个表单。 会发现这个文件是可以留下来的,这段文件内容其实你是可控的,这个地方的值可以直接包含漏洞进行利用了,但是它反而没有这么简单,因为题目在实际判断中,需要读取文件的前六位。upload progress之后的字符串是可控的,之前的却是不可控的,这个地方又是下一个突破点。   upload progress不可控就没有办法进行绕过,想办法让它可控,可以考虑运用伪协议进行突破的时候做一个消失。php://filter/convert-base64.encode去做一个文件读取的操作,base64可以让它转码, 如果在后面跟两个等于号会怎样呢? 会发现它返回的结果还是一样的,base64在解码的时候,先做一个正值匹配,把非base64字符串去掉变成空格,自动删去空格再做解码 。 四个字符串解一次就会变成三个字符串再解一次。二次解码之后,如果不在base64之列就会忽视掉这些东西自动消失,直到第三次解码最后拼接一些字符串。 运行后返回一个字符串,有了这个字符串之后就可以把它拿来用了。 会发现它的长度变小,说明成功了 这个文件会在tmp目录下去生成一个web,成功实现getshell。
据了解,腾讯CTF(TCTF)大赛以“GEEK梦想 即刻闪耀”为主题,由中国网络空间安全协会竞评演练工作委员会指导、腾讯安全发起、腾讯安全联合实验室主办,由著名的0ops战队和北京邮电大学协办
  写脚本 基于时间的盲注 这里我先简单的示范,看一下到底能不能影响到这个数据,这里用一个插件。 这个插件更新之前还挺好用的,更新之后就不太好用了。这里添加三个参数。 第一个,添加字段头用哪一个网址,这里添加了Headername,添加字段的名称X-Forwarded-For,然后到页面开启。 我们会发现它可以成功去修改它回写的内容,这个数据段是可控的,用字段去做一个注入,它就变成了一道注入题。 4分16秒         所以有的时候你也肯定是可以的,如果可以做事的话,向着相对会麻烦一些。我们就要考虑到如有没有说不用注释的方式去它做一个注入。而且我们这个时候你会发现,其实因为之前不回选题到了吗?我们这个时候必然考虑的是使用一个基于时间的一个盲注来做一个注入的,那么就是如何实现的问题了。如何来实现呢? 我们希望SLEEP引用的是一个计算过程。我们可以看一下看,到底是不是? 演示 10分39秒   SLEEP函数产生了延时,我们在insert的时候插入的是数据。 在实际环境中’闭合是什么样呢?看一下操作 演示12分34秒   逗号来自于if条件,除了if以外还有另一种方法。就是使用CASE WHEN这种形式去做一个触发。   用select case的方式。 演示19分21秒     如果是写脚本怎么写呢,此处演示见22分38秒   我们做循环的时候,先从数据库中读出的数据段的长度来考虑。一般不会太长。这是第外层循环,然后是内层循环,内存循环就是类似于阿斯科码值。 类似于字典,比如说dic定义一个变量,27分39秒           其实这种写脚本总体思路还是比较简单,很多时候要注意一下一些细节。多试一试,其实就会好一些。
具体场景——php自包含 getshell两个思路: 1、Phpinfo()包含文件返回临时文件名,我们是在文件上传环节进行包含,如果不删除临时文件我们可以生成临时文件, 2、没有phpinfo,上传文件同样会生成临时文件,没有删除也可以实现包含,爆破文件名即可。 如何让它不进行删除? 操作演示 我们从这道题学一些解题思路,注册后登录: 我们刚刚传的值会入数据库,这里我们可以考虑下是否存在注入漏洞。 第四位的值实现插入,insert语句插入成功,变成5组数列。 出现两个md5值,我们去解密一下就行了。它的密码就是19101997。 拿到密码后登录管理员界面,就可以进行下一步操作了,以上我们利用到了注入漏洞的线索。 我们就会发现它存在一个包含点,想办法利用它。 让他做一个自包含,然后报错,报错之后就不会去删除php临时文件,采用报案点去包含临时文件。 肯定是存在一个目录,会有数据回来,那么就有可能存在着利用点, 具体场景——php崩溃 利用脚本: 通过链接报错去传文件,利用临时文件进行写入,配合报案点实现包含,实现路径可控,存在文件包含点就能实现一个文件包含。
insert  update   delete注入 本次分享内容:insert  update   delete对数据表操作的一些基本问题及例题分享。 insert语法介绍 insert插入到某张表中,后面跟上设置的参数以及值。在insert的时候可以使用哪些注入方法呢? 比如这个报错的方法,如果报错可以使用,那么同理其他函数也是可以使用的。   首先看下语句使用,如下图:   Update  即对整张表做数据更新   我们在set 这个位置做一个注入,报错后可以带出数据:   delete语法介绍 删除表中的数据   例如我删除id=7的数据   例题分享       我们发现引号不能传入反斜杠可以传入,反斜杠的作用就是让引号失效。 我们全部清掉重新推导一遍,/进去之后,那么这里就会连起来。 在他后面去跟一个逗号,   我们看能否可以直接注入语句,如果直接传入注入语句,select database  是可以直接传进去的。database后面的字符把它闭合掉。   思路:要去猜它的一个基本模型是什么,然后你才能做出对应的推测,进而推测出它的语法。,否则注入不进去。 通过插入“/ ”让他的第一个参数中的引号失效,和第二个变量中的第一个引号闭合掉。 根据他给的提示我们再构造语句:       这就是通过注入拿到了我们想要的flag    
自2015年起,安全牛课堂为助力高校人才培养,为在校生提供学习平台,持续开展高校人才培养公益计划,免费为千余名高校生提供视频课程,涵盖Paython、Kali、CTF等视频内容,覆盖全国百余所高校。
; 信息安全资料集中营(我们在全网搜集的海量资料免费分享给你) 内网渗透的一些工具和平台汇总   网络安全思维导图(全套11张)  kali渗透测试之被动信息收集 十大渗透测试演练系统 CTF