Я программирую веб-приложение с преднамеренно реализованными уязвимостями для конкуренции CTF, и я использую ASP.NET Core и Entity Framework Core с базой данных SQLite.Я хочу сделать SQL-инъекцию возможной, и для этого мне нужно как-то сделать запрос к базе данных по нескольким таблицам с помощью оператора объединения.
К сожалению, все мои попытки привели к сообщениям об ошибках.Внутренний контроллер принимает аргумент через запрос ajax, и клиент должен неправильно использовать переменную UserId
и изменить параметры в запросе ajax, чтобы получить больше информации о другой таблице.
Я пробовал несколько FromSql
подходов, но ни один из них не удался.Кто-нибудь знает, как я могу решить эту проблему?
Это код внутреннего контроллера
public JsonResult ListImagePaths(string UserId)
{
string query = $"SELECT * FROM UserImage WHERE UID == {UserId}";
var results = mContext.UserImage.FromSql(query);
return Json(results);
}
Таким образом, я делаю запрос только к таблице UserImage
.Я не нашел способ запросить две таблицы.Я попытался создать DbSet
, который состоит из атрибутов в обеих таблицах, но это тоже не сработало.
Это клиентский ajax-запрос
$(document).ready(function () {
$.ajax({
type: 'GET',
url: 'ListImagePaths/"27b988e3-77ab-41e4-b945-6ac9315a70ec"',
success: function (result){
console.log(result)
}
})
})
Вот пример UserImage таблица
Uid = 27b988e3-77ab-41e4-b945-6ac9315a70ec
Path = CloudImages / picture.jpg
Id = e802a368-229f-4ed5-ba84-42ce4da5ed0a
Вот пример таблицы AspNetUsers
Id = 81858e0d-e75f-45c5-8054-ef956e843a04
UserName = SomeGuy43
NormalizedUserName= SOMEGUY43
E-mail = myemail@somehere.com
NormalizedEmail = MYEMAIL@SOMEWHERE.COM
EmailConfirmed = 1
PasswordHash = uRGWeGWq5ZorrzgNvSuz8Q ==
SecuritySamp = RBCZDCBA3IEMPET2ZCL4MVCXW3IA3H4C
ConcurrencyStamp = 0b8873cc-ECFE-4280-a6bf-0f354242f4a4
PhoneNumber = NULL
PhoneNumberConfirmed = 0
TwoFactorEnabled = 0
LockoutEnd = 0
LockoutEnabled = 0
AccessFailedCount = 0
АватарImage = pictures / avatar.jpg
Соль = 4r1rtuji0cc
IsAdmin = 0