文本标记问题

1、介绍

文本标记是一个常见的业务场景,比如爆破标记参数、xss标记参数、验证码标记,等等。

2、实现标记的几种思路

2.1 纯标记字符

措施是在样本文本中,使用标记字符进行插入标记。

(1)单标记还是双标记

所谓单标记,即一个参数点对应一个标记字符,一般在原参数点的文本之后。而双标记,是一个参数点对应两个标记字符,其将原参数点的文本包围起来。

单标记的特点是简单、方便,其设置payload,相当与将原参数值作为前缀。而双标记更灵活,可以是将原参数值作为前缀,也可以实现直接替换。

对xss和sql注入来说,两者区别不大,但是一般考虑使用双标记,且是直接替换的操作。因为双标记还能够应用在重定向漏洞等场景,而如果想实现将原参数值作为前缀,可以直接对payload进行文本处理。

(2)标记字符

标记字符需要与样本中固有的字符区分,有几个思路:

  • 动态设置标记字符,即根据样本情况,选择一个未使用的字符作为标记字符。解析参数点时,需要将动态设置的标记字符传递
  • 多字符长度,如果想使用固定的某字符作为标记字符,但是样本中又本身存在,则可以考虑使用多个该字符作为一组标记字符,比如$$$
  • 使用固定标记字符,将样本中的该字符进行编码或转义,解析时先根据标记字符解析参数,然后解码或反转义获取样本
    • 如果使用$作为标记字符,而样本中$转义为\$,\转义为\\,这样可以解析,但是相对麻烦,需要分析$前的多个字符以判断该字符是否是被转义
    • 解决思路一是,不转义而是编码,将样本中的$转为\uxxxx
    • 解决思路而是,使用双字符标记,比如$$,而样本中的$转义为\$,\转义为\\,最多出现\$\$,这样彼此不交叉干扰

2.2 标记字符+索引记录

措施是使用固定的标记字符进行标记,会记录、分析对样本的操作,获取标记字符在样本中的索引。两种实现思路:

(1)直接编辑

  • 首先需要确定样本,比如通过按钮事件来确定
  • 在样本基础上进行输入、删除、粘贴、剪切等操作,会比较操作前后字符串变化和光标所在位置,进而推断增加或删除部分,动态的改变标记的索引列表

(2)事件编辑

  • 插入标记、删除标记,都只能通过按钮或右键菜单事件来完成,且同时进行标记添加和索引记录
  • 可以直接在样本中编辑,但是只能改变现有标记索引的位置,而不能进行标记的添加

实际上,两种思路结合更加实用。burp就是标记字符+索引记录进行文本标记的

2.3 直接记录

措施是鼠标选择待标记字符,然后触发按钮事件或右键菜单事件,进行字体颜色标记和索引记录,但是不增删字符。

  • 会检查索引记录,如果出现交叉,会进行合并
  • 直接编辑,会清除所有的标记,需要再选择

2.4 综合分析

直接记录是最适用的:

  • 直接记录参数索引,不需要再根据标记字符解析
  • 选择文本,然后记录选择,ui和业务代码都简单易做
  • 基于字体或背景色渲染,有比较明显的交互效果
  • 除了GUI交互场景,在命令行模式下也有很好的表现
  • 可以不影响样本,这样可以在上下文中,比较方便的查找是否已经测试该请求,以及比较已测的参数

3、自动标记

3.1 完全的自动标记

对url进行完全的自动标记:

  • 如果存在直接参数,则对直接参数的值进行标记
  • 如果不存在直接参数,但是存在路径参数,则对各级路径进行标记

对请求报文进行完全的自动标记:

  • 对请求行的路径和参数进行标记
  • 如果存在直接参数,则对直接参数的值进行标记
  • 如果不存在直接参数,但是存在路径参数,则对各级路径进行标记

3.2 选择标记

选择部分文本,对其进行直接标记

3.3 基于参数名或其它

通过url中的参数名,或者其它形式对url、请求头部、请求体部进行标记

4、自动清除

分为两种情况:

无选择,则对整体进行标记清除

有选择,则只对选中区域进行标记清除

 

posted @ 2023-05-15 12:21  挖洞404  阅读(37)  评论(0编辑  收藏  举报