분류 전체보기
-
[Pwnkr] Blukat Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 15. 18:49
이번 문제는 Blukat이다. 이번 문제의 힌트를 보도록 하겠다. 흠.. 때때로 포너블은 이상하다며 이 문제가 어려우면 너는 숙련된 플레이어라고??흠.. 난이도가 많이 어려운 문제는 아니며 쉽게 생각하라는 의미같다. 우선 주어진 소스코드를 보았다.코드를 보니 password를 맞추어야 FLAG를 계산하는 함수가 작동하여우리에게 FLAG를 보여주도록 되어있었다. 그렇다면 위에서 FLAG를 계산할 때 사용되는 key의 길이와 우리가 입력하는 길이의 값이 같을 것이라는 생각이 들었다. key의 길이는 33자리다. 이번에는 어셈블리어 코드를 확인해보도록 하겠다.비교를 하는 strcmp함수에 break point를 걸고 실행을 시켜보았다.strcmp이전에 들어간 인자들을 살펴보았다. 인자값은 우리가 입력할 수 있..
-
[Pwnkr] Black Jack Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 15. 16:23
이번 문제는 Black Jack이다. 힌트를 보았더니 돈이 그냥 많으면 준단다. 백만장자한테 준다는데.. 코드를 보도록 하자.음... 길다... 길어서 다 보여주기 힘들다.문제에 링크가 있으니 참고하길 바란다. 일단 프로그램을 실행해보도록 하겠다.블랙잭 게임이 뭔지는 잘모르지만 돈을 배팅하고배팅한 돈의 일정한 비율로 돈을 따는 게임인 것 같다. 백만장자한테 FLAG를 준다고 했으니 돈에 관련된코드에 분명히 취약점이 있을 것 같았다. 그래서 우선적으로 눈에보이는 Bet에 대해서 검색을 해보았다.이 함수가 바로 배팅관련 함수이다. 이름이 그냥 betting( ) !!우리가 배팅하고 싶은 금액을 입력할 수가 있다. 하지만 현재 가지고 있는cash보다 배팅 금액이 클 경우 너는 가진돈보다 많은 돈을 배팅했다며메..
-
[백준] 연구소 14502알고리즘/백준 BAEK JOON 2019. 4. 15. 15:33
한동안 알고리즘을 하느라 블로그 글을 쓰지 못했다ㅠ오늘부터는 알고리즘 풀이에 대한 글도 써보려고 한다ㅎㅎ 그 첫 번째 문제는 연구소이다. 백준 홈페에지( https://www.acmicpc.net/ )에 가면 누구나 풀어볼 수 있다.연구소 14502 https://www.acmicpc.net/problem/14502알고리즘을 시작한지 얼마안되서 역시나 풀이가 어색할 수도 있다ㅎㅎ포너블과는 다른 매력이 있는 것 같다. (개인적으로는 포너블이 더 즐거움) 문제는 다음과 같다.N x M으로 이루어진 지도가 있고 그 곳에는 바이러스와 벽, 그리고 공간이 있다.바이러스는 벽이아닌 공간으로 점차적으로 퍼져나가는데 우리는 3개의 벽을 세울 수 있다.이 때 세우는 3개의 벽 3개는 꼭 세워야 한다. 여기까지 문제를 읽..
-
[Pwnkr] Cmd1 Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 4. 03:16
이번 문제는 어렵다기보다는 비교적 쉬운 문제에 속한다.코드를 보도록 하자!! filter 함수에 우리가 넣는 argv[1]이 인자로 넘어가는데strstr함수를 이용하여 r을 return하고 있다.strstr( ) 함수의 return값은 해당 문자열의 위치 포인터인데이 문제에서는 flag , sh, tmp 중 어떠한 문자열이라도 argv[1]에 속한다면1을 return하게 된다. 하나라도 발견된다면 참이되어서 main함수에서의if문을 통과할 수가 없다. 통과하더라도 argv[1]이 system() 함수에서명령을 실행할 수 있는 문자열이여야 한다. 가장 기본적으로 생각할 수 있는 것은 일단 우리는 flag를 봐야하기 때문에 argv[1]로 "/bin/cat flag"를 생각해볼 수 있다.하지만 flag가 들..
-
[Pwnkr] Lotto Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 3. 18:36
이번 문제는 Lotto이다!!이번 문제를 푸는 열쇠는 바로 Logic Bug를 찾아내는 것이다.lotto buffer가 랜덤값으로 바뀌기 때문에Brute force 공격을 이용해야했다. 우선 코드를 보도록 하자!! 이 문제의 열쇠는 빨간 산자의 play함수 내의 이중 for문이다. 취약점이라기 보다는 logic bug이다. match라는 변수의 값이 6이되면 FLAG를 볼 수 있게되는데랜덤 값인 lotto와 우리가 입력할 수 있는 submit를 비교해서같으면 match값이 증가한다. 하지만 이 부분의 logic bug는다음과 같다. 언뜻 보기에는 배열(1Byte) 하나씩 값이 같은지비교하는 것 같지만 사실은 하나만 같아도 match를 6으로 만들 ..
-
[Pwnkr] Leg Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 2. 19:12
이번 문제는 leg였다. 역시나 조금 어려웠던 것 같다.거의 다 풀었는데.. 까비..주어진 코드를 보도록 하자. 코드를 보면 우리가 입력할 수 있는 key값을 각각의key1( ), key2( ), key3( )의 리턴값들을 더한 것과 같으면 FLAG를 볼 수 있다는 것을 알 수 있다. 즉 코드를 분석할 줄알아야한다. 또하나 주어진 코드를 보도록 하자. 어셈블리어 코드를 주었다.코드가 너무 길어서 짤랐다. main의 어셈블리어 코드를 보면 함수가 끝나고난 뒤 r0의 값을 가지고 모으는 것을 알 수 있다. 이를 통해 r0가 함수의 리턴값이라는 것을예측할 수 있었다. key1( )과 key2( )가 끝나고 나온 리턴값 r0를 각각r4와 r3에 저장했고 add를 ..
-
[Pwnkr] Shellshock Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 1. 23:31
이번 문제는 Shellshock 문제이다. 감이오지 않아서 우선 힌트를 보았다. 그리고 코드를 보았다.코드를 보았더니 그냥 문득 들었던 생각은 FTZ문제들이 떠올랐다. 뭔가 FTZ 초반에 나왔던 연속적인 명령어 실행이나 어떠한 실행파일이 실행시에 지니는 권한을 이용하는 문제같다는 느낌이 들었다. 해볼 것도 없었지만 shellshock 실행파일을 실행시켜보았더니shock_me라는 문자열이 출력되었다. 뭔가 내가 모르는 어떠한 취약점을 이용한 공격이라는 생각이 들었고shellshock를 검색해보았다. 그랬더니 역시나 shellshock bash shell 취약점이존재한다는 것을 알게 되었다. 그래서 이 취약점을 공부해보았다. 이 취약점은 bash shell에서 임의의 환경변수에 특정 코드를 삽입하여실행할 수..
-
[Pwnkr] Mistake Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 1. 23:30
이번 문제는 Mistake 풀다보니까 풀려버린문제다;; 우선 코드를 보도록 하자.파란상자는 주어진값들과 입력받은 값을 XOR연산하는 함수가 정의된 내용이고빨간상자는 이상하다고 느껴서 표시를 해두었다. 첫 번째 빨간상자를 보면 open을 기준으로 양쪽에 " = " 와 " " 가 있다. 흠.. 여기서 힌트를 떠올려 보게 되었다.operator priority ??? 연산자 우선순위?? 힌트를 통해 연산자 우선순위에 대한 문제라고 예상할 수 있었다. 이 문제에서 중요한 것은 우선순위이다. " 비교연산자가 대입연산자보다 우선순위가 높다!! " 첫 번째 빨간상자의 if문을 보면 password파일이 저 경로에 있기 때문에양수값..