PWN(20)
-
[Dreamhack] baby-bof
#include #include #include #include #include #include #include void proc_init () { setvbuf (stdin, 0, 2, 0); setvbuf (stdout, 0, 2, 0); setvbuf (stderr, 0, 2, 0); } void win () { char flag[100] = {0,}; int fd; puts ("You mustn't be here! It's a vulnerability!"); fd = open ("./flag", O_RDONLY); read(fd, flag, 0x60); puts(flag); exit(0); } long count; long value; long idx = 0; int main () { char n..
2023.12.10 -
[ codegate - pwn] librarian
main __int64 __fastcall main(__int64 a1, char **a2, char **a3) { unsigned int v3; // eax int v5; // [rsp+8h] [rbp-798h] BYREF int v6; // [rsp+Ch] [rbp-794h] char book_list[1928]; // [rsp+10h] [rbp-790h] BYREF unsigned __int64 v8; // [rsp+798h] [rbp-8h] v8 = __readfsqword(0x28u); sub_184C(); v3 = time(0LL); srand(v3); memset(book_list, 0, 0x780uLL); while ( book_num 14 ) { puts("The book list is ..
2023.06.18 -
[ CCE 사이버공격방어대회 ] n0t rand0m
우리 팀이 예선 7등으로 본선을 가게 되었다. 그런데 좀 아쉬운 점은 내가 개인사정으로 인해 본선날에 시간이 안 돼서 못 간다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 전체 코드 void __fastcall __noreturn main(int a1, char **a2, char **a3) { unsigned int v3; // eax unsigned int nbytes; // [rsp+0h] [rbp-30h] unsigned int case_1; // [rsp+4h] [rbp-2Ch] char name[8]; // [rsp+8h] [rbp-28h] BYREF char comment[24]; // [rsp+10h] [rbp-20h] BYREF unsigned __int64 v8; // [rsp+28h] [rbp-8..
2023.06.12 -
[ Dreamhack ] __environ
이 문제도 바로 이전에 올린 블로그 내용과 같이 environ ptr을 사용해서 푸는 문제이다. #include #include #include #include #include void sig_handle() { exit(0); } void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); signal(SIGALRM, sig_handle); alarm(5); } void read_file() { char file_buf[4096]; int fd = open("./flag", O_RDONLY); read(fd, file_buf, sizeof(file_buf) - 1); close(fd); } int main() { char buf[1024]; lon..
2023.06.09 -
[ Dreamhack ] environ
#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(60); } int main() { char buf[16]; size_t size; long value; void (*jump)(); initialize(); printf("stdout: %p\n", stdout); printf("Size: "); scanf("%ld", &size); printf("Data: "); read(0..
2023.06.09 -
[ Dreamhack ] BINARY_FIX_TOOL
이 문제는 일반적인 포너블 문제처럼 바이너리가 제공되지 않고 nc로 접속해서 바이너리를 fix하고 실행시켜 쉘을 따야 한다. 1번 메뉴를 통해 바이너리를 bytes 또는 인코딩 된 것으로 볼 수 있다. bytes로 바이너리를 출력해보겠다. 그럼 위와 같이 뭐가 많이 나온다. 위 프로그램은 printf로 Hello world를 출력해주는 코드이다. 바이너리에서 저 printf 부분과 Hello world를 출력해주는 프로그램이다. 그런데 바이너리에서 저 함수 있는부분을 만약 puts로 변경하면 이 프로그램은 실행될 때 puts("Hello world")로 실행이된다. 현재 문제에서 바이너리를 fix 할 수 있기 때문에 저 printf를 system으로 변경하고 Hello world 부분을 sh\x00으로 ..
2023.06.01