powershell小命令
密码的原来自己解压缩包的python应用想要使用
python -m http.server需要手动配置防火墙策略构造图片码的方法(/b是指使用二进制解析)
1
copy /b normal.jpg + shell.php malicious.jpg
powershell查询hash
1
Get-FileHash filepath
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 | Host |
awk速查
-F参数的含义-F'[= ]'是awk的字段分隔符参数:**# 需要注意的是 awk默认使用空格来进行分割 **-F:指定字段分隔符(Field separator)'[= ]':这是一个正则表达式,表示按等号=或空格``进行分割
1
awk -F '[= ]' '{print $1}'
//使用正则表达式来进行定位 提到函数substr()1
ip a | awk '/^[0-9]+:/{ip=substr($2,1,length($2)-1);print ip}'
substr()命令解析substr(字符串, 开始位置, 长度)
-f读取awk命令文件-v定义变量传入1
awk -v ip='0.0.0.0' '{print ip}' file
awk都是按照file的按行读入,每一行都会执行一次
$n是分割开来的第几个,从1开始如果是本来就分割好的就能直接使用
$n1
df -h | awk '{print $1 $3}'
可以自己分割然后在使用
$n1
awk -F '[= ]' '{print $1}'
除了读取特定文件 awk还可以读取当前文件夹下的所有文件,但是必须是文件不能有文件夹 否则会报错
就是一个
*1
awk '/20202020/{print $0}' *
默认按照空格切分,例如以下例子。(需要注意的是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如果只在某个元素中进行匹配的方法
1
2awk '$7 ~ /\.jsp/{print $7}' *(当前目录下所有文件)/filename
awk 'match($7,/\.jsp/,a){print $7}' *如果是使用正则匹配完希望打印匹配到的前后一定距离的东西(例如是在一个url中的最后一个文件,匹配后缀和前面的最后一个/) 使用函数
match()1
2
3
4awk '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
5awk '{
n=split($7, a, "/");
if(a[n] ~ /\.jsp$/)
print a[n]
}' file
n=split($7, a, "/"); 是对字符串$7进行按照/的分组,分完的组在a中,同时n是返回元素的个数
if(a[n] ~ /\.jsp$/) 和上面一样的逻辑,对某一个元素进行正则
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的内容如果匹配多个(使用
|) 并且要删去某些匹配到脏东西的(多个条件用&&)1
2# 必须在linux环境下!或者是git bash
awk '/limit|/select|from|contract/{if($0 !~ /selectresult/ && $0 ~ /\.jsp/)}' *按照某个值进行排序然后输出(提到函数)
1
2
3
4
5
6
7
8awk '/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指定排序字段如何按照时间进行排序?
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
手动解析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22awk '/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其实还有新的办法使用函数 使用函数
gsub()这是一个全局替换函数,可以吧匹配处理啊的东西全部替换,和 **
sub()**的区别就是sub()只匹配第一个1
aaa = gsub(正则表达式,需要替换后的内容,需要替换的部分) # 会在原来的数据上直接修改,aaa是记录替换多少个值
1
awk '/banner_home.jpg/{aa=gsub(":","",$4);print $4}' filename | head

grep速查
在都是文本文件的文件夹中查找
'aaa'1
grep -r 'aaa' fold
1
2
3
4fold
| - - 1.txt
| - - 2.txt
| - - 3.txt如果希望加上正则表达式可以使用
-E,如果要搜索文件夹使用-r
如果实在文件夹中使用正则表达式使用-rE
CTF观察
string居然可以查pcap
1
string 1.pcap | grep flag
GPG公钥过期解决方法
类似报错
1
2
3
4
5
6
7
8
9
10
11Err: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.区分是否是小众软件,如果是的话(像这个v2raya,就可以直接去官网上寻找公钥地址)
1
2rm /etc/apt/keyrings/v2raya.asc
wget -qO - https://apt.v2raya.org/key/public-key.asc | sudo tee /etc/apt/keyrings/v2raya.asc禁用更新该原件源
1
2# 删除 /etc/apt/sources.list.d 中的文件
sudo rm -f /etc/apt/sources.list.d/v2raya.list
碎碎念
配置完环境变量使用命令
source /bin/profile激活我才意识到原来一直使用的python环境激活source /venv/bin/activate中的这个activate居然也是一个文本文件,一直因为是一个看着还行文件webpack扒对应目标函数注入
1
2
3
4
5
6
7
8
9window.c = c;
window.res = "";
window.flag = false;
c = function(r){
if(flag){
window.res = window.res + `"${r.toString()}"` + ":" + (e[r] + "" ) + ",";
}
return window.c(r);
}