표튜터와 함께하는 Pwnable
-
[LOB] Darkelf -> Orge Write-up표튜터와 함께하는 Pwnable/The Lord Of the BOF Write-up 2019. 2. 10. 01:20
혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다. 이번 문제는 전 문제에서 역시나 하나의 조건이 추가되었다.(이전 문제 풀이 참고 : https://xn--vj5b11biyw.kr/117) 하지만 뭐랄까 센스??가 필요한 문제였다..그래서인지 꽤 많은 시간을 투자했으나알고보니.. 너무나 쉬운문제였다.. 코드를 보자argv[0] 즉 실행파일명에 대한 조건이 주어졌다. 별짓 다해봤다. 하지만 권한 때문에 파일명을 바꿀 수 있는 것도 아니었다."파일을 실행할 때 조건을 성립해야 넘어갈 수 있는데.." 라는 생각이 들었지만이것 저것 다 해봤다.그러다가 표튜터가 알려줘서 알게된 " / " 절대로 안까먹을 것 같다... Payload와 푸는 방식은 이전 문제와 같다. 다만 추가된 것은 실행할 때 " / "를..
-
[LOB] Wolfman -> Darkelf Write-up표튜터와 함께하는 Pwnable/The Lord Of the BOF Write-up 2019. 2. 9. 22:30
혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다. Darkelf 문제이다.우선 분석을 위해 darkelf파일과 길이가 같은 파일명으로 만들어준다. 나는 darkelp로 했다. 코드를 보자인자의 길이를 제한하는 if문이 등장했다.하지만 코드를 보고들었던 생각은argc의 갯수 제한이 없기 때문에 인자를 하나 더 추가해주면충분히 길이제한이 있더라도 우회가 가능하다는 생각이 들었다. 그래서 인자를 argv[1] = "a"*44 + ret argv[2] = shellcode형식으로 주고 ret값을 argv[2]의 시작주소로 진행하면길이제한과 나머지 조건들 모두 우회가 가능할 것이라고 생각했다. 위에서 설명한대로 payload를 만들어서 진행해보았다.core파일이 생성되었고 ret에 정확하게 argv[2]의..
-
[LOB] Orc -> Wolfman Write-up표튜터와 함께하는 Pwnable/The Lord Of the BOF Write-up 2019. 2. 9. 21:50
혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다. Orc 문제는 goblin과 비슷하지만 buffer hunter가 추가되어있다.하지만 본의아니게 goblin에서 했던 방법2의 풀이법이면 buffer를 memset하더라도우회할 수 있었다... 그러므로 바로 풀어버렸다ㅎㅎ 혹시나 설명이 부족하다면 이전 goblin -> Orc를 참고하자https://xn--vj5b11biyw.kr/115 코드를 보자정말로 buffer hunter만 추가되었다. 대충 if문을 맞춰서 주소값을 넣고 payload를 만들어서core파일을 분석해보았다. core파일내가넣은 sfp를 덮은 aaaa값과 대충넣은 주소가 보였고그 다음에 쉘코드가 보였다.그러므로 ret 다음 주소는 0xbffffac0이 된다. payload는 다..
-
[LOB] Goblin -> Orc Write-up표튜터와 함께하는 Pwnable/The Lord Of the BOF Write-up 2019. 2. 9. 00:33
혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다. 이전까지의 문제들은 전에 풀어봤던 문제들과 비슷해서 너무나 쉽게 풀렸다.그래서 살짝(?) 자만했는데 이번 문제에서 뚜두려맞았다ㅋㅋegghunter라는 개념이 필요했다. 그래서 인지 꽤 오랜시간 삽질을 했던 것 같다. 소스코드를 보자!우선 40크기의 버퍼를 주어줬고egghunter라는 부분이 있다.이 부분은 환경변수의 값을 0으로 초기화시키기 때문에이전까지 써왔던 환경변수를 이용한 eggshell을 사용할 수 없게 만든다. 또한 그 아래에는 argv[1]의 47번 배열 즉, 48번째의 배열의 값이 "\xbf"가아니면 "stack is still your friend라는 문구와 함께 프로그램이 종료된다.이 부분에서 알 수 있는 것은 아마도 buf 크기..
-
[Codegate2013] Vuln200 Write-up표튜터와 함께하는 Pwnable/CTF Write-up 2019. 2. 7. 21:06
혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다. Codegate2013 Vuln200 Write up이다. 다하고 보니 생각보다 쉽지만 너무 어렵다고 생각해서 그런지 많이 돌아온 듯 하다..ctf 출제 문제들을 많이 풀어보지 않아서 그런거라고 위안을 삼고 노력해야겠다ㅠ참고로 파일명은 hello로 편의를 위해 내가 변경한 것이다.(오해 노노~) 우선 문제를 풀기위해 셋팅을 해주고~실행을 시켜보았다.몇 가지 메뉴가 나왔다~ 대충 이런느낌의 프로그램이었다.md5나 base64인코딩과 디코딩 이 파일에 어떤 mitigation이 있는지 확인해보았다.NX보호기법이 없기 때문에 스택에서 공격이 가능할 것으로 보이고symbol이 지워져있었다. 그리고 dynamically linked로 공유라이브러리를 사용하..
-
FTZ 19번 Write-up표튜터와 함께하는 Pwnable/FTZ Write-up (11~20) 2019. 2. 6. 14:51
혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다. FTZ 19번이다.아주 심플한 코드가 보인다.이전 문제들처럼 아주 쉽게 풀리겠다고 생각했다.19번인데 갑자기 난이도가 떨어진줄 알았다. ret까지 44개다.일단은 eggshell을 이용해서 ret를 덮어보았으나.. 오잉?? 분명히 제대로 실행된거같은데 권한이 올라가지 않았다... 음 아마도 권한상승기능이 없는 것 같다.다른 블로그들의 글을 찾아보니 일정 버전 이후, 보안상의 이유로그냥 쉘을 실행하면 권한상승기능이 제거되었다고 한다. 참고 : https://py0zz1.tistory.com/30 그래서 생각해보니 권한을 상승시키는 함수와"/bin/sh", 그리고 이 "/bin/sh"을 실행시켜줄system() 함수를 이용하여 RTL Chaninig을..
-
FTZ 18번 Write-up표튜터와 함께하는 Pwnable/FTZ Write-up (11~20) 2019. 2. 6. 13:17
혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다. FTZ 18번이다~코드를 보면 check값이 0xdeadbeef가 되면 shellout()함수가 실행되면서다음 권한으로 "/bin/sh"이 실행된다. 하지만 입력받는 양이 100보다 크거나 같으면 "What are you trying to do?"가 나오게 된다ㅎㅎ 이 문제를 풀기 위해서는 switch문에 있는 0x08을 이용해야하는데그 이유는 우선 스택에 어떤식으로 변수들이 쌓이는지 봐야한다. 일단 어셈블리어로 코드를 보자.우선 C로된 코드와 어셈블리어 코드를 비교해보았다.(굳이 어셈블리어 코드를 안봐도 스택은 그릴 수 있지만 그래도..ㅎㅎ)그랬더니 아래와 같이 스택이 쌓인다는 것을 알 수 있었다. C코드와 마찬가지로x가 먼저 0으로 초기화되고다..
-
FTZ 17번 Write-up표튜터와 함께하는 Pwnable/FTZ Write-up (11~20) 2019. 2. 5. 18:33
혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다. FTZ 17번이다.코드를 보니 16번과 비슷한데 shell()함수가 없다.fgets() 다음 setreuid로 다음 권한을 주는 것을 보니printit()함수 대신 "/bin/sh"이 실행되는 주소를 넘겨주면 될 것 같다.일단 printit()의 위치를 찾아보았다. 이전 문제와 같은 방법으로 찾으면 된다 역시 fgets()으로도 주소를 건드릴 수 있는 길이이다. 40개!!하지만 위에서말한대로 "/bin/sh"을 shell()같은 함수가 보이지 않는다. 그럼으로 eggshell을 이용하면 된다. 그 다음 printit()대신 eggshell의 주소를 씌워주면call실행 시 printit()대신 eggshell의 주소가 넘겨짐으로 다음단계로 갈 수 있다~