일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 미국 금리인하
- 유튜버 김재석
- 양적완화
- 이지혜
- 금리인하
- 고민정
- 해킹
- 폰폰테스트
- 뭉쳐야 찬다
- 홍혜걸
- 은혜의 강 교회
- 김영권
- 스콜피온킹
- 성남 코로나 확진자
- 제넥신
- 성남은혜의강교회
- libtins
- 스페인 코로나
- 이태원 클라쓰 15회 예고
- 불가피
- 김영권 아내
- 최강욱
- 픽크루
- 학교 개학 연기 4월
- 김재석
- 킹덤 고근희
- 이상형 만들기
- 조희연
- 임영규
- 리리남매
- Today
- Total
목록Pwnable.kr (4)
Dork's port
안녕하세요! 4번 문제입니다. 생각~보다는 오랜 시간이 걸렸네요. 문제 들어가시죠! 이번 문제의 핵심은 UPX 입니다. 혹시나 감을 잡지 못해 풀이를 보시는 분이라면 해당 키워드로 다시 고심을 하고 보시길 바랍니다. 먼저, 해당 프로그램을 IDA를 이용해 열어보겠습니다. main의 코드를 보니 조금 이상합니다. 흔히 알고있는 Stack Frame도 없고 바로 어떠한 함수를 부르는군요. 저 함수로 가보도록 하겠습니다.LOAD:000000000044A4F0 LOAD:000000000044A4F0 public start LOAD:000000000044A4F0 start proc near ; DATA XREF: LOAD:0000000000400018↑o LOAD:000000000044A4F0 call loc_4..
bof풀이를 해보도록 하겠습니다. 우선 C를 보도록 할까요? #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } key의 값을 cafebabe로 바꾸어주면 되는 간단한 문제입니다. overme의 버퍼를 이용하여 key의 주소까지 덮어쓰면 자동으로 쉘을 띄워주는 간단한 문제이네요. 그럼 어셈코드를 ..
col 풀이를 시작하도록 하겠습니다. 소스코드를 보도록 하죠 #include #include unsigned long hashcode = 0x21DD09EC; //결과 값 비교를 위한 hashcode unsigned long check_password(const char* p){ int* ip = (int*)p; //인자 값 p를 포인터 변수 ip에 저장 int i; int res=0; for(i=0; i
먼저 ls로 파일들을 보도록 하겠습니다. flag라는 파일을 보려고 하니 권한 문제로 실행되지 않는군요. fd라는 파일과 fd.c라는 파일이 있길래 소스코드인 fd.c를 열어보니 아래와 같이 소스코드가 나타납니다. 먼저 인자 검사를 한 후 인자가 있으면 argv[1] 즉 argument 1을 숫자로 변형시켜 - 0x1234 를 하여 fd로 사용하는군요. fd란 filedescriptor의 약자로 리눅스 시스템에선 기본적으로 3개가 할당되어 있습니다. 0 표준 입력 stdin1 표준 출력 stdout2 표준 에러 stderr fd로 부터 32바이트를 읽은 후 "LETMEIN" 이라는 글자랑 비교를 한 후 일치하면 flag 값을 출력해주는 구조로 되어 있네요. 저는 표준 입력(키보드로 부터 키를 받아 사용)..