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

  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/royhoo/p/5493129.html
Copyright © 2011-2022 走看看