(Dreamhack) Apache htaccess문제 풀이
·
문제풀이/웹해킹
https://dreamhack.io/wargame/challenges/418/ Apache htaccess Description 파일 업로드 기능을 악용하여 서버의 권한을 획득하세요 ! dreamhack.io 처음 웹 페이지에 접속한 화면이다. 파일 업로드 하는 페이지인 듯 하다. 대충 웹셸 업로드해서 웹 셸로 플래그 찾으면 될 것 같은 느낌이 든다. 문제 파일 다운로드 했을 때 정보가 많아서 필요한 것만 올려보겠다. 아래는 Dockerfile이다. 살펴보면 웹 문서가 저장되는 위치를 알 수 있다. 아파치에서 사용하는 기본 파일 위치를 그대로 사용하고 있다. FROM ubuntu:14.04 RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -..
Dreamhack 웹 해킹 서버사이드를 마치고
·
목표
사실 아직 다 본건 아니다. 지금 스테이지6의 파일 업로드, 다운로드 취약점이 발생하는 상황을 보고 있다. 심지어 중간에 NoSQL부분의 Redis, CouchDB와 중간에 Ruby와 Perl언어를 사용하여 해킹하는 부분은 건너 뛰었다.(공부는 해야하니까 문제는 블로그 보고 풀었다. 풀어보고 싶은 문제가 생기면 정말 혼자 힘으로 풀어보려고 노력도 했었다.) 지금 이 글을 쓰는 이유는 웹 해킹을 공부하면서 현재 내가 해킹을 공부할 단계가 아니라는 생각이 들어서이다. 사실 이 생각은 웹 해킹 기초를 공부하면서도 꾸준히 들었던 생각이며 이 글을 쓰는 이유도 내가 공부해야 할 것들을 일기쓰듯 쓰면서 편하게 적어보고 싶었기 때문이다. 내가 웹 해킹에 대한 내용을 배우고 실제로 소스코드 상에서 취약점을 발견해도 해..
(dreamhack) sql injection bypass WAF Advanced 문제풀이
·
문제풀이/웹해킹
https://dreamhack.io/wargame/challenges/416/?writeup_id sql injection bypass WAF Advanced Description Exercise: SQL Injection Bypass WAF의 패치된 문제입니다. dreamhack.io 처음 페이지 화면이다. 아래는 웹 서버 구동 코드이다. 더보기 import os from flask import Flask, request from flask_mysqldb import MySQL app = Flask(__name__) app.config['MYSQL_HOST'] = os.environ.get('MYSQL_HOST', 'localhost') app.config['MYSQL_USER'] = os.envir..
SQL Injection : MySQL System Table (dreamhack)
·
WEB/공부
그냥 강의만 읽어보고 외우려고 했는데 새롭게 배운 내용이 많을 것 같아서 작성한다. https://learn.dreamhack.io/306#3 로그인 | Dreamhack dreamhack.io 나는 하나의 서버가 하나의 Database를 가질거라는 잘못된 지식을 갖고 있었던 것 같다. 그래서 처음 System Table에 대해 배울 때 꽤 혼란스러웠다. 공부한 내용을 정리하겠다. 모의해킹은 Penetration Testing Execution Standard(PTES)에 의하면 총 일곱가지 단계로 구성되어 있다. 처음 과정에서 공격 대상을 지정하고 대상의 정보를 수집하는 과정을 핑커프린팅(fingerprinting)이라고 한다. 공격 대상이 사용한는 웹 서버와 개발 언어, DBMS와 내부정보 등을 알아..
(dreamhack) blind sql injection advanced 문제풀이
·
문제풀이/웹해킹
드림핵 페이지에서는 함께하기로 같이 풀 수 있지만 혼자서 풀어보려고 글을 쓴다. 지금까지 혼자서 풀어본 문제는 적기 때문에 오늘 하루 도서관에서 집에 가기 전까지는 스스로 풀어보려고 노력해보겠다. 문제 출처는 https://dreamhack.io/wargame/challenges/411/ blind sql injection advanced Description Exercise: Blind SQL Injection Advanced에서 실습하는 문제입니다. 관리자의 비밀번호는 "아스키코드"와 "한글"로 구성되어 있습니다. dreamhack.io 웹에 처음 접속하면 이 페이지이다. 먼저 기본적으로 admin';을 입력하면 admin이 존재한다는 문구만 나온다. 어떤 방식으로 접근해야할지 고민하다가 일단 웹 서..
pwntools 함수
·
시스템해킹/공부
process p = process('./test') 로컬 바이너리를 대상으로 할 때 사용함 remote p = remote('example', 31337) 원격 서버에 있는 바이너리를 대상으로 할 때 사용함 send from pwn import * p = process('./test') p.send('A') # ./test에 'A'를 입력 p.sendline('A') # ./test에 'A'+'\n'을 입력 p.sendafter('hello', 'A') # ./test가 'hello'를 출력하면, 'A'를 입력 p.sendlineafter('hello', 'A') # ./test가 'hello'를 출력하면, 'A' + '\n'을 입력 데이터를 프로세스에 전송하기 위해 사용함. recv from pwn ..
리눅스 리버싱 관련 명령어2
·
시스템해킹/공부
pwndbg를 사용하여 분석하려면 git clone https://github.com/pwndbg/pwndbg cd pwndbg ./setup .sh 아래 명령어를 통해 pwndbg를 다운로드 받을 수 있음. gdb 명령어 start 명령어 실행 시 프로그램 진입점부터 분석할 수 있도록 진입점에 중단점을 설정해줌. si(step into) ni(next instruction)과는 다르게 함수를 만나면 함수 내부로 들어간다. pd(pdisas) pwndbg 상에서의 명령어이다. k(kill) 프로그램 종료 finish 프로그램을 끝까지 실행시킴. (끝부분에 실행이 멈춰있음.) telescope 또는 tele 메모리 덤프기능(솔직히 잘 모르겠다. 다른 블로그를 확인해봐도 드림핵에서 적은 내용을 그대로 복사해..
리눅스 리버싱 관련 명령어
·
시스템해킹/공부
apt-get 리눅스에서 사용하는 패키지 관리 명령어이다. apt-get update ← 모든 패키지 업데이트 apt-get upgrade ← 모든 패키지 업그레이드 apt-get install ← 패지키 설치 이외에도 많은 명령어가 있다. 주로 쓰이는건 이 정도. readelf -h 정적분석 gdb 실행파일명 gdb를 통해 해당 실행파일을 디버깅할 수 있음. gdb 실행파일명 PID ps를 통해 PID를 확인 후 현재 실행되고 있는 실행파일에 디버깅을 할 수 있음. gdb로 프로그램을 실행한 후 run 프로그램 실행 set disassembly-flavor intel intel CPU에서 사용하는 형식으로 어셈블리어를 볼 수 있음. disas disas함수로 함수의 어셈블리어를 확인할 수 있음. dis..
Goblebin
고블빈