본문 바로가기

Wargame Write-Up141

[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.
[Pwnable.kr] (Pwnable) simple login 풀이 simple login | 50 pt 50 point 이므로, 페이로드가 비교적 짧을것같다. Authenticate : snwo hash : f95abb977080593669adc510ab8e16d7 이렇게 입력을 받고, 해쉬값을 생성해서 종료한다. main ( void ) undefined4 main(void) { int iVar1; void *local_38; undefined local_32 [30]; uint local_14; memset(local_32,0,0x1e); setvbuf((FILE *)stdout,(char *)0x0,2,0); setvbuf((FILE *)stdin,(char *)0x0,1,0); printf("Authenticate : "); __isoc99_scanf(&DAT_.. 2020. 7. 30.
[Pwnable.kr] (Pwnable) md5 calculator 풀이 md5 calculator | 200pt captcha 를 입력받고, BASE64 인코딩된값을 입력받고, MD5 한 결과를 돌려준다. gdb-peda$ checksec hash CANARY : ENABLED FORTIFY : disabled NX : ENABLED PIE : disabled RELRO : Partial 카나리와 NX가 설정되어있다. main undefined4 main(void) { uint __seed; int local_18; int local_14; setvbuf(stdout,(char *)0x0,1,0); setvbuf(stdin,(char *)0x0,1,0); puts("- Welcome to the free MD5 calculating service -"); __seed = t.. 2020. 7. 29.
[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.