Sql注入的初步总结

sql注入

sql注入的起源就不说了,但由于不同的数据库有不同的语法和函数,所以,不一定方法是通用的,但是基本方向是一致的。
sql注入最重要的一点是判断注入点,一般由’ , ", )等来判断,当然有奇葩的另说了。简单的通过一个’号就可以判断出注入点,前提是有错误回显,没有的话就得不断的尝试,与正确页面相比较来判断注入点。
在注入的时候,会发现经常有些字段被屏蔽,或者是程序会过滤这些特殊字段,像空格,union,select,union select等,这就是所谓的waf。可以通过burp suite来查看哪些字段过滤了。怎么绕过被过滤的字段网上有很多,请自行查找。这里给一个博客的链接,认为内容比较全。
http://www.cnblogs.com/Vinson404/p/7253255.html

盲注

盲注是因为没有我们想要的答案的回显。

报错注入

报错盲注的要求是会回显数据库的错误信息。
贴一个通用的盲注写法:
select count(*) from information_schema.tables group by concat(version(),floor(rand(0)*2))
当然有时候程序会屏蔽一些东西,要改版这条语句。

基于布尔的盲注

基于布尔的盲注不会有任何回显,一般通过脚本来实现注入。
贴一个盲注的语句。
1’ and mid(database(),1,1)=‘a’ --+
成功则是正确页面,失败就是错误页面,通过这个来判断数据库,表,列,最后得到内容。

基于时间的盲注

这个和布尔盲注差不多,通过时间来检验错对。
1’ and mid(database(),1,1)=‘a’ and sleep(5) --+
如果对了睡5秒,错误就跳过。

双重注入

双重注入只能说程序用的执行sql语句的函数可以执行多条sql语句。
这样我们用;来结束上条语句在写下一条语句。
1’ ; create table likes users;
会建一个和users一样的表,当然这里我们后面可以写改密码啊,创建用户啥的。

非盲注

基于union的注入

基于union的注入是最简单的注入,要求必须有正确答案的回显。
通过union select 来合并查找我们要的东西。

最后想说的是,sql注入基本方式就是这些,但是如何找到注入点是最难的,不同的语言,不同的函数都有不同的底层构造,有的函数会有bug,像php的sprintf漏洞等。需要我们去积累,并不停的尝试,灵活应用这些知识来达到注入。

如有任何问题,请评论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值