bug bounty中常见的shell命令-II
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
前言
前两天分享了一些shell的知识:bug bounty中常见的shell命令
本文就主要讲一讲基本shell的一个典型应用,本文就以一个github中的一个小工具作为例子来对其源代码进行分析
正文
这里主要对crt.sh这个脚本进行分析:
先看一下源代码:
#! /bin/bash
curl -s https://crt.sh/?q=%.$1 > /tmp/curl.out
cat /tmp/curl.out | grep $1 | grep TD | sed -e 's/<//g' | sed -e 's/>//g' | sed -e 's/TD//g' | sed -e 's/\///g' | sed -e 's/ //g' | sed -n '1!p' | httprobe | sort -u > $1-sublist.txt
cat $1-sublist.txt
先说明一下这整段bash脚本的逻辑:
检索与给定模式匹配的域名列表并将它们存储在文件中;用一句简单一点的话说,就是用命令行的形式将在crt.sh中的搜索结果存到一个文件里面了
具体来分析:
curl -s https://crt.sh/?q=%.$1 > /tmp/curl.out
curl 命令用于从 Internet 检索网页的内容。在这种情况下,网页是 https://crt.sh/?q=%.$1 ,其中 $1 是用户传递给脚本的命令行参数。-s 标志告诉 curl 以静默模式运行,这意味着它不会向控制台输出任何内容。curl 命令的输出被重定向到名为 /tmp/curl.out 的文件。
cat 命令用于显示 /tmp/curl.out 文件的内容。输出通过管道传输到 grep,后者用于搜索包含 $1 值的行。| grep $1命令的一部分过滤输出以仅包括包含 $1 的行。
然后将输出通过管道传输到另一个 grep 命令,该命令过滤输出以仅包括包含字符串“TD”(其实是html里面的标签)的行。
然后将输出通过管道传输到一系列 sed 命令,这些命令用于以各种方式修改输出。-e 标志告诉 sed 将以下字符串解释为编辑命令。各种 sed 命令删除 HTML 标记(对应源代码中的sed -e 's/<//g' | sed -e 's/>//g' )、删除正斜杠(对应源代码中的sed -e 's/\///g' )、删除空格(对应源代码中的sed -e 's/ //g')和删除字符串“TD”。
sed -n '1!p' 命令过滤输出以排除第一行。
剩余的输出通过管道传输到 httprobe 命令,该命令获取域名列表并尝试确定它们是否处于活动状态。
然后将输出通过管道传递给 sort -u,它对输出进行排序并删除重复项。最后将结果重定向到$1-sublist.txt中
最后的 cat 命令显示 $1-sublist.txt 文件的内容,其中包含经过排序和去重的活动域名列表。
参考
https://github.com/snwlvl/crt.sh/blob/master/crt.sh
往期回顾
xss研究笔记-从174篇writeup中得出的结论
SSRF研究笔记-从124篇writeup中得出的结论
你所不知道的CRLF---header中潜藏的漏洞
漏洞赏金猎人系列-如何测试设置(Setting)功能IV
漏洞赏金猎人系列-如何测试注册(Sign up)功能(IV)以及相关Tips
还没有评论,来说两句吧...