zoukankan      html  css  js  c++  java
  • 快速查找注入点(转)

    现在有很多防注入程序屏蔽了 and、1=1、1=2 类似这样的关键字,使用这样的方法有时不能探测到注入点了。那么是否有新的方法能够探测注入点呢? 经过一段时间的研究,发现了更好的方法。哈哈,特此共享一下。

    现在假设有一个新闻页面,URL 是 http://gzkb.goomoo.cn/news.asp?id=123,

    1. 在浏览器中打开,可以看到一个正常的新闻页面;
    2. 在URL地址后面加上-1,URL变成:http://gzkb.goomoo.cn/news.asp?id=123-1,如果返回的页面和前面不同,是另一则新闻,则表示有注入漏洞,是数字型的注入漏洞;在 URL地址后面加上 -0,URL变成 http://gzkb.goomoo.cn/news.asp?id=123-0,返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在注入漏洞,是数字型的。

    否则:

    3. 在URL的地址后面加上'%2B',URL地址变为:http://gzkb.goomoo.cn/news.asp?id=123'%2B',返回的页面和1同;加上'2%2B'asdf,URL地址变为:http://gzkb.goomoo.cn/news.asp?id=123'%2B'asdf,返回的页面和1不同,或者说未发现该条记录,或者错误,则表示存在注入点,是文本型的。

    为什么这样可以呢?

    我们可以从程序的角度来考虑一下。程序员的这条语句大致应该是这样的:

    select * from news where id=123

    当我们在后面加上 -1 后,语句变为

    select * from news where id=123-1

    SQL服务器在执行这条语句时会进行运算,实际执行的是:

    select * from news where id=122

    这样选出来的就是另外一条新闻记录了。如果该记录存在,就是另一则新闻;否则会显示记录不存在,或者出错。呵呵。 这也同时表示程序未对输入的数据进行过滤,存在数值型的注入漏洞。

    如果 SQL 语句时这样的:

    select * from news where id='123'

    那么我们在后面加上 '%2B' 之后,语句变为

    select * from news where id='123'+''

    %2B 是 + 的URL编码。 这样之后,SQL服务器实际执行的是:

    select * from news where id='123'

    会返回同样的页面。

    加上 '%2B'asdf 之后,语句变为

    select * from news where id='123'+'asdf'

    实际执行的是:

    select * from news where id='123asdf'

    返回页面不存在,或者显错。 这就表示有文本型的注入漏洞。

    测试例子:以下三个地址,用 and 1=1 的方法来测试,都会有注入程序提示,但是用 -1 的方法均可以测试出是注入点:
    http://www.xxx.gov.cn/readnews.asp?id=2703
    http://zsb.xxxx.edu.cn/Article.asp?id=99
    http://gs.xxx.edu.cn/dsjs.asp?id=659

  • 相关阅读:
    poj 1080 ——Human Gene Functions——————【最长公共子序列变型题】
    hdu 2845——Beans——————【dp】
    nyoj 214——单调递增子序列(二)——————【二分搜索加dp】
    nyoj 104——最大和——————【子矩阵最大和】
    nyoj 10——skiing————————【记忆化搜索】
    >>8) & 0xFF中的 >> 和 &0xFF 的作用
    C语言中的左移与右移 <<, >> 位运算
    ByPass Mode(略过模式或旁路模式)
    C语言&C++ 中External dependencies
    xor 和 or 有什么区别
  • 原文地址:https://www.cnblogs.com/royhoo/p/5493129.html
Copyright © 2011-2022 走看看