분류 전체보기 썸네일형 리스트형 LOB 6번 (wolfman → darkelf) vi darkelf.c argv[2]를 사용하여 푸는 5,6번과 차이점은 단지 argv[1]의 길이를 확인하여 48이 넘으면 종료시키므로 RET에 접근이 가능하다. strcpy함수 전까지 브레이크포인트 계획) A로 44byte채우고 argv[2]의 주소를 RET에 채우고 쉘 실행 r `python –c ‘print“\xbf”*48’` `python –c ‘print“A”*100’`을 실행시켜 argv[2]의 주소를 찾자. argv[2]의 주소 : 0xbffffc13 더보기 FTZ level 3 -동시에 여러 명령어를 사용하려면? →세미콜론 사용 -문자열 형태로 명령어를 전달하려면? →큰따옴표로 시작해서 큰따옴표로 끝냄 따라서autodig을 실행시킬 때 “/bin/bash;my-pass”인자로 전달 autodig위치 더보기 FTZ level 2 editor 실행 editor를 열어보면 vi editor가 나온다 +)VI(visual editor)? 유닉스 시스템에서 주로 사용하는 텍스트 편집기 vi editor에서 Shifht: 를 눌러주면 입력모드로 변환된다. vi editor에서 !는 외부의 쉘을 실행시켜주는 명령어 더보기 FTZ level 1 +)find명령어 옵션 중 –perm -perm옵션은 특정 실행 권한을 찾을 수 있게 해준다. find /-perm –770 : 770을 포함하는 퍼미션을 찾아라 find / -perm +770 : 770의 일부만이라도 포함하는 퍼미션을 찾아라 find / -perm 770 :770과 똑같은 퍼미션을 찾아라 +)2>/dev/null? /dev/null = 1>/dev/null : STDOUT(표준출력, 정상적인 메시지를 null로) 2>/dev/null : STRERR(표준에러, 에러메시지를 null로) /dev/null은 쉽게말해 블랙홀 my-pass와 chmod는 제외한 명령어를 쳐서 level2의 권한을 유지해야하는데 LOB를 계속 풀어와서 그런지 /bin/bash 쉘을 획득하면 된다는 생각이 든다.. 더보기 [pwnable.kr] PASSCODE pwnable.kr passcode 풀이 2016.08.15. passcode 코드 +) fflush(stdin)? 잔류한 입력 버퍼를 지울 때 사용한다. 예를 들어 무언가를 입력하고 엔터를 쳤으면 이 엔터는 어디 가지 않고 버퍼에 남게 된다. 이런 것들을 청소할 때 쓰는 명령어 여기서는 passcode1을 입력하면 fflush로 stdin에 passcode1에 들어갔던 입력값을 지운다. 일단 코드를 실행시켜 passcode1과 passcode2에 각각 338150, 13371337을 입력해보자 코드대로라면 cat flag를 실행시켜야하지만 세그멘테이션 폴트가 떴다. 그런데 코드를 자세히보니 scanf함수에 &가 없다. ‘&변수’형태가 변수가 들어있는 주소이고 scanf가 이 주소에 들어있는 값을 가지고.. 더보기 [pwnable.kr] FD pwnable.kr fd풀이 2016.08.31. vi fd.c atoi()는 ()안의 문자열에서 정수만 받는건데 예를들어 atoi(2007)이면 2007, atoi(2007start)이면 2007이지만 atoi(start2007)이면 0이다. 문자열에 정수까지만 받는 함수라고 이해하면 될 거 같다. read(fd,buf,32)는 fd 즉 파일디스트립트 값을 읽어서 32byte만큼 읽어 buf에 데이터를 저장한다는 건데 buf와 LETMEWIN을 비교해서 맞아야한다. 우선 0x1234를 십진수로 바꾸면 4660이 나온다. 그래서 일단은 그냥 생각나는대로 페이로드를 작성해서 때려봤는데 이렇게 하는 건 아닌가 싶어서 우선 fd에 대한 정확한 개념이 없어 찾아보았다. fd는 0,1,2로 반환하는데 0은 std.. 더보기 [pwnable.kr] BOF pwnable kr bof 풀이 2016.08.14.SUN bof 코드 main함수를 보면 0xdeadbeef를 func함수로 보내는데 func함수에서는 이를 key로 받는다. 그리고 key와 0xcafebabe값이 같아야 /bin/sh 쉘을 열어 공격성공을 할 수 있는데 우선 코드를 gdb까서 스택에 쌓인 구조를 분석해보자. disas main disas func func함수를 분석해보면 gets함수로 ebp-0x2c부터 ebp+0x8까지 overflowme인자를 받아들이는데 두 주소의 차이는 10진수로 52가 차이나므로 B로 52개를 채우고 key값을 0xcafebabe로 덮으면 /bin/sh쉘을 띄울 수 있을 것이다. flag : daddy, I just pwned a buFFer :) 더보기 [webhacking.kr] challenge 4 webhacking.kr challenge 4 2016.08.17. 들어가면 이렇게 나오는데 생긴게 끝이 ==이고 회원가입할 때 ‘decode me’에 있던거랑 비슷한 모양이길레 디코딩을 했더니 이렇게 떴다. 이게 password는 아닌거같아 다시 한번 더 디코딩을 했는데 아닌거 같다. 그래서 찾아보니 해시 함수를 이용하여 풀면 될 거 같다. +) 해시? 어떤 데이터(key)를 고정된 길이의 데이터(hash)에 매핑시키는데 그 매핑되는 과정이 해시 함수(hash function) 해시 함수는 key와 hash를 매핑하는 알고리즘 알파벳과 숫자로 이루어져있으니까 16진수 해시일 것이다. 세아려보면 총 40글자인데 16진수 한자리는 4bit이므로 총 160bit이다. 그래서 ‘160bit 해시’를 검색해보았.. 더보기 [webhacking.kr] challenge 1 webhacking.kr challenge 1 2016.08.17. 일단 들어가면 이런 게 뜨는데 index.phps를 누르면 코드가 뜬다. user_lv쿠키값에 0~9까지숫자,.를 제외한 문자열이 있으면 쿠키값을 1로 설정한다. user_lv쿠키값이 6이상이면 쿠키값을 1로 설정하고 5를 초과하면 solve();발동 그러면 쿠키값을 5초과 6미만 값으로 고치자. (EditThisCookie) 이렇게 쿠키값을 입력하고 다시 index.php로 돌아가면 Congratulations!창이 뜬다. 더보기 [webhacking.kr] 회원가입 webhacking.kr을 들어가면 화면이 뜨는데 회원가입 버튼이 없다. F12를 눌러서 코드를 확인해본다. 주석처리가 된 Register부분이 있고 저기에 마우스를 가져다대니 웹화면에 초록색 공간이 뜬다. Edit as HTML로 주석을 없애고 나니 웹화면에 Register버튼이 생겼다. 버튼을 누르면 회원가입 창으로 넘어가는데 캡쳐를 하진 못했는데 아이디, 패스워드, 이메일 입력하고 ‘decode me = VFdwSmVreHFUWGxNYWtsNVRXazBlVTFFV1QwPQ==“란 것이 있다. 디코드 사이트에 가서 계속 디코딩을 한다. 1번 2번 3번 이거를 decode me 부분에 입력하면 회원가입이 완료된다. 회원가입하기도 힘들다. 더보기 이전 1 ··· 7 8 9 10 11 다음