[Rev] Abex' CrackMe 1 w/ DLL Injection
·
War Game/misc
리버싱 초심자들에게 필수 코스인 Abex CrackMe 1단계 (CD ROM 그 문제)를 대상으로 간단한 DLL Injection을 이용하는 방법으로 해결한 풀이를 발견해 정리해봤다. DLL Injection을 처음으로 시도해보는 컨셉이기에 DLL 내용 자체가 대단하진 않고 이러한 방식으로 DLL을 짜서 공격을 수행해볼 수 있다 정도의 체험을 해봤다는 느낌으로 봐주길 바란다. 0x40103D에 로드된 함수의 실행 결과에 따라 ESI 값과 비교하여 성고 또는 실패 다이얼로그를 띄우는 코드로 점프하는 분기가 0x401026에 담겨있다. DLL을 이용해 저 부분의 코드를 조작할 수 있다면 디버거에 의한 개입 없이 프로그램을 무력화할 수 있게된다. 물론 이 경우, DLL의 목표는... 0x401026의 opco..
[Web] XSS-2
·
War Game/dreamhack.io
'/vuln' 페이지에 접속하면 URL 상에 파라미터로 가 삽입되어 있음에도 팝업창이 표시되지 않는다. XSS를 우회하는 로직이 들어있는 것 같다. 아마 전에 봤던 것처럼 script 태그 사용이 막혀있기 때문일 것으로 생각된다. 결과적으로 "script" 문자열을 포함하지 않으면서 자바스크립트 구문을 삽입할 수 있는 환경을 만들어야 한다. 이전에도 비슷한 문제를 풀어봤으니 가장 먼저 떠오른 것은 img나 iframe 태그였다. 제일 처음 시도해봤던 구문은 아래와 같았다. 아차 싶어 다음과 같이 수정해 다시 시도해봤다. 그러나 여전히 동작하지 않는다. memo 페이지에 접근할 때마다 자동으로 출력되는 "Hello" 스트링만 출력되어 있더라.. 그러던 중에 아래와 같은 사이트를 발견하였다. XSS 필터링을..
[Web] command-injection-1
·
War Game/dreamhack.io
오랜만에 웹으로 돌아왔다. 사실 이름만 보고 포너블인줄 알았는데 파일 받고나서 보니 웹이더라 입력 필드에 바로 때려봤더니 뱉어내고 있다. 브라우저에서 바로 뱉어내는 걸로 보아 HTML 소스를 뜯어보니 알파벳과 로마 숫자만 받아들이고 있다. 해당 부분의 코드를 지워보자. 이제 다시 시도해보자. 얍 음.. 다 푼 것 같은데? FLAG = 'DH{pingpingppppppppping!!}
[pwn] cmd_center
·
War Game/dreamhack.io
또 bof 다. 이제 이 정도 쯤은 식은 죽 먹기지.. 가볍게 왼손만 써서 후딱 풀고 치워버리자. (라고 쓰여있는데요?) 힌트가 적혀있긴 한데.. 무슨 말인지 한 개도 못 알아먹겠다. 코드부터 살펴보자. #include #include #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { char cmd_ip[256] = "ifconfig"; int dummy; char center_name[24]; init(); printf("Center name: "); read(0, center_name, 100); if( !strncmp(cmd_ip, "ifconfig", 8)) { syste..
[pwn] shell_basic -하- (orw 쉘코드를 완성해보자)
·
War Game/dreamhack.io
김피탕은 맛있고 gpt는 신이다. objdump도 GNU 재단에서 관리하는 것으로 알고 있는데 왜 objdump는 프리 인스톨되어있고, objcopy는 내가 알아서 깔아야 하는 것인가.. :/ 내친 김에 직접 작성한 어셈블리어 코드를 쉘 코드로 변환하려면 어떻게 해야하는지도 물어봤다. 이 친구라면 내가 모르는 뭔가 새로운 걸 알려줄 수도 있지 않을까 드림핵 문제 페이지 힌트에 나와있는 것과 동일하게 objcopy와 xxd를 사용해서 변환하는 방식을 추천해주고 있다. 왕도를 따라가보자. 드림핵에서 제공하는 xxd 사용방법은 단순히 xxd FILE.bin 의 형태였는데, 이를 실행하면 다음과 같은 형태의 파일을 만날 수 있다. 반면에 Chat김피탕에서는 -i 옵션을 부여하고 *.h 확장자를 가지는 별도의 파..
[pwn] shell_basic -상- (orw 쉘코드를 작성해보려고 노력해보자)
·
War Game/dreamhack.io
orw 쉘 코드는 open, read, write의 머릿글자를 딴 것으로, 파일을 열어(Open) 내용을 읽은 뒤(Read), 그 내용을 화면에 출력한다는(Write) 것을 의미한다. 쉘 권한을 획득하여 일반적인 권한으로는 접근하기 어려운 파일에 접근해 그 내용을 읽어오는 쉘 코드라고 생각하면 되겠다. shell_basic에서 제공하는 코드는 사용자가 입력한 쉘코드를 입력받아 그대로 실행해주는 역할을 수행한다. 쉘 권한을 따내기 위한 작업은 필요하지 않고, 직접 적절한 쉘 코드를 짜서 vm 내에 존재하는 파일에 담긴 flag를 읽어보라는 의미가 되겟따. orw 쉘코드 작성 방법은 링크된 드림핵 강의를 참고하자. 어셈블리어를 처음부터 작성하는 것은 아직 많이 서툴테니 강의를 차근차근 따라가며 작성해보도록 ..
[Web] File-Download-1
·
War Game/dreamhack.io
아래와 같이 서버에 위치한 파일의 경로를 입력하면 해당 파일의 내용을 읽어와 memo에 기록해 보여주는 사이트이다. 이렇게 파일명을 넣고 memo 페이지로 들어가보면... 루트 디렉토리에 있는 flag.py를 읽어오게 하려면 " ../flag.py "를 입력해야 하는데 튕겨낸다. 코드를 살펴보자, #!/usr/bin/env python3 import os import shutil from flask import Flask, request, render_template, redirect from flag import FLAG APP = Flask(__name__) UPLOAD_DIR = 'uploads' @APP.route('/') def index(): files = os.listdir(UPLOAD_DI..
[Web] CSRF - 1
·
War Game/dreamhack.io
우선 CSRF가 무엇인지 알아야 이를 연습할 수 있겠지? CSRF는 Cross Site Referer Forgery의 약어이다. 크로스 사이트 리퍼러 위조.. 블로그 몇 군데를 찾아보니 다향히도 막 어려운 개념은 아니었다. 개인적으로 보자마자 와닿았던 예시가 있는데, 피싱 사이트에 "페이스북 피드에 불법 광고를 게시하도록 하는 스크립트 구문"을 삽입해놓고 피해자가 해당 사이트에 접속하면 스크립트 문이 실행되어 피해자의 브라우저에 로그인되어 있던 피해자의 페이스북 계정을 이용해 피해자의 담벼락에 불법 광고가 게시되는 예시. 너무 이해가 잘 된다. 실제 요청을 보내는건 피해자의 브라우저이지만, 실제로 해당 요청을 유도하는건 전혀 다른 웹사이트(referer)에 탑재된 공격자의 코드이기 때문에 referer ..
[Web] XSS-1
·
War Game/dreamhack.io
"document.cookie"를 통해 브라우저에 저장되어 있는 쿠키 정보를 출력할 수 있다. 이는 XSS 공격 시에 매우 자주 사용될 것 같으므로 아직 JS가 익숙지 않더라도 이 정도는 익혀두는 편이 좋겠다. XSS에 관련된 내용은 여기에 정리해두었으니 참고하도록 하자. 'vuln(xss)'라는 하이퍼링크가 수상하다. 좀 더 자세히 살펴보자. URL을 보면 스크립트 구문이 들어가 있는 것을 확인할 수 있다. 해당 부분은 수정하면 원하는 자바스크립트 구문을 실행할 수 있을 것으로 보인다. 직접 해보자. 오.. 역시 마음대로 수정할 수 있을 것으로 보인다. 그렇다면 위에서 배운 쿠키 호출 방법을 바로 써먹어볼 수 있지 않을까? 오.. 근데 뭔가 수상한 점을 발견했다. 몬가몬가.. 계속 늘어나고 있다. 정황..
[Rev] Crack Me (Serial Authentication) Write-up
·
War Game/misc
22년도 1학기 역공학 과목을 수강하며 수행했던 과제 내용에 대한 기록을 남긴다. PE 파일은 아래 첨부 파일에서 확인할 수 있다. 이런 프로그램들의 특성상 바이러스 엔진에 걸리는 경우가 잦기 때문에 백업용으로 원드라이브 링크도 하나 더 첨부한다.