Karatus
OllyDbg (Reversing Tool)
역공학(Reversing)시 이용할 수 있는 툴입니다. 어셈블러로 이루어진 환경 속에서 리버싱 문제를 풀 때 이용됩니다. [도움되는 사이트] OllyDbg 다운로드 & 기본설정 OllyDbg 기본 사용법 OllyDbg 유용한 플러그인
[level3] Write-Up : SetUID의 취약점 3
level3 / can you fly? 접속 후에 바로 cat hint로 어떤 힌트를 줄지 보도록 합시다. 이번 힌트는 조금 길군요. 어셈블러를 리버싱하며 얻은 지식이 여기서 도움이 되는군요. ㅎㅎ int main(int argc, char **argv) 부분을 보시면 int argc : 해당 파일(여기서는 autodig)을 실행시킬 때 넘겨받은 인자 값의 개수 char **argv : 넘겨받은 인자 값들의 스트링을 인자값의 개수만큼 저장하고 있습니다. ...더보기 예를 들어보겠습니다. ./autodig 9 hello 로 이 파일을 실행시켰다고 가정했을 때 argc = 3 *argv[0] = "./autodig" | *argv[1] = "9" | *argv[2] = "hello" 이렇게 저장이 되어 ma..
[level2] Write-Up : SetUID의 취약점 2
지난번에 얻은 level2의 암호를 통해 접속해보도록 합시다. level2 / hacker or cracker cat hint 를 통해 이번은 어떤 힌트인지 보았습니다. 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다고 합니다. 텍스트 파일 편집 프로그램을 제공하는 것 같은데 어떤 건지 한 번 찾아보도록 합시다. find / -user level3 -perm -4000 2> /dev/null editor라는 이름의 실행파일인 것 같습니다. 자세히 한 번 보도록 하죠. ls -l /usr/bin/editor rws
[level1] Write-Up : SetUID의 취약점 1
FTZ(Free Training Zone)의 트레이닝(1~10)을 완료하고 맞이하는 첫 번째 문제입니다. 이제 PuTTY를 실행시키고, level1 / level1 으로 접속해봅시다. ls -l 명령어로 무엇이 존재하는지 살펴보도록 합시다. hint 라고 저긴 파일을 cat 명령어를 통해 알아보도록 합시다. (혹시 한글이 나오지 않고 깨져 보인다면 -> 여기로) level2 권한에 setuid가 걸린 파일을 찾으라는군요. 그럼 'level2' 권한(user)에 'setuid(4000)' (perm)을 가진 파일을 다 찾아봐야겠군요. find 명령어를 통해 찾아보도록 합시다. find / -user level2 -perm -4000 (-perm 뒤에 - 는 '최소한'이라는 의미를 가집니다.) 정보가 너무 ..
[24번(old)] Write-Up
처음 들어가게 되면 이런 화면이 보입니다. Wrong IP! 라는 문구가 왠지 저한테 IP를 바꿔야 한다고 말하고 있는 것 같군요. 그래서 일단 view-source를 통해 소스를 보기로 했습니다. 여기서 주목해야 할 점은 바로 extract($_SERVER), extract($_COOKIE) 입니다. php에서 extract() 함수는 배열 속의 키 값을 변수화 시켜줍니다. REMOTE_ADDR, HTTP_USER_AGENT 같은 변수들이 변수화되었다는 것을 알 수 있습니다. (저는 나중에 안 사실이지만, $_SERVER보다 $_COOKIE가 나중에 선언되었기 때문에 cookie를 통해 조작이 가능한 것이었습니다.) 풀이 방법을 먼저 말해버린 것 같지만 아무튼 cookie를 조작해야 한다는 것을..
[1번(old)] Write-Up
webhacking.kr 사이트가 개선되기 이전에 가입했다가 손 놓고 있었다가 이번에 본격적으로 해킹을 공부하게 될 기회가 생겨 1번부터 차근차근 풀어보기로 하였습니다. 들어가자마자 이런 게 보이는군요. view-source를 클릭해 어떻게 구성이 되어있는지 알아보도록 하겠습니다. 여기서 저희가 주목해야 할 점은 이 php 소스가 언제 solve(1);이라는 함수를 실행시켜주느냐입니다. 역시나 눈에 띄는 건 COOKIE라는 이름들이고, 실제로 SetCookie라는 함수를 통해 cookie를 세팅해주고 있는 모습입니다. 여기서 가장 쉽게 생각할 수 있는 것은 $5 \lt $user_lv $\lt 6$이 되어야 한다는 것입니다. 그렇다면 저희가 잘 아는 데이터 타입이 하나 있죠. 바로 '실수(Real Num..
[2578번] 빙고
백준 2578번: 빙고 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 빙고판에 쓰여진 수와 사회자가 부르는 수는 각각 1부터 25까지의 수가 한 번씩 사용된다. www.acmicpc.net 이 문제는 조금 생각해야 할 게 필요합니다. 제가 틀렸던 과정을 최대한 비슷하게 밟아보겠습니다. 처음에는 단순하게 5X5 크기의 빙고판이니 '브루트 포스' 기법으로 풀 수 있겠다는 확신이 들었습니다. 그러니 대각선과 가로, 세로줄을 검사하여 빙고인지 검사할 함수와 빙고의 개수를 세어주기만 하면 된다고 생각했습니다..
[2156번] 포도주 시식
백준 2156번: 포도주 시식 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고 www.acmicpc.net [해당 포스팅]과 완전히 같습니다. 달라 보이신다고요? 아닙니다. 잘 살펴봅시다. 위의 포스팅에서 소개된 문제는 "계단 오르기" 문제인데요. 두 문제의 조건 차이는 단 ..
[2579번] 계단 오르기
백준 2579번: 계단 오르기 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 www.acmicpc.net 계단을 오르는데 조건을 만족시키며 지나가는 계단 값들의 합 중 최댓값을 구하는 문제입니다. DP를 이용하여 풀어야하는 느낌이 듭니다. 그래서 아이디어를 생각해봐야 합니다. 현재 밟고 있는 계..
[5582번] 공통 부분 문자열
백준 5582번: 공통 부분 문자열 5582번: 공통 부분 문자열 문제 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들어, 문자열 ABRACADABRA의 부분 문자열은 ABRA, RAC, D, ACADABRA, ABRACADABRA, 빈 문자열 등이다. 하지만, ABRC, RAA, BA, K는 부분 문자열이 아니다. 두 문자열 ABRACADABRA와 ECADADABRBCR www.acmicpc.net LCS 알고리즘에 대해 아시나요? 혹시 모르신다면 [여기]를 참고하시고 다시 와 주세요. 아무튼 이 문제는 LCS 문제와는 약간의 차이가 있습니다. 그때는 각..