본문 바로가기

Wargame Write-Up/HackCTF69

[HackCTF] (Pwnable) ROP Write-up vulnerable_function 에서 입력을 받고, Hello world! 를 출력한다. 0x100-0x88 = 0x78 (120) 만큼 overwrite 할 수 있다. SSP 가 설정되어있지 않으므로, BOF 를 마구마구 일으킬 수 있다. write 함수로 write.got 주소를 leak 한뒤, 라이브러리베이스주소로 oneshot 함수의 주소를 구해서 Helloworld! 를 출력해주는 write.got 를 overwrite 하든지 (하지만 원샷가젯이 작동을 안해서 못한다..) system 과 /bin/sh 문자열의 주소를 구해서(또는 bss 영역에 /bin/sh 문자열을 쓰고) vulnerable_function 함수를 재호출해서 system 으로 리턴하자. from pwn import * r=.. 2020. 8. 26.
[HackCTF] (Pwnable) UAF Write-up 노트를 만들고 삭제할 수 있다. void add_note(void) { int iVar1; void *pvVar2; size_t __size; int in_GS_OFFSET; int local_20; char local_18 [8]; int local_10; local_10 = *(int *)(in_GS_OFFSET + 0x14); if (count < 6) { local_20 = 0; while (local_20 < 5) { if (*(int *)(notelist + local_20 * 4) == 0) { pvVar2 = malloc(8); *(void **)(notelist + local_20 * 4) = pvVar2; if (*(int *)(notelist + local_20 * 4) == 0) {.. 2020. 7. 7.
[HackCTF] (Pwnable) pwning 풀이 void vuln(void) { char local_30 [32]; int local_10; printf("How many bytes do you want me to read? "); get_n(local_30,4); local_10 = atoi(local_30); if (local_10 < 0x21) { printf("Ok, sounds good. Give me %u bytes of data!\n",local_10); get_n(local_30,local_10); printf("You said: %s\n",local_30); } else { printf("No! That size (%d) is too large!\n",local_10); } return; } vuln, 취약점이 발생한다는 뜻으로 쓰인다.. 2020. 6. 24.
[HackCTF] (Pwnable) Gift 풀이 snwo@snwo:~/Documents/GitHub/Wargame/Pwnable/HackCTF$ ./gift Hey guyssssssssss here you are: 0x8049940 0xf7d92200 good good hello 이렇게 두 주소를 준다. gdb 로 확인해보니, 첫번째주소는 전역변수 binsh 의 주소이다. 근데 아무런 데이터도 없는걸 봐선 내가 저 주소에 binsh 를 입력해야 하는 것 같다. 두번째주소는 system 함수의 주소이다. 0x080485cc :push eax 0x080485cd :push 0x80 0x080485d2 :lea eax,[ebp-0x84] 0x080485d8 :push eax 0x080485d9 :call 0x80483e0 0x080485de :add esp.. 2020. 6. 24.