![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb95iN%2Fbtq1K4GAvYL%2FCtpKljDEqrGt0XLKG3yDU0%2Fimg.jpg)
[P4C] C언어 코딩 도장 : 문제 풀이 8
2021. 4. 3. 00:56
Programming Languages/C
56.6 심사 문제 : 구조체로 플래그 비트 필드 만들기 문제 : 다음 소스 코드를 완성하여 15 127 7이 출력되게 만드세요. 정답 : #include struct Flags { unsigned int a : 4; unsigned int b : 7; unsigned int c : 3; }; int main() { struct Flags f1; f1.a = 0xffffffff; f1.b = 0xffffffff; f1.c = 0xffffffff; printf("%u %u %u\n", f1.a, f1.b, f1.c); return 0; } 56.6 심사 문제 : 구조체로 플래그 비트 필드 만들기 문제 : 다음 소스 코드를 완성하여 57412가 출력되게 만드세요. 정답 : #include struct Fla..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frd685%2Fbtq1JVKl3Zw%2FkgaHwWICitPw3ZwfWzSZDk%2Fimg.jpg)
[P4C] C언어 코딩 도장 : UNIT 56 ~ UNIT 57
2021. 4. 3. 00:29
Programming Languages/C
Unit 56. 구조체 비트 필드 사용하기 구조체 비트 필드를 사용하면 구조체 멤버를 비트 단위로 저장할 수 있다. CPU나 기타 칩의 플래그를 다루는 저수준(low level) 프로그래밍을 할 때 기본 자료형보다 더 작은 비트 단위로 값을 가져오거나 저장하는 경우가 많아 구조체 비트 필드가 유용하게 사용된다. 56.1 구조체 비트 필드를 만들고 사용하기 대부분의 컴파일러에서는 모든 정수 자료형을 사용할 수 있다. 보통은 비트 필드에 부호 없는(unsigned) 자료형을 주로 사용한다. 단, 실수 자료형은 비트 필드로 사용할 수 없다. 비트 필드는 다음과 같이 멤버를 선언할 때 : (콜론) 뒤에 비트 수를 지정해주면 된다. struct 구조체이름 { 정수자료형 멤버이름 : 비트수; }; #include ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDLZXL%2Fbtq1EospleZ%2FrdGKYAA6oJtqO6ik6ZeXmk%2Fimg.png)
[Webhacking] OWASP ZAP 실습
2021. 4. 2. 01:42
카테고리 없음
OWASP ZAP의 실습 환경은 이전 포스트를 참조하길 바란다. haerinn.tistory.com/135 [Webhacking] 자동 분석 도구 공격 자동 분석 도구를 사용하는 이유? 다음 네 가지 정보를 확인하기 위해서이다. 1. 서비스의 디렉터리 구조와 파일 정보 확인 ➢ 한 페이지씩 클릭을 해서 확인하기 힘들기 때문에 크롤링 기법으로 haerinn.tistory.com 1. 스파이더(Spider) 기능 ➢ 특정 페이지나 디렉토리 우 클릭 후 “스파이더(Spider)” 실행 ➢ 크롤링 기능으로 대상 URL의 웹 페이지 및 디렉토리 구조를 파악 ➢ 스파이더 시 Passive Scan Rule에 따라 간단한 웹 취약점 결과 출력 대상 URL의 웹 페이지 및 디렉토리 구조를 파악할 수 있다. passiv..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY5p1J%2Fbtq1Gfap8EB%2FuQypjA60RCK05RIB87dQr0%2Fimg.png)
[Webhacking] 자동 분석 도구 공격
2021. 4. 2. 00:12
Hacking/Webhacking
자동 분석 도구를 사용하는 이유? 다음 네 가지 정보를 확인하기 위해서이다. 1. 서비스의 디렉터리 구조와 파일 정보 확인 ➢ 한 페이지씩 클릭을 해서 확인하기 힘들기 때문에 크롤링 기법으로 링크를 따라가며 확인 2. 서비스의 불필요한 페이지 존재 확인 ➢ 사전파일(Dictionary)을 이용하여 테스트 페이지, 백업 파일 확인 3. 서비스 페이지 내 버전 정보 확인 ➢ 버전 정보가 노출되면 공격코드(Exploit-DB)와 매칭하여 공격 가능 4. 관리자 페이지 등의 인증 없이 접근하는 페이지 확인 ➢ 인증 처리가 되지 않은 페이지에 접근되면 중요 정보 노출 가능성 실습 실습 환경 : 공격자 pc(kali-linux-2021) -> 프록시 -> Beebox 1. 공격자 pc(kali-linux)에서 OW..
[Pwnable] python으로 인자 및 stdin 전달
2021. 4. 1. 17:42
Hacking/Pwnable
1. shell에서 python으로 바이너리에 stdin 전달 (python -c 'print "A"*10';cat) | 2. shell에서 python으로 바이너리에 인자 전달 ./program `python -c 'print "A"*10'` 3. gdb에서 python으로 바이너리에 stdin 전달 r < 만약 로컬이 아닌 서버에 접속해야 할 경우, 뒤에 | nc (접속정보) 를 붙여준다.
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3vdgV%2Fbtq1z33viXF%2FB5GKFsOrhGz6Nyx5TSBYOK%2Fimg.png)
[Pwnable.kr] 3번 bof
2021. 4. 1. 17:31
Wargame/Pwnable.kr
func() 함수에서 gets 함수를 통해 입력을 받는데, 입력 크기를 지정하지 않아 버퍼의 크기인 32 byte 보다 더 입력을 받아 overflow가 발생하는 모습이다. 오버 플로우를 통해 key 값을 0xcafebabe로 바꿔주면 쉘을 실행할 수 있을 것이다. 그렇다면 offset을 구해보도록하자. func() 함수에서 두번째 call 하는 부분이 gets 함수가 실행되는 부분이다. 이때, overflowme를 인자값으로 주기 때문에 코드 위쪽을 보면 overflowme의 주소를 알 수 있다. ebp - 0x2c로 ebp로부터 44만큼 떨어져 있다. 따라서 offset은 44 + 4(SFP) + 4(RET) = 52이다. 따라서 payload는 다음과 같을 것이다. "A"*52 + "\xbe\xba..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblfs9J%2Fbtq1yZf89o3%2FbsGhQJdb4mBM0RrJxDQB60%2Fimg.png)
[Pwnable.kr] 2번 collision
2021. 4. 1. 17:06
Wargame/Pwnable.kr
접속을 해서 file들을 확인하니 col, col.c, flag 파일이 있다. hackctf에서 본 적이 있는 유형이다. argv[1]으로 인자를 받아 check_password()의 인자로 넘겨주는데, check_password()의 반환값과 hashcode 값이 동일할 경우 flag 파일을 볼 수 있다. check_password()의 경우 받은 인자를 int형 포인터로 형변환해 for 문을 돌려준다. for 문을 돌리면서 4바이트씩 참조를 해 res에 값을 누적시키고 마지막에 res를 반환한다. 그리고 반환된 res와 hashcode 값(0x21DD09EC)과 동일하면 된다. 그렇기에 hashcode 값을 5로 나눠주고 그 값을 5개 붙이면 될 듯하다. 그런데 hashcode 값이 딱 나누어 떨어지..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5g7Rd%2Fbtq1AEWrGgr%2FyHp6W1ie5Y5iKPCKgvjEa0%2Fimg.png)
[Pwnable.kr] 1번 fd
2021. 4. 1. 14:55
Wargame/Pwnable.kr
우분투에서 ssh로 접속해보겠다. flag 파일을 보려고 했지만, Permission denied가 떴다. 아무래도 root만 볼 수 있을 듯 하다. 그래서 fd.c 소스 파일을 확인해보았다. 우리의 목표인 flag 파일을 보기 위해선 read를 통해 표준 입력으로 LETMEWIN을 입력해주어야 할 것이다. 따라서 fd 값을 0으로 만들기 위해 argv[1]에 해당하는 인자값으로 0x1234를 10진수인 4660으로 넣어준다. 그리고 난 뒤 buf에 LETMEWIN을 입력하면 될 것이다. FD(File Descriptor) 파일디스크립터 목적 POSIX 이름 stdio 스트림 0 표준 입력 STDIN_FILENO stdin 1 표준 출력 STDOUT_FILENO stdout 2 표준 에러 STDEFF_F..