sqli-labs前四十有感
一直做题容易麻木,来讲一下这段时间的一些体会或者说是学习-- -
因为之前一直在考虑是否要考研的事情,身边的人都去考研了,总感觉自己也应该去试试。但是随波逐流对于老00后来说心里总有些不甘。总得有一些自己的想法吧!我见过的了解过的考研生,有很大一部分是为了逃避就业压力,即使是研究生毕业了,后面也要面临就业压力不是吗?并不是每一个人都适合考研,也要结合自己的条件,就像前段时间看到的一个关于“劝按摩小姐去考研”的短视频。关于我对这个视频怎么看,我存保留意见。下面开始对这段时间的学习“有感”了。
总体来说,题目是循序渐进的,步骤都差不多,但是又不尽相同。
Less-1-4题主要是带领我们熟悉步骤,第一步找注入点、找闭合注入点可以是get、post型的url,也可以是表单的输入框,也可以是http header、referer、cookie.....找闭合的时候闭合可以是'、)、"......多种组合输入闭合的时候也都有报错,且可以快速判断出闭合是什么,例如:use near ''1'' LIMIT 0,1' at line 1闭合就是单引号等等;第二步找显示位,找到显示位才能让想要的数据显示在页面上,当然也会让select不报错,详细原因可以参考《mysql必知必会》;第三步就是爆数据库、版本信息......这也是为了方便后面的查询,更方便定位数据字段;第四步是爆表名,这一步和第三步作业差不多;第五步是爆列名;第六步根据前几步收集的数据库、表、列信息爆出字段。当然人工每个网站都是这样的话,也就没有安全可言了,后面的题目在每一步都有变化,在后面学过程中也会慢慢学习。
Less-5-6使用前几关同样的操作,但是并没有成功,得到闭合之后开始新的注入方式——报错注入,其中包括updatexml()、extractvalue()、group by注入等等,其他方式和前几题一样。
Less-7-8在注入的时候,虽然报错但是并没有显示具体报错信息,采用另一种注入方式——布尔盲注,在闭合的时候需要我们一个一个试,然后尝试闭合,最后利用length()、ascii()的函数构造布尔值为1的结果获得信息,例如1' and length(database())=7-- -前后结果都为1时为真。
Less-9-10注入时连报错信息都没有了,信息都不变,这里就要利用基于时间的布尔注入。利用sleep()来获得信息,如1' and if(1=1,sleep(5),1),第一个参数为条件,第二个参数为休眠时间,第三个参数为重复次数当playload为真时,页面休眠固定秒数,错误则不休眠。
Less-11-20这几关主要是对前十关的巩固练习,寻找注入点、闭合、数据库......但是要对不同的情况更改注入方式,选择不同函数。值得注意的是17-20关注入点分别是密码、http header、referer、cookie
Less-21-30这些题目和之前的题目考的不单单是注入,其中还包括对内容的编码、对输入的过滤,21、22对注入点cookie进行base64编码;23、24对某个输入框的单引号进行过滤;25对or和and过滤;26对空格、逻辑运算符、注释符过滤;28对union和select过滤.....所谓兵来将挡水来土掩,在面对这些过滤的时候,多收集应对方法,可采用大小写、重写绕过,寻找没有被过滤的函数,同时也要多了解urlencode编码和其他编码,后面宽字节注入也用的到。
Less-31-40这几题在源码中发现有addslashes()mysqli_multi_query()等函数对输入内容进行过滤,可分别采用宽字节注入、堆叠注入进行获取信息,其他方法可自行探索,这本就是一个不断学习的过程。
前路漫漫。