포너블(15)
-
HACKCTF - Basic_BOF #2
가장 먼저 해야할 일은 역시 실행시켜보는 것 이상한 문구가 나와서 당황했습니다. 따라서 이 프로그램은 뭔가 넣으면 뭔가가 나오는 프로그램 인것을 알 수 있죠 더 이상은 모르니 IDA로 까보면 1. [7번줄] s에 0x85사이즈의 값을 받아넣는다 2. [6번줄] s값을 출력하는 함수의 주소를 v5에 넣는다 3. [8번줄] s값을 출력하는 함수 주소 실행 그럼 이제 어떻게 풀어야할지 생각을 해야하는데 그 전에 보호기법 확인해서 풀이방향을 좁혀보자. nx가 가능하니까 단순 bof로 쉘코드를 넣는건 불가능(짜피 버퍼 크기 딸려서힘듬) 그럼 ROP쪽이나 BOF에서 리턴주소 바꿔서 하는 가능성이 커보여서 함수들 찾아보는 중 에 초반에 나온 "하아하아하아하아"그 멘트를 찾고자 STRING을 봤는데 /bin/dash를..
2020.07.07 -
codegate2018 - BaskinRobins31
오래간만에 블로그에 포스팅은 하네요 ㅎㅎBaskinRobins31입니다. 12345678910111213141516171819202122232425262728293031323334353637383940from pwn import * r = process("./BaskinRobins31")e = ELF("./BaskinRobins31")l = e.libc write_plt = e.plt["write"]write_got = e.got["write"]read_plt = e.plt["read"]read_got = e.got["read"]bss = e.bss() + 16shell = "/bin/sh"pop_rdi_rsi_rdx = 0x000000000040087apop_rdi = 0x0000000000400bc3..
2018.10.31 -
tamuCTF2018 - pwn3
tamuCTF2018 pwn3번입니다. 가장먼저 nx가 걸려있지않아서 shellcode 삽입이 가능합니다. ida32bit로 한번 까보면 이렇게 나오고 gets에서 bof가 일어납니다. payload내부에 shellcode를 삽입해서 진행하면 되겠네요 ㅎㅎ 3번까지는 풀었는데 4번 파일을 찾고있습니다 ㅠㅠ 풀렸네요 ㅎ (grin)
2018.09.14 -
pwnable.kr - cmd2
이번 문제는 pwnable.kr - cmd2문제입니다.cmd1보다는 필터링이 상당히 많아져서 삽질좀 많이 했네여 123456789101112131415161718192021222324252627282930#include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "=")!=0; r += strstr(cmd, "PATH")!=0; r += strstr(cmd, "export")!=0; r += strstr(cmd, "/")!=0; r += strstr(cmd, "`")!=0; r += strstr(cmd, "flag")!=0; return r;} extern char** environ;void delete_env(){ char** p; for(p..
2018.09.09 -
pwnable.kr - cmd1
pwnable.kr cmd1문제입니다. 간단하게 우회해서 풀을 수 있었습니다. 소스코드는 1234567891011121314151617#include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r;}int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0;} Colored by Color Scriptercs 다음과 같습니다.f..
2018.09.03 -
pwnable.kr - lotto
pwnable.kr - lotto 문제입니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697#include #include #include #include unsigned char submit[6]; void play(){ int i; printf("Submit your 6 lotto bytes : "); fflush(stdout); int r; r = read(0, submit, 6); printf("Lotto Start..
2018.09.02