本文所述之信息,只作为网络安全人员对自己所负责的网站及服务器进行检测和维护等运维行为的参考。未经合法授权请勿使用本文中的工具、技术及资料,对任何计算机系统进行入侵活动。利用本文所提供的信息所造成的直接或间接后果,及其所引发的损失,均由使用者承担。本文所提供的工具及方法仅用于学习,禁止用于其他!
日常工具使用中,时常会遇到工具需要用到命令行参数,普遍做法是通过参数--h,--help查看冗长的英语说明,看完一大堆参数后现炒现卖,下一次再用还得再看一次。可是在面对不同的应用,一大堆的参数面前,怎样可以快速高效的找到自己需要的参数呢?接下来让我们一起看看TangGo的快捷工具箱的超强的图形化自定义工具吧。
测试软件:sqlmap-1.8,该软件为开源软件可以自行下载。
使用工具:TangGo 快捷工具箱。
安装快捷工具箱
快捷工具箱:顾名思义,方便快捷管理和使用自定义的工具。
打开TangGo,点击左下角进入快捷工具箱。
点击添加一个工具:
工具类型:
○ 自定义界面工具:常见的是自定义运行脚本文件,例如该文中的:sqlmap。
○ 文件快捷访问:一般是可以运行的程序,例如:TangGo.exe。
○ 文件夹快捷访问:一般是文件夹路径,例如:C:/windows/temp/。
○ 超链接:一般是网站的URL,例如:https://www.baidu.com/。
运行环境:根据选择的工具给出对应的环境。
可以选择内置的环境,也可以在浏览中选择自己本地存在的环境。
工具路径:找到工具所在的路径。
自定义剩余内容。
完成之后看到工具添加完成。
自定义界面工具-参数录入
本次教程主要介绍自定义界面工具,结合 sqlmap 的使用,使用到命令行参数如下:
1 -url #目标URL
2 -r #从文件中加载HTTP请求
3 --level * #指定检测的等级
4 --dbs #枚举出所有数据库名
5 --current-db #获取当前数据库名
6 --tables #枚举出数据库中的所有表名
7 --columns #枚举出指定表中的所有列
8 --batch #会自动选择默认项(Y)
9 --form #表单注入
10 --dump #获取内容
11 --method #强制使用提供的HTTP方法
12 -D #指定要枚举的数据库
13 -T #指定要枚举的数据表
通过点击右上角“参数录入”,选择“添加”分别录入上述参数,程序最终命令:工具路径+环境参数+启动参数+表单参数。
注意:部分参数可以勾选“必填”选项,请根据运行需求来选择是否需要勾选。
环境参数
该部分是解决一些语言启动时候遇到问题,需要参数解决,例如:
○ python在执行的时候,由于缓冲区的设置导致命令执行的结果不能实时返回,可以加上-u参数来解决。
○ java的环境参数通常会配置 -noverify,-Xmx2048M 等参数。
启动参数
是指某工具的固定输入参数,比如 sqlmap 使用的时候可以固定参数“-u”。
单行输入框
录入参数“--url”,通过添加一个类型为“单行输入框”,该选项可以输入一个单行的参数:(注意运行参数为实际运行所添加的参数)
保存之后,主页面可以查看,输入对应的参数地址即可看到参数:
多选框
录入“--dbs、--current-db、--tables、--columns”,添加一个“多选框”,该选项可以允许选择多个参数。
保存之后,根据需要可以选择对应的参数,这里选择参数“--dbs”和“--current-db”:
单选框
录入参数“--method”以及方法“GET、POST、PUT”,选择“单选框”,该选项可以从多个选项中选择一个。
保存后回到页面查看,可以单选选择请求方式。
开关
录入参数“--dump”,添加一个“开关”,该选项作为一个选择状态,可以根须实际需要开启。
保存后回到页面查看,开启后会默认追加“--dump”,关闭后则不会追加:
路径选择器
录入参数“-r”,选择“路径选择器”,该参数可以指定选择“文件 / 文件夹”的路径。
保存后回到页面查看,选择一个文档,该功能可以避免路径出错:
选择器
录入参数“--level 1、--level 2、--level 4”,选择“选择器”,该选项可以选择对应的参数。
保存之后回到页面,选择对应的等级可以展示对应的参数:
多行输入框
自选参数,选择“多行输入框”,该选项可以保证一次输入多行数据:
保存后回到页面查看,输入多行数据会显示:
自定义参数页面
当添加一定多的功能后会遇到内容繁杂,并且不能针对目标进行细致的处理,接下来看看自定义界面工具中的自定义参数界面:
选择右上角可以新增页面,新建自定义参数界面,可以根据需要勾选自己的内容即可:
根据实际需求选择对应的自定义界面:
新功能使用
最新版本的自定义界面工具已经支持使用交互式的命令行, 在交互式命令行终端可以交互式执行命令,常用操作 :
○ 选中终端中的数据,点击鼠标右键即可复制选中的数据;
○ 在光标位置点击右键即可将剪贴板中的数据以命令形式粘贴执行;
○ 如需退出交互式命令行终端,可以按下ctrl+c或输入exit命令后按两次回车键。
示例程序代码如下:
1 # 非常简单的示例
2 import time
3 print("hello word!")
4 a = input("This is an input-->")
5 print(a)
运行终端交互示例,框选内容为终端输入字符串:
其他情况:
对于部分应用需要修改对应的代码选项,例如在使用 sqlmap 的时候,默认的终端会给我们选择 Y:
原因如下,在 sqlmap-1.8libcorecommon.py 代码中:
1 def checkPipedInput():
2 """
3 Checks whether input to program has been provided via standard input (e.g. cat /tmp/req.txt | python sqlmap.py -r -)
4 # Reference: https://stackoverflow.com/a/33873570
"""
5 return hasattr(sys.stdin, "fileno") and not os.isatty(sys.stdin.fileno())
checkPipedInput() 函数的目的是检查 Python 是否通过管道 (pipe) 接收到了标准输入 (stdin) 的数据。通常在命令行中,可以通过管道将一个命令的输出作为另一个命令的输入。
函数内部实现:
1.使用 hasattr(sys,stdin,"fileno") 检查 sys,stdin 是否具有文件描述符方法 fileno 。sys,stdin 是 Python 中对标准输入流的引用,通常它会有一个文件描述符,除非在某些不常见的情况下没有连接到终端或文件。
2.调用 os,isatty(sys,stdin,fileno()) 判断 sys,stdin 是否连接到一个交互式终端设备 (TTY) 。如果返回 False,则表示程序不是从终端直接读取用户输入,而可能是从管道、重定向或其他非交互式输入源获取数据。
总结来说,当这个函数返回 True 时,意味着标准输入是从其他命令通过管道传递过来的数据,而非来自键盘的直接输入。
修改措施:
1 def checkPipedInput():
2 """
3 Checks whether input to program has been provided via standard input (e.g. cat /tmp/req.txt | python sqlmap.py -r -)
4 # Reference: https://stackoverflow.com/a/33873570
"""
5 return False
把原有的:"return hasattr(sys.stdin,"fileno") andnotos.isatty(sys.stdin.fileno())"修改为"returnFalse"。
再次运行程序,程序可以正确进行终端交互:
注意:工具使用内容请以最新版本为主。
下载和反馈
TangGo社区版本下载:
· https://tanggo.nosugar.tech/
反馈问题:
· https://tanggo.nosugar.tech/#/feedback
· 通过微信交流群反馈:关注【无糖反网络犯罪研究中心】公众号,回复“TangGo”,加入交流群进行反馈。
原文始发于微信公众号(无糖反网络犯罪研究中心):TangGo | 快捷工具箱-参数别太简单!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论