목록리버싱 기초 (76)
Self-Improvement
보호되어 있는 글입니다.
#include #include #include #include #include #include #include void main(){ socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP); socket(PF_LOCAL, SOCK_STREAM, IPPROTO_TCP); socket(PF_PACKET, SOCK_STREAM, IPPROTO_TCP); socket(PF_IPX, SOCK_STREAM, IPPROTO_TCP); socket(PF_FILE, SOCK_STREAM, 0); }
보호되어 있는 글입니다.
PIE 걸려있는 문제를 풀어보기 위해 찾아보던 중 재밌는 문제인 것 같아서 풀어보았으며 많이 생각을하면서 시간을 소요했다. Checksec 해당 바이너리는 모든 보호기법이 걸려있었다 IDA_main main에는 이렇다한게 없고 pwnme()를 보면 될 것 같다. IDA_pwnme 1. read 함수를 통해 buf의 영역을 채울 수 있으며 이때 buf의 크기(0x10)만큼 가득 채울 수 있다. 2. if문에서 입력값에 대한 검증이 부족하다. (마이너스를 넣을 수 있다) 3. buf의 크기를 가득 채울 시에 그 뒤의 memory leak을 수행할 수 있다. IDA_func1, func2, func3, func4 별다른 취약점은 존재하지 않는다. 풀이방법 memory leak을 통해 func1의 주소를 얻어낸..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
CTF를 풀때마다 FSB 문제는 하나씩 존재해서 그냥 넘어가는일이 많아서 추후에 공부하자고 다짐만 했었는데 이번 좋은 기회로 FSB에 대해서 제대로 이해하고 어떻게 활용하는지 알아보고 공부해본다. 소스코드1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 // gcc -o fsb1 fsb1.c -m32 -mpreferred-stack-boundary=2 #include #include #include #include char flag_buf[50]; void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); } int main() { FILE *fp;..