博主当成一次个人赛玩玩,没想到这次比赛的赛题类型还是很新颖的,基本都是MISC类型的题目
我这里上传了题目在百度云上,希望UU们手下留情~别让它爆了陇剑杯题目(提取码:vuno)
话不多说,直接上题解!!
使用wireshark打开其中的“Good.pcapng”流量包
发现有HTTP包,直接过滤HTTP包,再结合题目给出的提示,没有发现dns、ftp包,所以判断出是http协议攻击:
所以选择“http”协议的网络攻击
使用wireshark打开其中的“goroot.pcap”流量包
发现有HTTP包,直接过滤HTTP包,右键选择“追踪流”进入http流,
发现“cookie”部分出现JWT的类型,所以判断出是jwt认证
这个有点被坑到了
下翻,发现
直接拿去base64解码
获得:{"alg":"HS256","typ":"JWT"}{"id":10086,"MapClaims":{"aud":"admin","username":"admin"}}
拿去提交:10086#admin
结果发现是错的~
然后一个一个地跟包,发现在第十个的时候JWT有变动
直接拿去base64解码,
获得的有效信息:{"alg":"HS256","typ":"JWT"}{"id":10087,"MapClaims":{"username":"admin"}}
得到:10087#admin
使用wireshark打开其中的“goroot.pcap”流量包,随着之前的进度,一个个查看HTTP包的传递内容,直到下面的一个http包
发现有HTTP包,直接过滤HTTP包,右键选择“追踪流”进入http流,
发现“alert(“root\n”)”
所以得出黑客获取了root权限
2.4
继续跟进流量包,查看后续的POST包
这里发现了黑客通过命令传递了一大串字符,直接拿去url解码、base64解码
发现结果是直接保存为1.c文件,所以这个文件就是黑客上传的文件名.
再次跟进HTTP包,查看黑客的行为,
发现了“looter.so”文件,结合题目的提示“.so”文件,猜测就是答案。
还是继续根据流量包,
发现文件“looter.so”文件被导向/etc/pam.d/common-auth路径,猜测这里就是被修改的配置文件。
“/etc/pam.d/common-auth”
继续跟进流量包,慢慢寻找POST传递的包
发现一个文件“1.php”,猜测这个就是黑客上传的代码形成的文件。
继续跟进
获得一串十六进制代码,直接010Editor打开
得到IP:192.168.239.123
跟随3.6一样,使用010Editor在那一串十六进制代码里面发现了
“ socks5
plugin_user = 0HDFt16cLQJ
plugin_passwd = JTN276Gp”
=》0HDFt16cLQJ#JTN276Gp
发现日志存在很多404回馈,所以查看一下没有404的记录,使用python脚本跑一下就行
string=''
with open('access.log') as f:
string=f.readline()
while(string !=''):
if("404" not in string):
print(string)
string=f.readline()
平时打WEB的应该都有经验,这个“www.zip”一般放着leak的源码
=》源码文件:www.zip
同样是分析非404的数据,发现
这里有tmp,机灵的人已经拿去urldecode了
=》文件名:sess_car
=》类:SplFileObject
查看一下日志文件,
连脚本都可以不改,除了文件名不一样外~
下面三行数据就是全部的解题内容了~~~
很容易就发现,攻击参数是GET类型的?user
所以,=》攻击参数:user
对之前的数据中间的参数分别拿去base64解码,发现第二条有我们需要的
=》绝对路径:/Th4s_IS_VERY_Import_Fi1e
同理7.2,
=》IP:192.168.2.197:8888
将日志文件“access.log”拿去URL解码,或者我们也可以很明显地看出来,这就是一个bool盲注
=》手法:布尔盲注
简单查看了一下日志,发现可以直接在日志获取到结果,
得到库名:sqli 、表名flag 、字段flag
=》sqli#flag#flag
获取字段值,可以一个一个慢慢查看获取(这样比较费时间,还需要有耐心)
这里提供python脚本获取,
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()
=>flag{deddcd67-bcfd-487e-b940-1217e668c7db}
“签到”:1.1
“jwt”:2
“webshell” :3
"日志分析":4
“流量分析”:5
“内存分析”:6
“简单日志分析”:7
“SQL注入”:8
“wifi”:9
"ios":10
"机密内存":11
本次比赛上博主自己解出来的题目都在上面的WP上了,还有一些题目是提交错误次数上了三次,所以算是解题失败不计分~~~还是觉得自己有点菜鸡,比不上很多大佬