전체 글 299

Mini CTF - SQLI

SQLI1 - 공격벡터 userinput 필터링 없이 받아 쿼리문에 사용 - exploit 과정 ?userid=admin’ %23&userpw=123 하면 된다. # 그대로 입력 시 그 뒤가 fragment로 인식되어 %23 이렇게 인코딩했다 SQLI2 - 공격벡터 union 막혀있고, or 이랑 | 전부 막혀있다, 하지만 + 사용 가능하다 공백 = %0a로 우회 가능하다 주석 = -는 막혀있지만 #은 가능하다. 대신 url에서 %23 인코딩해야 fragment 취급 안 받음 의도하지 않았지만 발견한, MySQL의 독특한 type casting 때문에 발생한 취약점 (https://stackoverflow.com/questions/22080382/mysql-why-comparing-a-string-to-..

Mini CTF - XSS, DOM Clobbering

[CSRF1] - 공격벡터 view.html 에 | safe 로 인해 스크립트 실행 취약점 발생 xss 필터가 걸려있었지만 script 태그, [], () 맘대로 쓸 수 있음 → 함수들 맘껏 사용 가능 internal network에서 /changepw 엔드포인트에 admin pw 변경해달라고 GET 요청 보내면 됨 - exploit 과정 script랑 ` 는 안막혀있다 => on만 잘 우회해서 스크립트 요청 보내면 됨 이 내용을 content에 담아 게시물 올려놓고(Stored XSS), 봇으로 하여금 이 게시물 읽게 하면 됨 admin pw 변경 후 admin 계정으로 로그인해서 0번 게시물 읽으면 된다 [CSRF2] - 공격벡터 view.html 에 | safe 로 인해 스크립트 실행 취약점 발생 ..

Mini CTF - XSS, DOM Clobbering

[XSS1] - 공격벡터 view.html에서 | safe 로 인해 스크립트 삽입 가능 작성한 글이 보여지면서 의도치 않게 스크립트 코드 실행가능할 듯 content로 넣어봤을 때 잘 실행됨 - exploit 과정 bot.py는 admin id/pw로 로그인 후 특정 url에 접속함 xss1.py에서는 로그인 성공 시 userid=”admin”이면 flag 쿠키를 세팅해준다 → leak하면 될 듯 외부공개된 url(http://2023whs.arang.kr:9001)과 내부 네트워크 url(http://arang_client:9001) 다름에 주의 Content에 작성해두고 /report 엔드포인트에서 봇으로 하여금 http://arang_client:9001/board/[게시물번호] 접속하게 하면 됨 ..

IDA에서 사용자 정의 구조체 생성하기

왜 필요한가? 파일 스트림에서 Buffer로 0x36만큼 읽어오는 것으로 보아 Buffer는 최소 0x36 크기의 구조체 하지만 IDA가 인식한 버퍼의 크기는 2B*5 = 10B. 구조체를 제대로 인식 못 함 => 구조체 만듦으로써 디컴파일 코드의 가독성 증가, 분석 용이 구조체 만들기 1. Structure → Add Struct Type (Insert 키) 하여 bmp_header 이름의 구조체 추가 2. bmp_header 클릭 후 d 키 눌러 구조체 내 변수(field) 추가 3. convert to array 기능을 이용해 1byte * 0x36 개의 변수를 만든다 4. 디컴파일 화면으로 돌아가 buffer 변수의 타입을 새로 생성한 구조체 타입으로 바꿔줌 (y 이용) 5. structure 화..

Windbg 커맨드 정리

메모리 덤프 파일 확인 / 윈도우 소프트웨어의 동적 분석 시 매우매우매우 유용 주요 커맨드 k [n] : 콜스택 확인 (kv 많이 사용) ln 0x401000 : 특정 addr 주변에 가장 가까운 symbol 확인 r [레지스터/플래그] : 레지스터 및 플래그 정보 확인 가능 (eax, ebx, zf ..) r eax=0 : 레지스터 값 변경 bp 0x401000 : bp 설정 (bp testexe!ReadFile+0x123 이런 식도 가능) bl : bp list (bd 숫자 => 특정 브포 disable, be 숫자 => enable) g : 다음 bp까지 쭉 continue p : step over t : step into gu : 현재 함수 밖으로 이동, step out dq, dd, dw, db..

WTF(What The Fuzz) 퍼저를 활용해 타겟 분석하기

심기용 PL님과 정재영 선배릠께 무한한 감사를.. STEP1. 가상머신 환경 세팅 Hyper-v 사용해서 win10 가상머신 하나 만들어줬음 secure boot off, RAM 4GB, 프로세서 1개, 페이징 사용 x, 동적 메모리 사용 x STEP2. (kdnet 이용한 네트워크) 커널 디버깅 세팅 https://lucidmaj7.tistory.com/236 Windbg 커널디버깅 설정하기 (Network 디버깅) Windbg 커널디버깅 KDNET 설정하기 (Network 디버깅) 커널 드라이버를 개발하면서 언젠가?는 마주치게 되는 커널디버깅. 과거 물리적인 디버깅 대상 PC의 시리얼포트를 통해 개발 PC와 연결하여 커널디 lucidmaj7.tistory.com guest VM에 windbg (old..

WinAFL 퍼징을 통해 타겟 분석하기

Step1. 환경 세팅하기 설치해야 될 것들 - Visual Studio - WinAFL - Dynamorio https://hackyboiz.github.io/2021/05/23/fabu1ous/winafl-1/ https://gomguk.tistory.com/119 Step2. 타겟 선정하기 * 타겟 소프트웨어를 선정하고, 해당 소프트웨어의 동작 방식을 분석한다 (주로 뷰어, 압축프로그램, 미디어 플레이어 등등 user input 집어넣을 수 있는 애들이 쉽고 편함) * procmon을 통해 user input 입력했을 때의 동작을 분석하면 좋음 - operation : Load Library, ReadFile 등등 - 여러 쓰레드에서 동작할 수 있음 * 플러그인 dll에서 file open, par..

git 사용하기 - github pull/push/pull request

내 프로젝트를 Github에 업로드하기 - git 초기화하기 git init - git에 원격 저장소 추가하기 git remote add origin https://github.com/minseo25/vulnhub_analysis.git - 프로젝트 디렉터리의 모든 파일 staging 및 커밋 git add . git commit -m "any commit message" - 해당 브랜치를 원격 저장소의 main branch로 push 한다 git push -u origin main // github 인증은 token generating 방식으로 하면 된다 만약 branch 이름이 main이 아니면 현재 브랜치 이름을 확인하고 git branch 브랜치 이름을 변경한다 (ex. master -> main..