Tweaks
This commit is contained in:
parent
39de993483
commit
8f3a5f4ce7
8
demo.typ
8
demo.typ
@ -6,12 +6,15 @@
|
|||||||
date: datetime(year: 2024, month: 5, day: 27),
|
date: datetime(year: 2024, month: 5, day: 27),
|
||||||
author: "Maxime Augier",
|
author: "Maxime Augier",
|
||||||
indications: [
|
indications: [
|
||||||
Indications:
|
|
||||||
- Ce test doit être réalisé en maximum *45 minutes*.
|
- Ce test doit être réalisé en maximum *45 minutes*.
|
||||||
|
|
||||||
- Aucun document n'est admis, excepté une page A4 (recto-verso) de
|
- Aucun document n'est admis, excepté une page A4 (recto-verso) de
|
||||||
résumé personnel
|
résumé personnel
|
||||||
|
|
||||||
- L'utilisation de tout type de matériel électronique est interdite.
|
- L'utilisation de tout type de matériel électronique est interdite.
|
||||||
|
|
||||||
- Ne pas oublier d'inscrire votre nom et prénom à l'endroit prévu à cet effet.
|
- Ne pas oublier d'inscrire votre nom et prénom à l'endroit prévu à cet effet.
|
||||||
|
|
||||||
- Merci de respecter un silence absolu jusqu'à ce que le dernier étudiant
|
- Merci de respecter un silence absolu jusqu'à ce que le dernier étudiant
|
||||||
aie rendu sa copie
|
aie rendu sa copie
|
||||||
],
|
],
|
||||||
@ -20,13 +23,14 @@ Indications:
|
|||||||
|
|
||||||
= Web
|
= Web
|
||||||
|
|
||||||
|
|
||||||
Vous opérez l’infrastructure d'une association de hackers amateurs, et remarquez un comportement étrange sur votre serveur web.
|
Vous opérez l’infrastructure d'une association de hackers amateurs, et remarquez un comportement étrange sur votre serveur web.
|
||||||
|
|
||||||
Vous lisez les logs de votre serveur web, et observez plusieurs requêtes suspectes, par exemple l’URL suivante :
|
Vous lisez les logs de votre serveur web, et observez plusieurs requêtes suspectes, par exemple l’URL suivante :
|
||||||
|
|
||||||
`https://hackerz-club.ch/forum/browse.php?category=XSS&sort=post_date+union+select+%2A+from+users`
|
`https://hackerz-club.ch/forum/browse.php?category=XSS&sort=post_date+union+select+%2A+from+users`
|
||||||
|
|
||||||
#question[Quel est le nom usuel de la vulnérabilité exploitée
|
#question[Quel est le *nom usuel* de la vulnérabilité exploitée
|
||||||
ci dessus ?][Injection SQL (dans une clause ORDER BY)]
|
ci dessus ?][Injection SQL (dans une clause ORDER BY)]
|
||||||
|
|
||||||
#question(points: 2)[Quel est l'effet de l'attaque ?][Le vol de la table `users` de la base de données]
|
#question(points: 2)[Quel est l'effet de l'attaque ?][Le vol de la table `users` de la base de données]
|
||||||
|
43
exam.typ
43
exam.typ
@ -1,10 +1,29 @@
|
|||||||
#let qctr = counter("question")
|
#let qctr = counter("question")
|
||||||
|
#let pctr = counter("points")
|
||||||
|
|
||||||
#let french_month = ("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
|
#let french_month = ("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
|
||||||
|
|
||||||
|
#let points_counter(h) = {
|
||||||
|
// Find the first heading at a level equal or higher than this one
|
||||||
|
let headings_after = query(selector(heading)
|
||||||
|
.after(h.location())
|
||||||
|
).filter(nh => nh.level >= h.level);
|
||||||
|
|
||||||
|
let start_value = pctr.at(h.location())
|
||||||
|
let stop_value = if headings_after.len() == 0 { pctr.final() }
|
||||||
|
else { pctr.at(headings_after.last().location()) }
|
||||||
|
stop_value.at(0) - start_value.at(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let show_points(pts) = [#pts] + if pts < 2 { " pt" } else { " pts" }
|
||||||
|
|
||||||
|
// Rend les réponses visibles seulement si compilé avec `--input grading=true`
|
||||||
|
#let grading(content) = if sys.inputs.at("grading", default: "solution") == "solution" { set text(fill: olive); content } else { hide(content) }
|
||||||
|
|
||||||
#let exam(title: "Exam", course: none, date: none, class: none,
|
#let exam(title: "Exam", course: none, date: none, class: none,
|
||||||
author: none, subtitle: none, indications: none, doc) = {
|
author: none, subtitle: none, indications: none, doc) = {
|
||||||
|
|
||||||
|
{
|
||||||
set text(font: "Montserrat")
|
set text(font: "Montserrat")
|
||||||
|
|
||||||
let date = if date == none { datetime.today() } else { date };
|
let date = if date == none { datetime.today() } else { date };
|
||||||
@ -23,20 +42,30 @@ author: none, subtitle: none, indications: none, doc) = {
|
|||||||
v(3%)
|
v(3%)
|
||||||
|
|
||||||
line(length: 100%, stroke: luma(80))
|
line(length: 100%, stroke: luma(80))
|
||||||
|
v(3%)
|
||||||
|
|
||||||
text(size: 14pt, indications)
|
text(size: 16pt, "Indications :")
|
||||||
|
{
|
||||||
|
set text(size: 12pt)
|
||||||
|
set list(marker: "●", indent: 2em, body-indent: 1em)
|
||||||
|
indications
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
pagebreak()
|
pagebreak()
|
||||||
|
|
||||||
|
set text(font: "Carlito", size: 12pt)
|
||||||
|
show heading: h => pad(bottom: 0.5em, text(fill: eastern, size: 16pt, weight: "light", h.body + [ (#show_points(points_counter(h)))]))
|
||||||
doc
|
doc
|
||||||
};
|
};
|
||||||
|
|
||||||
#let question(points: 1, q, a) = {
|
#let question(points: 1, q, a) = {
|
||||||
let pts = text(weight: "bold",
|
context pctr.step()
|
||||||
[#points] + if points < 2 { "pt" } else { "pts" });
|
let pts = strong([(#show_points(points))]);
|
||||||
|
|
||||||
context { qctr.step(); qctr.display() }
|
let num = context { qctr.step(); qctr.display() }
|
||||||
q
|
[#num) #q #pts]
|
||||||
|
let answ_block = block(width: 100%, inset: 1em, grading(a));
|
||||||
|
block(stroke: black, answ_block)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user