首页 > 数据库 >Go黑帽子|文件搜索和数据库矿工

Go黑帽子|文件搜索和数据库矿工

时间:2024-06-14 11:34:02浏览次数:22  
标签:Tables return err nil 数据库 db dbminer Go 矿工

文件搜索

filepath.Walk遍历目录,regexp.MustCompile来匹配关键字

package main

import (
	"fmt"
	"log"
	"os"
	"path/filepath"
	"regexp"
)

var regexexs = []*regexp.Regexp{
	regexp.MustCompile(`(?i)user`),
	regexp.MustCompile(`(?i)password`),
	regexp.MustCompile(`(?i)kdb`),
	regexp.MustCompile(`(?i)login`),
}

func walkFn(path string, info os.FileInfo, err error) error {
	for _, r := range regexexs {
		if r.MatchString(path) {
			fmt.Printf("[+] HIT: %s\n", path)
		}
	}
	return nil
}

func main() {
	root := os.Args[1]
	if err := filepath.Walk(root, walkFn); err != nil {
		log.Fatal(err)
	}
}

数据库矿工

package main

import (
	"database/sql"
	"fmt"
	"github.com/blackhat-go/bhg/ch-7/db/dbminer"
	_ "github.com/go-sql-driver/mysql"
	"log"
	"os"
)

type MySQLMiner struct {
	Host string
	Db   sql.DB
}

func New(host string) (*MySQLMiner, error) {
	m := MySQLMiner{Host: host}
	err := m.connect()
	if err != nil {
		return nil, err
	}
	return &m, nil
}

func (m *MySQLMiner) connect() error {

	db, err := sql.Open("mysql", fmt.Sprintf("root:root@tcp(%s:3306)/information_schema", m.Host))
	if err != nil {
		log.Panicln(err)
	}
	m.Db = *db
	return nil
}

func (m *MySQLMiner) GetSchema() (*dbminer.Schema, error) {
	var s = new(dbminer.Schema)

	sql := `SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM columns
	WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys')
	ORDER BY TABLE_SCHEMA, TABLE_NAME`
	schemarows, err := m.Db.Query(sql)
	if err != nil {
		return nil, err
	}
	defer schemarows.Close()

	var prevschema, prevtable string
	var db dbminer.Database
	var table dbminer.Table
	for schemarows.Next() {
		var currschema, currtable, currcol string
		if err := schemarows.Scan(&currschema, &currtable, &currcol); err != nil {
			return nil, err
		}

		if currschema != prevschema {
			if prevschema != "" {
				db.Tables = append(db.Tables, table)
				s.Databases = append(s.Databases, db)
			}
			db = dbminer.Database{Name: currschema, Tables: []dbminer.Table{}}
			prevschema = currschema
			prevtable = ""
		}

		if currtable != prevtable {
			if prevtable != "" {
				db.Tables = append(db.Tables, table)
			}
			table = dbminer.Table{Name: currtable, Columns: []string{}}
			prevtable = currtable
		}
		table.Columns = append(table.Columns, currcol)
	}
	db.Tables = append(db.Tables, table)
	s.Databases = append(s.Databases, db)
	if err := schemarows.Err(); err != nil {
		return nil, err
	}

	return s, nil
}

func main() {
	mm, err := New(os.Args[1])
	if err != nil {
		panic(err)
	}
	defer mm.Db.Close()

	if err := dbminer.Search(mm); err != nil {
		panic(err)
	}
}

标签:Tables,return,err,nil,数据库,db,dbminer,Go,矿工
From: https://www.cnblogs.com/z5onk0/p/18247505

相关文章

  • 国产数据库介绍~目前最火的五款国产数据库,看看都知道哪些?
    一、TiDB:分布式NewSQL数据库简介TiDB是一款开源的分布式NewSQL数据库,由PingCAP公司开发。它采用了分布式事务和强一致性的设计理念,结合了传统关系型数据库和NoSQL的优点,能够满足高并发、大规模数据存储和实时分析的需求。优点分布式架构:TiDB采用分布式架构,可以水平扩展,支......
  • 实用软件下载:硕思LOGO设计师最新安装包及详细安装教程
    ​硕思Logo设计师是一款操作灵活简单,且功能强大的logo制作软件,它可以通过简单的点击就可以为网站、博客、论坛和邮件创建专业的logo、条幅、按钮、标题、图标和签名等。 该软件提供了很多精心设计的模板和丰富的资源,为更好的创建logo艺术作品,用户可以导入图片并将SWF电影反编......
  • Go黑帽子|TCP扫描器和代理
    TCP扫描器在worker函数中通过net.Dial测试端口连通,并把worker放到goroutine中运行,port作为管道在主程序和携程中传递扫描信息packagemainimport( "fmt" "net" "sort")funcworker(portschanint,resultschanint){ forp:=rangeports{ address:=fmt.Spr......
  • 实时api接入指南|1688商品详情实时数据接口(1688.item_get)图片、库存、规格、销量等数
    接入1688商品详情实时数据接口(1688.item_get),涉及到图片、库存、规格、销量等重要信息的获取,这些数据对于电商平台来说至关重要,可用于商品展示、分析市场趋势、优化库存管理等。下面将详细讨论如何接入此API接口,并有效利用返回的数据:注册与创建应用账号注册:需要进行账号注册......
  • 数据仓库与数据库(一)--区别
    数据仓库与数据库的区别,实际上就是OLTP(联机事物处理过程),也称为面向交易的处理过程,和OLAP(联机分析处理)的区别。可以理解为数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、决策需要而产生的,它绝不是所谓的大型数据库。            设......
  • MongoDB分片(windows电脑系统)
    系统版本:windows10专业版MongoDB:4.4.24分片架构从图中可以看出,分片集群中主要由三个部分组成,即分片服务器(Shard)、路由服务器(Mongos)以及配置服务器(ConfigServer)组成。其中,分片服务器有三个,即Shard1、Shard2、Shard3;路由服务器有两个,即Mongos1和Mongos2;配......
  • MongoDB基本操作(Windows)
    本篇博文介绍知识目标熟悉数据库和集合操作本篇目标掌握MongoDB的部署掌握文档的插入、更新、删除以及查询操作一、MongoDB的安装部署在浏览器输入网址:www.mongodb.com  2. 点击“TRYFREE”或“GETSTARTED”按钮,进入MongoDB的下载页面;3. 在下载页面中,选择适......
  • MongoDB副本集部署(windows)
    环境准备本教程演示mongodb4.4副本集部署(一主两从,伪分布式)节点配置主节点localhost:27017主节点1localhost:27018从节点2localhost:27019 每一个节点(实例)都创建对应的数据文件(data)和日志文件(log)。例如:动实例(服务)语法:bin>mongod-port端口号-dbpath数据路径-logpat......
  • 提取SQL Server 数据库数据字典
    SELECT表名=CASEWHENA.COLORDER=1THEND.NAMEELSE''END,表备注=CASEWHENA.COLORDER=1THENISNULL(F.VALUE,'')ELSE''END,列序号=A.COLORDER,列名称=A.NAME,标识=CASEWHENCOLUMNPROPERTY(A.ID,A.NAME,'ISIDENTITY')=1THE......
  • 开始预习数据库第二天
    你怎么知道我马上要考的数据库(2)开始时间 2024-06-13 22:37:10结束时间 2024-06-13 23:47:11前言:吃完饭了好像这位姐姐的p2我们学校不考,主要是第一二三范式,她讲的也比较少。第一范式就是,主属性不可分,也就是说学校不能分为初中和高中,这样就满足第一范式,一般都满足第一范式......