首先得知道,要混安全圈的话,要学习逆向,web等好多方面,sql注入应该算是web的最简单的一个了吧。


学习web,最简单的也必须会的(或者是随时能够查询到的)是数据库查询语句了,就比如上个淘宝买买买,鼠标点击立即购买,然后就可以看到有多少件,多少商品等,其实就是点击这个事件触发了本机和服务器发送了一个数据库查询语句,返回的查询值就是给我们看的网页

学习网站百度就好:慕课网啊,w3c啊,都能学到


那么,做安全呢,就是保证合法的输入才会有合法的输出。意味着想要根据web漏洞来瞎输入却能够得到有用的信息这种方法要通过正确的方法避免掉


从以下几个方面,要么是自己的总结,要么是网上大牛的博客

1.如何判断后台的数据库类型?

从各类数据库查询语句的不同可以看出来


函数1:len和length
在mssql和mysql以及db2内,返回长度值是调用len()函数;在oracle和INFORMIX则是通过length()来返回长度值。
换句话说。
当你使用and len('a')=1的时候,返回正常页面时,可以推断当前的数据库类型可能是mssql,或mysql,或是db2。反之则可能会是oracle和informix。

函数2:@@version和version()
在mysql内,可以用@@version或是version()来返回当前的版本信息。但无法判断是mysql还是mssql时,可以用version()函数来构造判断。
换句话说:version()>1 返回与@@version>1 相同页面时,则可能是mysql。如果出现提示version()错误时,则可能是mssql。

函数3:substring和substr
在mssql中可以调用substring。oracle则只可调用substr
SUBSTRING('abc',1,1)=a 返回成功,刚可能是mssql。使用substr('abc',1,1)=a 返回成功,则可能为oracle

区别mssql与sybase(IS_SRVROLEMEMBER函数与show_role函数)
mssql用IS_SRVROLEMEMBER判断数据库权限,而sybase用show_role函数判断数据库权限
1=(select IS_SRVROLEMEMBER('sysadmin')) charindex("sa_role", show_role()) = 0


另外,各个符号(特殊字符)也会导致细节区别:

“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
“--”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。

2.绕过网站SQL注入过滤都有什么方法?

这个就太多太多了

如减少空格,使用注释,缓冲区溢出等

关键是在防御的时候都能考虑到很不容易

攻击web的时候,抓取漏洞然后选择合适的方法攻击


3.简单注入学习

一.	在URL地址后加上-1:若返回的页面和之前不同,则表示有数字型的注入漏洞;
加上-0,返回相同页面;加上-1返回错误页面,则表示存在数字型注入漏洞
表示程序未对输入的数据进行过滤,存在数值型的注入漏洞

二.	加上’%2B’:正常页面;加上‘2%2B’asdf返回不同页面或者说未发现该条记录或者错误,则表示存在文本型注入点
%2B 是 + 的URL编码


4.推荐工具:Pangolin


完美介绍&&教程

http://www.hack80.com/thread-758-1-1.html

 

暂时没有使用这款软件,但是网上好评如潮:功能强大,速度快

不太清楚原理,根据介绍和教程判断应该是写程序在暴力跑的



把大牛们的推荐方向放在最底下压压惊

如何开始你的渗透测试之旅