抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Антивирус Antivipyc

Югорские разработчики создали новый облачный антивирус, с больщой точностью определяющий вредоносные приложения. Но хорошо ли протестирован сам антивирус?

Ugra 开发人员开发了一种新的云防病毒软件,可以高度准确地检测恶意程序。 但是防病毒软件本身是否经过了良好的测试?

环境给出的是一个上传的表单,尝试上传发现会有文件正常和恶意文件两种反馈。

image-20210301132813685

上传一个源代码文件可发现网页响应时间较久,推测代码在被检测的过程中被执行了。尝试将表单中的 ext 参数改为 py 后随便上传一个 Python 脚本发现响应如下。

text
1
Не удалось проверить файл /tmp/uploads/1.py: плагин /app/plugins/py.py не найден

报错给出了上传文件的路径 /tmp/uploads/1.py 。此时的拓展名被拼接到了文件名后面形成了 /app/plugins/py.py,此时如果使用目录穿越,则可以执行其他的文件。构造一波目录穿越,使得其后缀为 ../../tmp/uploads/1,此时得到的文件名就是 /app/plugins/../../tmp/uploads/1.py。在上传的文件中构造如下脚本。

1
2
import os
os.system("cat /etc/passwd")

将其作为源代码文件上传即可得到如下内容。

text
1
ugra_who_checks_the_checker_b48847d6ef8eНе удалось проверить файл /tmp/uploads/1.py
1
ugra_who_checks_the_checker_b48847d6ef8eНе

Книга пути и достоинства daodejing

Китайская мудрость утверждает, что, чтобы не сбиться с трудного пути, необходимо употреблять достаточное количество одного витамина. Не собьётесь?

题目给出的附件中可以得到如下信息(太长了放在了 Ubuntu Pastebin)。

text
1
https://paste.ubuntu.com/p/NsTsDFrszc/

SVG Path

  • M = moveto
  • L = lineto
  • H = horizontal lineto
  • V = vertical lineto
  • C = curveto
  • S = smooth curveto
  • Q = quadratic Belzier curve
  • T = smooth quadratic Belzier curveto
  • A = elliptical Arc
  • Z = closepath

以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。

将 SVG 文件补充完整。

text
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg width="100%" height="100%" version="1.1"
xmlns="http://www.w3.org/2000/svg">

<path d="{ FILE CONTENT }" />

</svg>

使用浏览器打开可以得到如下内容。

1
ugra_grandpa_take_your_pills_or_we_will_beat_up_your_61e33e4865869f4c

ЦНИИВТ

Устроился системным администратором в Центральный НИИ вычислительной техники. На второй неделе работы обнаружил в локальной сети какой-то странный компьютер. Поспрашивал у коллег — все впервые слышат о нём, даже не знают, на каком этаже он стоит.

Искал пару дней, в итоге нашёл его в подсобке под слоем пыли — такое ощущение, что лет 30 к нему никто не прикасался. Самое удивительное — это то, что он каким-то образом подключен к интернету, и на нём даже открыт порт. При подключении просит пароль, я его раздобыл в архиве. Но вместо данных сервер шлёт какой-то мусор.

Поможете разобраться? Вдруг там что-то важное!

  • Пароль: 9bd0f869bb947165bd66ba2e7f5a5aeb

写个脚本把控制台发送的内容接收回来。

1
2
3
4
5
6
7
8
9
from pwn import *

connection = remote("soviet.q.2021.ugractf.ru", 17792)
connection.recvline()
connection.sendline("9bd0f869bb947165bd66ba2e7f5a5aeb")
content = connection.recvall()
file = open("out.bin", "bw")
file.write(content)
file.close()

可以得到如下内容。

text
1
ÛßßßßßÛ ß Ûß  ÜÜß ÜÜßÛÛßÜÜÛ ÜßÜ Û ÛßßßßßÛÛ ÛÛÛ Û ßßÛÜßßßÜ ß ÛÜ ßÛÛß    Üß  Û ÛÛÛ ÛÛ ßßß Û ß  ßßÜß ÜßÜÛ  ß Üß ßÛßÜßÛ Û ßßß Ûßßßßßßß Û ÛÜÛ ßÜÛÜßÜÛÜÛ ßÜß Û ß Û ßßßßßßß  Ü ÜÛßÜÜÛß ßßÛ ßß ßÛßßÜßÜÛÛ ßÜÜ  ßÜÛÜÛ ßÜÜ ßÜßßÛßÜÛÛÛßÜßßßÜÛÜÜÛßÛÛ ßÜßßÜÜß Ü Û  Ü ÛÜ ß ßßÛ ÜÜßÛßÜÛ ÜßÛÜßÜÛÛÜß ß ßÛßßÛÜßÜÜÛÜÛÛÛ ÜßÛÛß ßÛÛ ÛÜßÛßÛÛ ÛÛ  ßÛßÜÛ ÜßÜßÜÜÜÜßßÜÛßßßÛÛß   ÜÛ ßÛÛßÛßÜ ÜÜßÛßÛßßßÜÜßÛÜß ÜÜÛ  Û ßÛßÜÛÛÜÜß Ü ÛßÛ ÜßÜßÜÛÛÜÜÜÜÜÜ ÛÛßÜÛ  ßÛß ßÛÛÜßßßÛÛÛÜ ÛÛÛ ÛßÛ ßÛ  ÜÛ   ß ÜÛÛß Ü ÜÛßß ßßÜÜ ÜÛ  Û ß  Ü ßÛ ß  Ü ßÛ ÛÛ  Ü  ßÜ  ßßÜÛÜßÜÜßÜÜÜÜÜÜßß ßß  ÛÜÜßÜ  ÛÛÜÜ ßÛÜÛÜßÛÛßÜ ßÜÜÛÛ Û  ÜÜÛÛß Ü ßÛßß Üß ß ÜÛÛÜÜÜÜÛÛßÛßÜ   ß Ü ßÛÜÛßßÛß     ÜÛÜßß ßÜÜÛÛ ÜÛßßÜßÜßÜÛßßÜ   Ûß ÜßßÛÛßÛ  ÜÛßßß ÛÛÜ Û ÜÛß     ß ÛßßÜ ß ÜÛ ÜÛßÛÜ Ü  ÜÛßßÜÛßßßÛÜÛ ßÛßßßßßÛ ÜßÛßÛÜÜÜßßÛÜßÜÜÛ ßÜß  ßÜÛ ß ÛÛ Ü Û ÛÛÛ Û  Ü ÜßÜß ÜÛÛß  ÛÜ Ü ÜÜßßßßÛßßß  ÜÛÛ ßßß Û  ÜÛßÛßßÛ ßÛÛ  ßÛÛÜÜßÛ ÜßßÛÛßß ÛßÜßßßßßßß  ßßßß     ßßßß ß ßßßß  ß  ß ßßß  

总共有 861 个字符,很容易求得其两个真约数为 21、41。猜测其是一个二维码,修改脚本如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from pwn import *

connection = remote("soviet.q.2021.ugractf.ru", 17792)
connection.recvline()
connection.sendline("9bd0f869bb947165bd66ba2e7f5a5aeb")
content = connection.recvall()
print("[+] Recieved {}".format(content))
content = content.replace(b"\xdb", b"\xe2\x96\x88") # █
content = content.replace(b"\xdf", b"\xe2\x96\x80") # ▀
content = content.replace(b"\xdc", b"\xe2\x96\x84") # ▄
content = content.decode()
print("[*] Content parsed as {}".format(content))
for x in range(21):
print(content[x * 41 : (x + 1) * 41])

可以得到如下结果。

text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
█▀▀▀▀▀█ ▀ █▀  ▄▄▀ ▄▄▀█▄▀█ █ ▄▀▄ █ █▀▀▀▀▀█
█ ███ █ ▀▀█▄▀▀▀▄ ▀ █▄ ▀█▄▀ ▄▀ █ ███ █
█ ▀▀▀ █ ▀ ▀▀▄▀ ▄▀▄█▀█▀ ▄▀ ▀█▀▄▀█ █ ▀▀▀ █
▀▀▀▀▀▀▀ █ █▄█ ▀▄█▄▀▄█▄█ ▀▄▀ █ ▀ █ ▀▀▀▀▀▀▀
▄ ▄█▀▄▄█▀ ▀▀█ ▀▀ ▀█▀▀▄▀▄██ ▀▄▄ ▀▄█▄█ ▀
▄▄ ▀▄▀▀█▀▄███▀▄▀▀█▄█▄▄█▀██ ▀▄▀▀▄▄▀ ▄ █ ▄
█▄ ▀ ▀▀█ ▄▄▀█▀▄█ ▄▀█▄▀▄█▀▄▀ ▀ ▀█▀▀█▄▀▄▄█
▄███ ▄▀█▀▀ ▀██ █▄▀█▀█▀▀█▀ ▀█▀▄█ ▄▀▄▀▄▄▄▄
▀▀▄█▀▀▀██▀ ▄█ ▀██▀ ▀▄ ▄▄▀█▀█▀█▀▄▄██▄▀ ▄
▄█▀ █ ▀█▀ ██▄▄▀ ▄ █▀█ ▄█▄ ▄██▄▄█▄▄▄ ███▄█
▀▀▀ ▀▀█▄▀▀▀███▄ ███ █▄█ ▀█ ▄█ ▄▀▄▄█▀
▄ ▄█▀ ▀▀▄▄ ▄█ █ ▀▀ ▄ ▀█ █ ▀█ █▄ ▄
▀▄ ▀▀▄█▄ ▄▄▀▄▄▄▄▄▄▀▀ ▀█ █▄▄ ▄▄ ██▄▄ ▀█
▄█▄▀██▀▄ ▀▄▄██ █ ▄▄█▀▀ ▀ ▀█▀▀ ▄▀ ▀ ▄██▄▄
▄███▀▀▀▄ ▀▀▄▄██▄██▀█▀ ▄ ▄█▄▀▀ ▀▄▄██ ▄
█▀▀▄▀▄▀▄█▀▀▄ █▀ ▄▀▀██▀█ ▄█▀▀▀ ██▄ █ ▄█
▀ ▀ █▀▀▄ ▀ ▄█ ▄█ █▄ █ ▄█▀▀▄█▀▀▀█▄█ ▀
█▀▀▀▀▀█ ▄▀█▀█▄▄▄▀▀█▄▀▄▄█ ▀▄▀ ▀▄█ ▀ ██ ▄
█ ███ █ ▄ ▄▀▄▀ ▄██▀ █▄ ▄ ▄▄▀▀▀▀█▀▀▀ ▄█
█ ▀▀▀ █ ▄█▀█▀▀█▀▀██ ▄▀██▄▄▀█ ▄▀▀██▀▀ █▀▄
▀▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀ ▀▀▀▀ ▀ ▀ ▀▀▀

Word 稍微排一下,可以得到如下图片。

Parse QR Code 即可以得到 flag。

1
ugra_soviet_technologies_are_eternal_369863efd250

Новейшая разработка developers

Это исходный код программного обеспечения, разработанного очень крутыми разработчиками. Но иногда и они допускают ошибки. Ну так, по невнимательности.

这是非常出色的开发人员开发的软件的源代码。 但是有时候他们也会犯错误。 好吧,无意间。

考点: https://git-scm.com/docs/git-fsck

使用 git fsck 可以 dangling 出一个 commit。此时查看相关 commit 可得到 flag。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
commit 7f3b10fd4fdf9a74cab201e4f3f8ece5cf9e4833
Author: Validian <[email protected]>
Date: Wed Dec 11 06:00:30 2019 +0845

added info.txt.

diff --git a/info.txt b/info.txt
new file mode 100644
index 0000000..d3849f0
--- /dev/null
+++ b/info.txt
@@ -0,0 +1,7 @@
+If you are reading this, I am definitely dead by now.
+
+I also know that by reaching this file, you have demonstrated
+the best of your ability and courage. Here is the key to my
+lifetime secret: ugra_the_yellow_purse_6f557934d3d1f541
+
+You will understand what to do next. Good luck!
1
ugra_the_yellow_purse_6f557934d3d1f541

评论