전체 글

전체 글

    DreamHack : off_by_one_000

    Ubuntu 16.04 Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) #include #include #include #include #include char cp_name[256]; void get_shell() { system("/bin/sh"); } 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..

    HackCTF - basic_fsb

    HackCTF - basic_fsb

    main 함수를 IDA에 넣어보았다. vuln() 도 보자 snprintf의 존재를 잘 모르겠다. 알아보자 버퍼에 복사하는 거라고 한다. 여기서는 s에 있는 값을 format으로 가져오는 거겠지. 0x400만큼. 사이즈가 정해져있다는 점이 중요하다. 버퍼 오버플로우는 사용할 수 없다는 뜻. 일단 넣어주면 1023개 출력해준다. 0x400에서 그만큼 가져오니까 그런것도 있고, snprintf에서 그렇게 출력해주는 이유도 있겠지.

    Overthewire : Bandit  Level 1 ~ Level26

    Overthewire : Bandit Level 1 ~ Level26

    마크다운으로 했는데 이미지를 많이 넣었더니 수정하기가 귀찮다..... 그래서 걍 pdf 로 올려놔야겠다... 아님 이걸로도 볼 수는 있다 www.notion.so/week-1-db52270206584ba9b10cfc0b8a4e05ff

    webhacking.kr : challenge 33

    webhacking.kr : challenge 33

    첫번째 소스코드는 다음과 같다. Challenge 33-1 view-source ?get=hehe를 넣어줬다. _____________________________________________________________________________________ 다음 소스코드가 나왔는데 Challenge 33-2 view-source 이번에는 get 방식이 아니라 post 방식으로 받는다. 즉 입력을 다른 방식으로 해주되, post랑 post2로 해줘야한다. 문제 출제의도자체가 get이랑 post 차이점을 파악하는거 같다. get 방식 자체는 ?를 이용해서 input값을 넣어주어야 하는데, post 방식은 그게 아니고, 코드 안에 직접 넣어주는 형태로 들어간다. 즉 소스코드에 다음과 같이 추가해준다. ..

    webhacking.kr : challenge 27

    필터링 항목부터 체크하자 if(preg_match("/#| select | \( | | limit | = | 0x /i",$_GET['no'])) exit("no hack"); select, \(, limit, =, 0x를 필터링한다. 못봤는데 공백도 필터링한다. $r=mysqli_fetch_array(mysqli_query($db,"select id from chall27 where id='guest' and no=({$_GET['no']})")) or die("query error"); 여기서 인증을 해주는데, GET방식으로 가져오는거 확인했다. 가져오는 대상은 no다 . where id ='guest' and no=('false') or id='admin' and no=('2') 를 주면 될 거같은..

    webhacking.kr : challenge 25

    일단 flag.php 를 열어보면, FLAG is in the code 라고 나오는데, hello 파일은 기본으로 열려있는 것이고, index 에는 아무것도 들어있지 않다. 일단 개발자 도구에 있는 파일을 index.php?fille=flag 파일이다. 즉 우리가 원하는 flag.php가 아니다. RFI 와 LFI (Local File Inclusion) 공격을 이용해서 할 수 있다고 한다. 여기서는 LFI를 사용하는데, php 코드상에서 include() 사용시 input 에 대한 적절한 필터링이 이루어지지 않아 발생하는 취약점이라고 한다. 우선 wrapping 방식들 중에서 php://filter 를 이용해서 푼다. 주로 인코드/디코드 옵션을 이용해서 서버안의 문서를 열람할 수 있다. 파일값을 bas..

    webhacking.kr : challenge 24

    webhacking.kr : challenge 24

    여기서 모르는 것부터 먼저 찾아봅시다. htmlspecialchars(); -> 특수문자를 일반 문자열로 인식할 수 있도록 바꿔주는 역할. ip = 127.0.0.1 이 되면 인증이 될 것 같다. 이렇게 넣어주게 된다면 127.0.0.1 ->7.0.0.1->0.0.1->1 이렇게 된다. 역과정을 보면 112277...0.0.1 127.1 0.0. 이 없어지는 것을 우회하면 될듯 112277...00...00...1 정답

    webhacking.kr : challenge 23

    webhacking.kr : challenge 23

    Your mission is to inject 이게 궁극적 목표다 일단 제출 칸의 값의 이름은 code다. 필터링 목록이 없다. 알파벳을 연속되게 해주면 필터링하는거같다. 일단 html로 인코딩해서 넣어주었다. Your mission is to inject alert(1); 이렇게 들어갔는데 왜 안되누 일단 이게 코드값으로 들어가서 안되는거같다. 이걸 실행으로 해주려면 .. 문자 사이사이에 NULL문자를 넣어주면 된다. 그러면 필터링에 안걸리니까 ?code=a%00l%00e%00r%00t%00(1);