분류 전체보기(82)
-
[어설픈] LOB 3번 cobolt 문제풀이
안녕하세요!오늘은 LOB 3번Cobolt 문제를 풀어보도록 하겠습니다! 문제에 들어가니 아래와 같은 소스코드가주어지네요! 근데 사실 바로 직전 문제gremlin과 달라진 게 별로 없습니다!달라진 게 있다면 gremlin: argv 형식으로 입력을 받았다cobolt: stdin(standard input)으로 입력을 받는다 이게 끝이에요....입력 방식만 차이가 있지풀이나 exploit은 똑같아요 왜냐면 소스코드를 보시면버퍼가 16byte가 있죠?그리고 gets 함수로 입력을 받고 그 값을 버퍼에 저장다음에 버퍼에 저장된 값을 printf 함수로 출력! 여기서 취약점은 마찬가지로 gets 함수가 얼만큼 읽을지 크기를 안정해줘서오버플로우가 발생하는 것이죠? 즉 gremlin과 마찬가지로 main 함수의 re..
2019.03.13 -
[어설픈] LOB 2번 gremlin 문제풀이
안녕하세요!오늘은 LOB의 두 번째 문제!gremlin을 풀어보도록 하겠습니다! 우선 코드를 보니 아래와 같네요!버퍼의 크기가 gate에 비해서현저하게 줄었네요!16 byte 밖에 안되네요 ㅠㅠ 그리고 argument가 2개보다 작으면 argv error라고 뜨네요! 그리고 argv[1]의 값을buffer에 복사하네요!(여기서 취약점이 발생하죠! 얼만큼 copy할지 크기 지정이 없으니....ㅎㅎ)그리고 printf함수가 buffer에 저장된 값을 출력하네요! gate에서도 보셨듯이,red hat linux 6.2에서는 스택 사이에 dummy값이 존재하지 않습니다! [gremlin의 스택구조]buffer (16byte)EBP(4byte)RET_ADDR(4byte).....(이후 스택) 근데 저희가 gate..
2019.03.11 -
[어설픈] webhacking.kr 18번 문제풀이
안녕하세요! 오늘은 100점짜리 webhacking.kr 문제를 풀어보도록 하겠습니다! 문제에 들어가니 아래와 같이 뜨네요!바로 index.phps가 있으니저기에 SQL injection 할 때필터링 되는 단어나 규칙이 적혀있겠죠? 아래와 같이 소스코드가 나오네요!Get 방식으로 no라는 parameter를 쓰네요! 그리고 eregi 함수 문자열 필터링을 하네요!\ , / , | , \t, &, union, select, from , 0x 등을 하네요!사실 \과 & 사이에 공백도 있어서공백도 필터링 하는데이건 injection하면서 알았습니다.. 그리고 q변수에 mysql_fetch_array 결과 값을 담네요!쿼리는 "id = guest고 (no= 사용자가 입력한 no값) 충족하는 id를 18번 테이블..
2019.03.09 -
[어설픈] webhacking.kr 10번 문제풀이
안녕하세요!오늘은 250점짜리 10번 문제를 풀어보도록 할게요! 문제에 들어가니 아래와 같이 뜨네요!직관적으로 드는 생각은 "O 이걸 사용해서 lotto 사는데 성공해야 하나?" 그래서 일단 마우스 커서를O에 올려놓으니 갑자기 yOu 이렇게 바뀌네요! 흠 뭐지? 뭐 딱히 되는 게 없네요... 개발자 도구 켜서O 위에 커서 올려놓으니이렇게 이런 태그가 뜨네요!그리고 태그에 hackme라고 적혀 있는 걸 보니이 태그를 잘 활용하면 문제가 풀리나 보네요! 흠, onmouseover, onmouseout 때문에 O와 yOu로바뀌었던 거네요! 그리고 제가 O를 클릭하면 this.style.posLeft에 1씩 추가가 되나봐요!(여기서 this는 hackme를 의미해요! hackme.style.posLeft로 이해..
2019.03.07 -
[어설픈] LOB 1번 gate 문제풀이
안녕하세요!오늘은 LOB의 첫 번째 문제gate를 풀이해보도록 하겠습니다! 아래에 소스코드가 나와있습니다!첫 번째 문제라 그런지 비교적 간단하네요! 소스코드를 분석해보자면,우선 argv 형식으로 입력을 받네요! 다음으로 버퍼 크기가 256byte네요! 그리고 argument의 갯수가 2개 보다 작으면 안되요!그러면 argv error 라는 문구를 출력하고 프로그램이 종료 돼요! 그리고 바로 다음으로 strcpy 하는데!이 부분이 취약하죠!얼만큼 copy할지 크기를 지정 안해줘서 오버플로우가 터져요!뭐 FTZ에서 봤던 문제와 매우 비슷하네요! 제일 기본적인 오버플로우 풀이방법인shellcode를 그냥 버퍼에 넣고그리고 ret_addr를 버퍼의 주소로! 이건 제가 FTZ 풀이 할 때도 많이 했던 방식이죠? ..
2019.03.04 -
[어설픈] 해커스쿨 FTZ Level 17 문제풀이
안녕하세요!오늘은 오랜만에 FTZ level 17번 문제를풀어보도록 할게요! 제가 이 문제를 풀고 이해하는데 좀 오래 걸려서.. 어찌 되었건, 문제를 보면아래와 같습니다! 전 문제 16번은 shell함수가 있어서함수 포인터로 "야 shell 함수 실행시켜" 이렇게 shell 함수 주소만call 함수 포인터에 잘 넣어주면바로 문제가 풀렸죠? 이번에는 바뀌었습니다!shell 함수가 없어졌어요.... 그러면 어떻게 해야하나?저희가 직접 system함수 주소 넣고/bin/sh 인자도 줘야죠!네 맞아요 이번에도 RTL로 풀꺼에요! main함수 코드보면 16번과 비슷하죠(1) 스택에 crap 변수 쌓이고 (2) 그 위에 call 함수 포인터 쌓이고 (3) 그 위에 버퍼[20]만큼 쌓이고 (4) fgets 함수로 4..
2019.03.02