Feigong –非攻

华盟原创文章投稿奖励计划

非攻

取自《秦时明月》--非攻,针对不同情况自由变化的武器

Feigong,针对各种情况自由变化的mysql注入脚本

Feigong,In view of the different things freely change the mysql injection script

 什么是非攻?

在sqlmap的使用过程中,常常碰到很普通的绕过过滤方式,例如空格-->%0b、%0a,但是却没办法使用sqlmap来获取数据的情况,于是花了很长时间来完善脚本,让非攻可以通过修改config.py一个文件中的设置,让非攻在面对不同情况时成为了灵活多变的注入脚本...

非攻目前集成了对mysql的normal、build、time,3种注入方式...

  在使用非攻之前

1、首先你需要找到一个注入点(在考虑写一个这样的工具)

2、判断数据库为mysql

3、通过巧妙地过滤可以获取数据

4、开始使用非攻

 TODO

完成基本功能

优化log存储方式

优化build注入、time注入算法

优化解包函数,避免自定义解包

添加线程池优化注入速度

完善对拓展函数的支持

增加更多注入语句

增加更多绕过过滤方式

增加多种数据库

更新日志

2016-8-5

Feigong 0.9.9完成

增加 payload处理模块完成

2016-8-9

Feigong 1.0.0完成

增加 log对文件的输出

优化 部分错误处理

增加 较为完整的文档

2016-8-24

Feigong 1.0.1完成

优化 盲注算法

优化 整体结构

2016-8-25

Feigong 1.1.0完成

优化 time盲注算法,从100->7

2016-8-26

Feigong 1.1.1完成

优化 整体结构,避免了自定义解包函数

2016-8-27

Feigong 1.2.0完成

重构 config->config、advanced_config

优化 整体结构,大幅度减少冗余代码

使用文档

11

Feigong一切一切的核心在于sqlier/config.py和sqlier/advanced_config.py,代码层的自定义可以面对任何情况

 安装

你可以通过点击下载,或者git clone来获取源码

1

 使用

首先你需要安装依赖

1

打开对应Feigong的目录,跑一下默认demo看看结果

1

开始

Feigong是通过修改sqlier/config.py & sqlier/advanced_config.py来实现注入的,config.py是feigong的基础配置,advanced_config.py是进阶配置,而default中是默认的配置文件,以免默认修改过后找不到正确的配置。
config.py是基础配置,只有基础配置完成的情况下才能进行正常的配置。

111

advanced_config.py是进阶配置,进阶配置可以配置一些特殊的请况

1111

Feigong现在的版本还仅仅支持对于mysql的3种注入方式:

  • 普通注入(normal):也就是会有返回的注入点
  • 盲注(build):没有返回,但可以通过真假条件来判断执行结果
  • 时间盲注(time):没有返回,但是可以通过返回请求的间隔时间来判断真假

基础配置

首先你需要进行基础的配置,首先是基础的目标url,请求头,传参方式,注入方式等...

1

上面的每一步都给出了相应的参数,目标url中,不需要加上参数,关于参数的配置,我们会在后面进行...
ps:如果出现get和post请求都必须存在的情况,若注入点再post,可以直接把get请求代入到目标url中,如果反过来,则暂时不支持
注入方式的配置

根据这一段的选择,我们会在后面进行不同的配置选项

1

normal

如果注入模式为normal,需要定义基础payload

 

1

normal注入的基础payload要求必须返回    Feigong
build

如果注入模式为build,则需要配置基础payload,设置真值是返回的页面长度

1

对于真值时的返回长度,可自定义,也可以不定义,因为test.py中的test函数会自动设置self.len(使用基础payload)

1

time

如果注入模式为time,除了要设置基础payload以外,还需要设置睡眠时间,这部分在进阶配置中,默认为2

1

如果网络环境太差,建议(2-5)
若为time注入,则可以使用上面两种的任何一种,格式与其相符,同样,关键位置使用2333或者'Feigong'填充

1

配置请求格式

配置请求,把请求中payload的位置设置为Feigong(如果拼错了就会全部无效...)

1

上面两个分别是对于get和post请求的请求格式
选择注入模式

在注入之前,你首先需要测试,test.py中包含所有的测试函数,包括test、get_now_database、get_version、get_user
self.wtest是是否进入测试模式、测试模式优先级最高和普通模式不兼容,默认开启
而testmethod则是选择使用那种测试,互相兼容可以同时跑

1

在test成功后,就要开始正式的注入模式了...
正式注入模式的选择,test模式开启时,无论正式注入模式是否开启都无效,默认开启
content为注入数据,可以预设columns、tables和database,默认注入10条数据 columns为注入列名,可以预设tables和database tables为注入表名,

可以预设database database为注入表名 统一规则为如果不预设,则自动调用上一层的类获取数据

1

进阶配置

在进阶配置中,我们是可以通过预设值来减少注入的范围
database可以自定义,默认为空,若为空会调用get_database(),这里是一个列表,必须按照列表格式(当然,如果database_name错误...则不会注到数据)

1

然后是table name,tables_name的格式为字典+元组(如果有写错某些值,则会注不到数据)

1

然后是self.columns_name,columns_name的格式为字典套字典+元组(同样,如果有写错的值,则会注入不到数据)

1

当选择注入content时,你需要指定输入数据的上限,默认为10

1

配置自定义替换表

这部分一是在进阶配置中
配置自定义替换表,合理的替换表配置远远可以替换出想要的所有情况payload
合理的配置替换表,可以定制任意payload,例如

1

总之,如果你对代码足够熟悉,可以生成任意payload

1

开始注入

开始注入

1

本文原创,作者:congtou,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/27848.html

发表评论