diff --git a/CTFd/admin.py b/CTFd/admin.py index 05a18b39..5343f350 100644 --- a/CTFd/admin.py +++ b/CTFd/admin.py @@ -428,6 +428,15 @@ def init_admin(app): json['solves'].append({'id':x.id, 'chal':x.chal.name, 'chalid':x.chalid,'team':x.teamid, 'value': x.chal.value, 'category':x.chal.category, 'time':unix_time(x.date)}) return jsonify(json) + + @app.route('/admin/solves///delete', methods=['POST']) + @admins_only + def delete_solve(teamid, chalid): + solve = Solves.query.filter_by(teamid=teamid, chalid=chalid).first() + db.session.delete(solve) + db.session.commit() + return '1' + @app.route('/admin/statistics', methods=['GET']) @admins_only def admin_stats(): @@ -475,7 +484,7 @@ def init_admin(app): page_start = results_per_page * (page - 1) page_end = results_per_page * (page - 1) + results_per_page - solves = Solves.query.add_columns(Solves.teamid, Solves.date,\ + solves = Solves.query.add_columns(Solves.chalid, Solves.teamid, Solves.date, Solves.flag, \ Challenges.name.label('chal_name'), Teams.name.label('team_name')).\ join(Challenges).join(Teams).order_by('team_name ASC').slice(page_start, page_end).all() diff --git a/CTFd/challenges.py b/CTFd/challenges.py index 3c9ed2ee..14743b16 100644 --- a/CTFd/challenges.py +++ b/CTFd/challenges.py @@ -99,7 +99,7 @@ def init_challenges(app): for x in keys: if x.key_type == 0: #static key if x.flag.strip().lower() == key: - solve = Solves(chalid=chalid, teamid=session['id'], ip=request.remote_addr) + solve = Solves(chalid=chalid, teamid=session['id'], ip=request.remote_addr, flag=key) db.session.add(solve) db.session.commit() db.session.close() @@ -108,7 +108,7 @@ def init_challenges(app): elif x.key_type == 1: #regex res = re.match(str(x), key, re.IGNORECASE) if res and res.group() == key: - solve = Solves(chalid=chalid, teamid=session['id'], ip=request.remote_addr) + solve = Solves(chalid=chalid, teamid=session['id'], ip=request.remote_addr, flag=key) db.session.add(solve) db.session.commit() db.session.close() diff --git a/CTFd/models.py b/CTFd/models.py index 88f15240..adf717ae 100644 --- a/CTFd/models.py +++ b/CTFd/models.py @@ -135,15 +135,17 @@ class Solves(db.Model): chalid = db.Column(db.Integer, db.ForeignKey('challenges.id')) teamid = db.Column(db.Integer, db.ForeignKey('teams.id')) ip = db.Column(db.Integer) + flag = db.Column(db.Text) date = db.Column(db.DateTime, default=datetime.datetime.utcnow) team = db.relationship('Teams', foreign_keys="Solves.teamid", lazy='joined') chal = db.relationship('Challenges', foreign_keys="Solves.chalid", lazy='joined') # value = db.Column(db.Integer) - def __init__(self, chalid, teamid, ip): + def __init__(self, chalid, teamid, ip, flag): self.ip = ip2long(ip) self.chalid = chalid self.teamid = teamid + self.flag = flag # self.value = value def __repr__(self): diff --git a/templates/admin/correct_keys.html b/templates/admin/correct_keys.html index 9539d9fe..bc0090a7 100644 --- a/templates/admin/correct_keys.html +++ b/templates/admin/correct_keys.html @@ -4,6 +4,18 @@

Correct Key Submissions

+
+

Delete Key

+
+ +
+

Are you sure you want to delete successful key submission for team: in challenge: ?

+ + +
+
+ × +
@@ -13,15 +25,21 @@ + + {% for solve in solves %} - - - + + + + + {% endfor %} @@ -39,4 +57,33 @@ {% endblock %} {% block scripts %} + {% endblock %}
Date Key Submitted + Delete +
{{ solve.team_name }} - {{ solve.chal_name }}{{ solve.date }}{{ solve.team_name }} + {{ solve.chal_name }}{{ solve.date }}{{ solve.flag }}