본문 바로가기

전체 글

(53)
Whois 9주차 문제 풀이 과제 1. ilovepwn 이번 문제는 다음과 같다. 전역 배열 변수 fakekey에 임의의 인덱스 에다가 입력을 줄 수 있다. 그리고 두 번째 전역 배열 변수 key와 "ILOVEPWN"이라는 문자열을 비교하는데 해당 바이너리에서 fakekey 임의의 인덱스에 입력을 받을때 범위 검증을 하지 않기 때문에 oob취약점이 발생한다. 해당 oob 취약점을 이용해서 fakekey배열을 벗어나 key 배열에 우리가 원하는 값을 넣어주면 된다. 해당 exploit 코드를 실행하면 shell을 얻을 수 있다. 2. Part-time Job ida를 통해 보자 main함수 전체를 보지 않고 해당 부분까지만 보겠다. 우리가 shell를 얻을려면 v4
Whois 8주차 문제 풀이 과제 1. assembly 이번 문제는 다음과 같다 그냥 https://defuse.ca/online-x86-assembler.htm#disassembly 에서 mov rax, 0x77 mov rbx, 0x88 mov rcx, 0x99 sub rax, 0x10 다음과 같이 작성한 후 돌리면 나오는 String Literal 값이 FLAG이다. 2. passcode 문제는 다음과 같다 ida로 main함수를 확인하면 다음과 같다. read함수에서 buf에 0x30이나 받기 때문에 bof 취약점이 발생하시만 generate_passcode 함수를 주목해보자 인자로 들어간 src에 총 8byte의 난수를 생성하여 넣는것을 확인 할 수 있다. 그 후 main함수로 돌아와서 strcncpy로 전역 변수 save에 넣는..
Whois 7주차 문제 풀이 과제 1. Student ID 1번 문제는 다음과 같다. 문제를 다운 받고 IDA로 봐보면, v5가 0x499602D2면 flag를 준다. scanf로 길이 제한 없이 v4부터 입력 받으니깐, 28개 A로 덮고 남은 4byte는 0x499602D2 로 덮어주면 풀린당 다음과 같이 exploit 코드 작성 후 실행하면 FLAG를 얻을 수 있다. 2. Magic Spell 2번 문제는 다음과 같다. 바로 IDA로 확인을 해보자 main에서 sepll1이라는 함수를 호출 해준다. spell1을 따라가 보자 spell1은 다음과 같다. scanf로 v1에다 길이 제한 없이 입력을 받고 v2가 0x4d와 같으면 다음 spell2를 호출한다. 다음으로 spell2를 보자 spell2는 다음과 같다 bss 영역에 있는 b..
Whois 5주차 리버싱 문제 풀이 과제 1. rootME.exe 바이너리를 x32dbg로 연 다음 string 값을 확인해보면 다음과 같다. 여기서 "Gratz man :)" 문자열을 출력해주는 루틴으로 들어가보면, 사용자가 입력한 값이 "SPaCIoS" 면 "Gratz man :)"이라는 문자열을 출력해주고, 아니면 "wrong password"를 출력해준다. 위 "SPaCIoS" 문자열을 넣어주면 정상적으로 FLAG가 출력됨을 확인 할 수 있당 ---------------------------------------------------------------------------------------------------------------------- 2. EasyReverseMe.exe 문제를 실행시켜 보면 다음과 같다. 대충 값 입력..
Whois 4주차 리버싱 핸드레이 과제 1-1. 어셈블리 코드 push ebp mov ebp,esp sub esp,0x10 mov DWORD PTR [ebp-0x4],0xa mov eax,DWORD PTR [ebp-0x4] mov DWORD PTR [ebp-0x8],eax mov eax,DWORD PTR [ebp-0x8] imul eax,eax,0x17 mov DWORD PTR [ebp-0x8],eax mov eax,DWORD PTR [ebp-0x8] sub eax,DWORD PTR [ebp-0x4] mov DWORD PTR [ebp-0xc],eax mov eax,DWORD PTR [ebp-0xc] cdq idiv DWORD PTR [ebp-0x4] mov DWORD PTR [ebp-0x4],eax mov eax,0x0 leave ret 1-..
CORS, CSP 소개 및 webhacking.kr 21 문제 풀이 CORS란? : cors는 Cross-Origin Resource Sharing의 약자로 교차 출처 리소스 공유 정책이라고 생각하면 된다. 추가 HTTP 헤더를 사용하여, 한 출처에서 실행중인 웹 어플리케이션이 다른 출처의 선택한 자원에 접근 권한을 부여하도록 브라우저에 알려주는 체계이다. 간단히 말해서 브라우저에서 다른 출처의 리소스를 공유하는 방법이다. 출처? : URL 구조의 프로토콜, 호스트, 포트를 합친 것을 의미 --------------------------------------------------------------------------------------------------------------------- CSP란? : csp는 Content security Policy의 약자로..
LoS Gremlin, Cobolt, Goblin 문제 풀이 및 보안 패치 방안 1. Gremlin 문제는 위와 같다. 쿼리문 실행 후 단순히 'id' 값이 조회가 가능하면 해결되는 문제이다. 다음과 같이 간단한 sql 공격문을 통해서 해결 할 수 있다. 간단히 설명하자면 id는 1이라는 의미 없는 값을 넣어준 뒤 pw에 '로 pw를 임의로 닫아준 후 or 1=1 식을 통해 조건을 그냥 true로 만들어 버린다. 이후 %23 주석문을 통해 뒤에 내용들을 전부 주석 처리 해서 실행하면, 다음과 같이 정상적으로 쿼리 실행 후 solve("gremlin")이 실행되어 문제가 풀린걸 확인 할 수 있다. %23을 통해 '를 주석 처리를 해주었기 때문에 쿼리문이 정상적으로 실행된 것이다. -----------------------------------------------------------..
REST API GET, POST, PUT, DELETE 정리 REST API? : REST 아키택처의 제약 조건을 준수하는 어플리케이션 프로그래밍 인터페이스를 의미 GET Methed : 데이터를 조회할 때 쓰는 메서드 ex) GET http://localhost:8000/user/1 위와 같이 데이터를 조회 POST Methed : 데이터를 추가할 때 쓰는 메서드 ex) POST http://localhost:8000/user { "id" : "test_user", "password" : "1q2w3e4r5t", "phonenumber" : "010-1234-1234" } 위와 같이 새로운 데이터를 추가 PUT Methed : 기존의 데이터를 수정할 때 사용 ex) PUT http://localhost:8000/user/1 { "password" : "abc12..