[P4C] pwnable problem writeup3
2021. 4. 29. 22:51
Hacking/Pwnable
팀원분들이 직접 제작하신 포너블 문제를 풀어보는 시간이다. (이번엔 재용님이 제작하신 문제들에 대한 롸업이다.) 1번 문제) 문제 이름을 입력받고, 멘트를 출력한다. scanf 로 입력받을 시 입력값 검증을 하지 않기에 bof 가 발생한다. -> ret 를 변경가능할 것이다. ret 를 ShowFlag() 로 변경해주면 될 듯하다. 익스플로잇 showFlag() 주소 : 0x400567 ret 까지의 offset : 72 byte payload 는 다음과 같을 것이다. "A"*72 + 0x400567 2번 문제) canary, nx, pie 모두 걸려있다..! aslr 은 꺼져있다. ID, PW 를 입력받고, 멘트를 출력한다. id, pw 를 버퍼 크기만큼만 입력받는다. s와 "admin" 을 비교한 결..
[P4C] pwnable problem writeup2
2021. 4. 29. 19:11
Hacking/Pwnable
팀원분들이 직접 제작하신 포너블 문제를 풀어보는 시간이다. (이번엔 종학님이 제작하신 문제들에 대한 롸업이다.) 1번 문제) 문제 buf, key의 주소를 출력하고 입력을 받는다. gets() 함수 입력 시 bof 가 발생한다. key 값을 변경해서 쉘을 획득하면 될 것 같다. 문제 해결 과정 buf의 위치 : ebp - 0x36 key의 위치 : ebp - 0x4 offset -> 50byte payload는 다음과 같을 것이다. "A"*50 + 0x44454144 익스플로잇 2번 문제) 문제 buf 의 주소를 출력해주고, 입력을 받는다. buf 의 주소를 출력해주고 입력을 받는다. 이때 gets() 로 입력 받을 시 bof 가 발생한다. -> 쉘코드를 넣고, ret 까지 더미로 채운 다음 ret 에 ..
[P4C] pwnable problem writeup1
2021. 4. 29. 18:17
Hacking/Pwnable
팀원분들이 직접 제작하신 포너블 문제를 풀어보는 시간이다. (한수님이 제작하신 문제들에 대한 롸업이다.) 1번 문제) 문제 이름을 입력받고, 멘트를 출력한다. 플래그를 찾아야 될 듯 싶다. gets() 를 통해 입력을 받는데, bof 가 발생한다. bof 를 통해서 ret 를 flag() 함수 시작주소로 변경해주면 될 것 같다! 문제 해결 과정 필요한 것들을 구해보자! 버퍼와 ret 간 offset : 108 byte flag() 시작주소 : 0x8049182 페이로는 다음과 같을 것이다. "A"*108 + 0x8049182 "A"*108 + 0x8049182 익스플로잇 2번 문제) 이번에도 flag 를 찾아야될 듯 싶다. 3번 문제) 문제 1. getenv 를 통해 "FLAG" 라는 환경 변수 주소를 ..
[P4C] Pwnable problem 3
2021. 4. 27. 14:55
Hacking/Pwnable
1. 문제 #include #include void get_shell(){ system("/bin/sh"); } void welcome(){ printf("Welcome to pwnable world!\n"); } void main(){ void (*call)() = welcome; char buf[30]; fgets(buf, 38, stdin); call(); } 2. 컴파일 gcc -o problem problem.c -fno-stack-protector -fno-pie -mpreferred-stack-boundary=2 -m32 다음과 같이 컴파일 해준다.
[P4C] Pwnable problem 2
2021. 4. 10. 01:48
Hacking/Pwnable
1. 문제 #define _GNU_SOURCE #include #include #include void vuln(){ char buf[30] = ""; void (*read_addr)() = dlsym(RTLD_NEXT, "read"); printf("I'll give you some hint\n"); printf("read address : %p\n", read_addr); read(0, buf, 90); } void main(){ printf("do you know RTL?\n"); vuln(); } 다음과 같이 빌드해줍니다. gcc -m32 -fno-stack-protector -o problem problem.c -ldl 2. HINT NX bit + ASLR이 적용된 상황에서 어떻게 RTL 기법..