본문 바로가기

Wargame/▷ pwnable.kr

(12)
[pwnable.kr] flag 엇 포너블 문제가 아닌 리버싱 문제다.파일 다운받아보면 IDA로 코드가 잘 안보이는데 일단 peid로 보았다. 밑에 언팩 정보를 보면 UPX 가 걸려있다는걸 확인할 수 있다. https://github.com/upx/upx/releases여기서 upx 다운받고 터미널에서 upx -d flag 쳐주면 된다. 문제 힌트보면 malloc로 공간을 확보해준 뒤에 거기다가 flag를 넣었다고 써있다.gdb로 브포건 후 디버깅하여 해당 값을 확인하였다 RDX에 flag 문자열이 들어간걸 보아 mov rdx, QWORD PTR [rip+0x2c0ee5] 부분이 flag 값을 넣는 코드인걸 확인했다.
[pwnable.kr] bof 간단한 bof 문제 같다. 12345678910111213141516171819#include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme); // smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); }}int main(int argc, char* argv[]){ func(0xdeadbeef); return 0;} Colored by Color Scriptercsbof.c 소스다. 사실 여기서 살짝 해맸는데.. 저 소스 자체를 내 우분투 에서 컴파일 하여 오버플로우를 하려 했는데gd..
[pwnable.kr] collision 해쉬 충돌에 관한 문제인것 같다. hash collistion은 reversing.kr CRC1 을 풀어보면서 익혔었는데 생각보다 골치아팠다 ㅋㅋ.. 123456789101112131415161718192021222324252627282930313233col@ubuntu:~$ cat col.c#include #include unsigned long hashcode = 0x21DD09EC;unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i
[pwnable.kr] fd 포너블 잠깐 맛보면서 제일 먼저 풀어봤던 문제다. 1234567891011121314151617181920212223fd@ubuntu:~$ cat fd.c#include #include #include char buf[32];int main(int argc, char* argv[], char* envp[]){ if(argc