banner
Hi my new friend!

碎碎念

Scroll down

powershell小命令

  1. 密码的原来自己解压缩包的python应用想要使用python -m http.server需要手动配置防火墙策略

  2. 构造图片码的方法(/b是指使用二进制解析)

    1
    copy /b normal.jpg + shell.php malicious.jpg
  3. powershell查询hash

    1
    Get-FileHash filepath
  4. powershell检查数字签名 有效值

    1
    Get-AuthenticodeSignature Filepath

git命令

git clone代理

1
git -c http.proxy=socks5://127.0.0.1:20170 clone

ssh key

生成过程

生成密钥对

1
ssh-keygen -t ed25519 -C "注释"

然后判断要不要输入密码,直接回车就是无密码

需要注意的是这个命令生成的公私钥都是在本地的

上传公钥的命令

1
ssh-copy-id -i ~/.ssh/123.pub root@ip

或者直接传入公钥

1
cat ./id_rsa.pub >> ~/.ssh/authorized_keys

成功以后就能添加密钥

公钥登陆

1
ssh -i ~/.ssh/123.pub root@ip

或者使用config文件来配置快速登录,找到目录

1
~/.ssh/config

添加

1
2
3
4
Host
HostName ip
IdentityFile ~/.ssh/123
User root

awk速查

  1. -F参数的含义

    -F'[= ]'是awk的字段分隔符参数:**# 需要注意的是 awk默认使用空格来进行分割 **

    • -F:指定字段分隔符(Field separator)
    • '[= ]':这是一个正则表达式,表示按等号=或空格``进行分割
    1
    awk -F '[= ]' '{print $1}'
  2. //使用正则表达式来进行定位 提到函数substr()

    1
    ip a | awk '/^[0-9]+:/{ip=substr($2,1,length($2)-1);print ip}'

    substr()命令解析

    substr(字符串, 开始位置, 长度)

  3. -f读取awk命令文件

  4. -v定义变量传入

    1
    awk -v ip='0.0.0.0' '{print ip}' file
  5. awk都是按照file的按行读入,每一行都会执行一次

  6. $n是分割开来的第几个,从1开始

    如果是本来就分割好的就能直接使用$n

    1
    df -h | awk '{print $1 $3}'

    可以自己分割然后在使用$n

    1
    awk -F '[= ]' '{print $1}'
  7. 除了读取特定文件 awk还可以读取当前文件夹下的所有文件,但是必须是文件不能有文件夹 否则会报错

    就是一个*

    1
    awk '/20202020/{print $0}' *
  8. 默认按照空格切分,例如以下例子。(需要注意的是awk关注单双引号闭合的情况,只会关注空格)

    1
    220.181.108.153 - - [20/Dec/2012:14:11:03 +0800] "GET /clim/climintro.jsp HTTP/1.1" 200 3270 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"

    $0是一整行,$1是第一个-,$7是200

  9. 如果只在某个元素中进行匹配的方法

    1
    2
    awk '$7 ~ /\.jsp/{print $7}' *(当前目录下所有文件)/filename
    awk 'match($7,/\.jsp/,a){print $7}' *
  10. 如果是使用正则匹配完希望打印匹配到的前后一定距离的东西(例如是在一个url中的最后一个文件,匹配后缀和前面的最后一个/) 使用函数match()

    1
    2
    3
    4
    awk 'match($7,/\/.*\.jsp/,a){print a[0]}' # 贪婪匹配 会匹配前面全部的/,不精确 -> /a/c/listClassification.jsp


    awk '{n=split($7, a, "/"); if(a[n] ~ /\.jsp$/) print a[n]}' file #精确 --> listClassification.jsp

    命令解析

    1
    2
    3
    4
    5
    awk '{
    n=split($7, a, "/");
    if(a[n] ~ /\.jsp$/)
    print a[n]
    }' file

n=split($7, a, "/"); 是对字符串$7进行按照/的分组,分完的组在a中,同时n是返回元素的个数

if(a[n] ~ /\.jsp$/) 和上面一样的逻辑,对某一个元素进行正则

  1. match()函数解析

    对于这样一个例子:

    1
    aaa/aaaa/vvv//sss/dsadw/vasdac/123.jsp?aaa=ssxx&xxx=asadw

    如果仅仅想要匹配出123.jsp但是不要其他内容,就要使用正则表达式

    1
    match($7,/\/([^/]*\.jsp)/,a);print a

    正则表达式的解析: /\/([^/*].jsp)/

    (1) /.*/两侧的/使用来表示这个是一个正则表达式

    (2) [^/]匹配不是/的内容,^是取反的意思

    (3) 也就是说这个匹配/开始然后filename.jsp的内容

  2. 如果匹配多个(使用|) 并且要删去某些匹配到脏东西的(多个条件用&&)

    1
    2
    # 必须在linux环境下!或者是git bash
    awk '/limit|/select|from|contract/{if($0 !~ /selectresult/ && $0 ~ /\.jsp/)}' *
  3. 按照某个值进行排序然后输出(提到函数)

    1
    2
    3
    4
    5
    6
    7
    8
    awk '/select|limit|from|concat/ && !/selectResult/ {
    count[$1]++
    }
    END {
    for(ip in count) {
    print count[ip], ip
    }
    }' ex180223.log | sort -nr

    命令解析: sort

    -n按照数字排序

    -r降序排序

    -u 去重

    -k 指定排序字段

  4. 如何按照时间进行排序?

    1
    2
    3
    4
    5
    6
    # 如果实在同一天可以直接把时间转化为一个肉眼可见的数字
    awk '/banner_home.jpg/
    {n=split($4,time1,":");
    time2=time1[n]+time1[n-1]*100+time1[n-2]*10000;
    print(time2,$0)}
    ' ex180223.log | sort -n | head

    image-20251125212408434

    手动解析

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    awk '/banner_home.jpg/{
    # 时间格式: 23/Feb/2018:09:04:58
    split($4, datetime, "[/:]");
    day = datetime[1];
    month = datetime[2];
    year = datetime[3];
    hour = datetime[4];
    minute = datetime[5];
    second = datetime[6];

    # 月份名称转数字
    month_num = (month=="Jan") ? 1 : (month=="Feb") ? 2 :
    (month=="Mar") ? 3 : (month=="Apr") ? 4 :
    (month=="May") ? 5 : (month=="Jun") ? 6 :
    (month=="Jul") ? 7 : (month=="Aug") ? 8 :
    (month=="Sep") ? 9 : (month=="Oct") ? 10 :
    (month=="Nov") ? 11 : 12;

    # 创建可排序的时间戳
    timestamp = sprintf("%04d%02d%02d%02d%02d%02d", year, month_num, day, hour, minute, second);
    print timestamp, $0;
    }' ex180223.log | head
  5. 其实还有新的办法使用函数 使用函数gsub()

    这是一个全局替换函数,可以吧匹配处理啊的东西全部替换,和 **sub()**的区别就是sub()只匹配第一个

    1
    aaa = gsub(正则表达式,需要替换后的内容,需要替换的部分) # 会在原来的数据上直接修改,aaa是记录替换多少个值
    1
    awk '/banner_home.jpg/{aa=gsub(":","",$4);print $4}' filename | head

    image-20251125213958485

grep速查

  1. 在都是文本文件的文件夹中查找'aaa'

    1
    grep -r 'aaa' fold
    1
    2
    3
    4
    fold
    | - - 1.txt
    | - - 2.txt
    | - - 3.txt
  2. 如果希望加上正则表达式可以使用-E,如果要搜索文件夹使用-r
    如果实在文件夹中使用正则表达式使用-rE

CTF观察

  1. string居然可以查pcap

    1
    string 1.pcap | grep flag

GPG公钥过期解决方法

  1. 类似报错

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Err:9 https://apt.v2raya.org v2raya InRelease                                                                             
    The following signatures were invalid: EXPKEYSIG 354E516D494EF95F mzz2017 (apt) <mzz@tuta.io>
    Fetched 11.1 MB in 3s (4,158 kB/s)
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    280 packages can be upgraded. Run 'apt list --upgradable' to see them.
    W: https://download.docker.com/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
    W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://apt.v2raya.org v2raya InRelease: The following signatures were invalid: EXPKEYSIG 354E516D494EF95F mzz2017 (apt) <mzz@tuta.io>
    W: Failed to fetch https://apt.v2raya.org/dists/v2raya/InRelease The following signatures were invalid: EXPKEYSIG 354E516D494EF95F mzz2017 (apt) <mzz@tuta.io>
    W: Some index files failed to download. They have been ignored, or old ones used instead.
    1. 区分是否是小众软件,如果是的话(像这个v2raya,就可以直接去官网上寻找公钥地址)

      1
      2
      rm /etc/apt/keyrings/v2raya.asc
      wget -qO - https://apt.v2raya.org/key/public-key.asc | sudo tee /etc/apt/keyrings/v2raya.asc
    2. 禁用更新该原件源

      1
      2
      # 删除 /etc/apt/sources.list.d 中的文件
      sudo rm -f /etc/apt/sources.list.d/v2raya.list

碎碎念

  1. 配置完环境变量使用命令source /bin/profile激活我才意识到原来一直使用的python环境激活source /venv/bin/activate中的这个activate居然也是一个文本文件,一直因为是一个看着还行文件

  2. webpack扒对应目标函数注入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    window.c = c;
    window.res = "";
    window.flag = false;
    c = function(r){
    if(flag){
    window.res = window.res + `"${r.toString()}"` + ":" + (e[r] + "" ) + ",";
    }
    return window.c(r);
    }
其他文章
cover
fastjson_1.2.24-rce
  • 25/09/23
  • 22:26
  • vulhub漏洞复现
目录导航 置顶
  1. 1. powershell小命令
  2. 2. git命令
  3. 3. ssh key
    1. 3.1. 生成过程
  4. 4. awk速查
  5. 5. grep速查
  6. 6. CTF观察
  7. 7. GPG公钥过期解决方法
  8. 8. 碎碎念
请输入关键词进行搜索