IP parsing(+C), URL parsing 정규식 pattern
직접 짜기 전에 org.springframework.web.util.UriComponentsBuilder 참조. IP, HOST, HTTP 등 패턴이 static 변수로 선언되어 있음. 또는InetAddressValidator 같이 아예 유틸리티 클래스로 제공되고 있을 수 있다. 비슷한 계열이 몇 개씩 된다. InetAddresses.isInetAd...
직접 짜기 전에 org.springframework.web.util.UriComponentsBuilder 참조. IP, HOST, HTTP 등 패턴이 static 변수로 선언되어 있음. 또는InetAddressValidator 같이 아예 유틸리티 클래스로 제공되고 있을 수 있다. 비슷한 계열이 몇 개씩 된다. InetAddresses.isInetAd...
xavius - throw me away remote BOF다. 소켓프로그래밍은 오랜만인데, 그래도 코드가 복잡하지는 않다. 서버 프로그램은 서버에서 돌아가는 거니까, 호스트에서 환경변수 등을 사용할 수는 없지만, 256바이트나 사용할 수 있으니까 그냥 버퍼에 집어넣는게 좋겠다. parent는 while로 계속 돌아가고, child가 recv수행하고...
succubus : strcpy succubus : strcpy succubus - here to stay / strcpy strcpy의 PLT 주소로 리턴해야만 한다. ret이후 4byte를 제외한 공간을 사용할 수 있다. ret+4byte를 제외한 이유는 이전 문제처럼 풀지 않도록 하기 위해서 인 듯. strcpy의 PLT 주소는 0x08048...
giant - one step closer argv[1][47] == ‘\xbf’ || argv[1][47] == ‘\x40’ 이면 exit stack, library로 return이 불가능하다. 마지막에 memset(buffer, 0, 44); 한다. buffer랑 sfp까지 초기화. 그래도 ret 이후는 남아있다. 당장 생각나는 방법은 shar...
darkknight - new attacker argv[1][47] ==‘\xbf’ 이면 exit 한다. 즉 stack으로 return 못한다. RTL 사용하면 된다. /bin/my-pass 문자열 삽입은 환경변수를 사용했다. bugbear - new divide ret에 들어가는 주소가 execve의 주소여야만 한다. execve인지 검사하기 위...
소멸자 .dtors 080495f4 d \_\_DTOR\_END\_\_ 소멸자로 프로그램이 종료되기 전에 여기에 명시되어 있는 주소(함수)가 호출된다. \_\_DTOR\_END\__의 위치는 nm을 사용해도 좋고 readelf나 objdump로 확인해도 좋다. .fini_array gcc 4.7 이상 버전은 .ctors .dtors를 사용하지 않...
golem - cup of coffee void problem_child(char *src){char buffer[40];strncpy(buffer, src, 41);printf(“%s\n”, buffer); } main(int argc, char *argv[]){check argc<2…problem_child(argv[1]); } probl...
secure-execution mode 어떤 바이너리를 실행하면, dynamic linker(ld.so)는getauxval( ) 를 이용해 auxiliary vector인 AT_SECURE 값을 가져와 0인지 확인하고 0이 아니면 secure-execution mode로 실행한다. 2017/09/02 - [System/Exploit] - Retur...
ltrace library trace. userspace API call의 흐름을 볼 수 있다. -S -- Display system calls as well as library calls strace (man ) system call trace. system call의 흐름을 볼 수 있다. 출력되는 binary값이 16진수가 아니...
proc filesystem man proc procfs ( proc filesystem )은 유닉스 기반 OS에서 프로세스에 대한 정보나, 시스템 정보를 파일 형식으로 제공하는 것을 말한다. /proc/의 파일들을 확인해보면 크기가 0인데, 이는 procfs 파일은 내부 자료구조에 접근하기 위한 인터페이스에 가깝기 때문이다. procfs 파일을...