【原创计划】SQL注入学习笔记
作者:桑葚介绍:练习时长两周半的web安全练习生
我觉得sql注入在web安全里面是很重要的一个漏洞,所以大家很有必要去认真学习一下。以下笔记均是在靶场进行练习的,各位兄弟可以做一个参考。实战的时候灵活运用,具体问题具体分析。正式开始!mysql注入的基本流程。1:首先我们要判断是否存在注入,为我们接下来获取网站的数据库名,表名,列名以及数据做好准备。存在注入判断:and 1=1(正确) and 1=2(错误)但是在这里的话,就存在一些问题,每个程序员写代码的风格不一样,我挑选其中的几样跟大伙交流一下。a.http://zheshiygelizi.com/?id=1当看到这样一个网站的时候,我们去判断注入,输入了and 1=1 或者 and 1=2,网站都没有任何的回显。我们可以尝试这样,在id=1后面家上一个'。闭合前面的字符。因为可能在网页代码里存在这样的情况$_GET='$id'(乱写的,做个演示)''在这个符号里面的东西,会被统一识别为字符,也就是说,如果你不去闭合的话,就会存在这样的情况。$_GET='$id and 1=1',你所加入的判断都会被当作字符处理。所以我们需要进行闭合,然后进一步我们的判断。当然,也存在$_GET=('$id')这样的形式,同样的道理,我们进行')闭合。当and 1=1显示正常,and 1=2显示错误的时候,那么这个地方大概率存在注入点。我们就可以利用order by x union select 1,2,3..,进行联合查询,判断其中的字段。为我们接下来的注入做好准备。b.http://zheshiygelizi.com/?id=1&page=1当这个网站的注入点在id=1的地方时,你在page=1后面输入自己的注入判断是不会有结果的(用sqlmap的话,它会自动帮我们尝试每个注入点)。那么我们手工的话,就需要改变一下这个网址。http://zheshiygelizi.com/?page=1&id=1话不多说。用靶场环境(sqlilabs)第一关举例。 当我们进行字段判断的时候,发现什么也没有回显。我们加入',进行闭合。 发现还是没有任何反应。这个时候,我们可以在oder by 1,2,3,4这里动动心思。我们在后面添加--+,省略后面的内容,来看看结果: 这里存在一个临界点,当我们输入1,2,3,4的时候,爆出错误。输入1,2,3的时候,无字段反应。接下来,我们运用select语句进行查询。 我们在2的地方进行database查询。 这里啰嗦几句,在mysql里面:table_schema:数据库名 table_name:表名 column_name:列名并且mysql多带有默认的数据库:information_schemainformation_schema.tables:存储表名信息的表information_schema.columns:存储列名信息的表information_schema.schemata:存储数据库名信息的表mysql中符号“.”代表下一级举个例子:information_schema.tables:数据库infor...下的tables表回到正文:我们对刚刚查询出来的数据库security进行下一步查询。所用语句:union select 1,table_name,3 from information_schema.tables where table_schema='security'--+回显结果如下: 这里,我们注意到只回显了一个表名,那么我们怎样获取这个数据库下的所有表名呢?完善一下我们的语句:union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+回显结果如下:file:///C:\Users\Priess\AppData\Local\Temp\ksohtml15096\wps15.jpg 这里,我们对“users"这张表继续进行探索。(users这张表也大多包含了管理员的信息)修改我们的语句:union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+回显结果如下: 到这里的时候,我们发现回显了很多的结果出来,很多不是这个表里面的信息也出现了。因为我们没有指定一个范围。它就默认去搜索所有有关“users”下的信息。我们可以完善一下我们的语句,让他爆出所在数据库下的信息。完善语句:union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='security'--+回显结果如下: 继续:我们针对username以及password继续进行挖掘修改我们的语句:union select 1,username,password from users limit 2,1--+回显结果如下: 演示就到这里了。我想说的是,当我们在实战的过程里,会遇到各种各样的问题。比如多种符号的干扰,不同的数据库。这就需要我们不断扎实自己的基础,灵活运用自己的所学知识。光看不够,要多练习,熟能生巧。纸上谈兵是不够的,共勉,有问题的话欢迎留言交流。如果文章有不足之处,还请各位兄弟指点,谢谢!
页:
[1]