분류 전체보기 309

[pwnable.xyz] misalignment 풀이 (64bit, 리틀엔디안)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 리틀엔디안에 대해 더 상기시켰던 계기가 되었다. 주어진 파일은 문제 파일 바이너리 Analysis mitigation execution 앞에서 풀었던 문제랑 비슷한 느낌이다. code 입력은 숫자 3개를 받는데, 마지막 입력이 idx이다. -7 ~ 9 사이밖에 입력을 못한다. 그래서 내가 그냥 실행해서 33이라는 수를 주니까 그냥 종료됐었다. 노란색 박스를 보면.. 첫번째 입력과 두번째 입력을 더해서 v5[8*idx+48]에 넣는다. win() 함수는 flag를 열어주는 함수인데, 최종적으로 저 함수를 실행시키면 flag를 얻을 수 있다. 저 함수를 실행시키기 위해서는 v5[7]이 0xB000000B5의 값을 가져야 한다. 최종..

Stack Pivoting (스택 피봇팅)

참고 : JSec님 블로그 실습 환경 : ubuntu 18.04 개요 ROP를 하고 싶은데 BOF가 Return address까지 밖에 나지 않을 때 어떻게 해야 할까? Stack pivoting 여러 gadget을 이용해서 쓰기 가능한 공간에 Fake Stack을 구성해놓고 Chaining하는 기법 특정 영역에 값을 쓸 수 있거나 값이 있는 경우 SFP를 이용하여 스택을 옮기고 해당 부분의 코드를 실행하는 기법 Stack pivoting을 하기 위한 전제 조건 페이로드가 저장되어 있는 영역이 존재할 경우, RET까지만 overflow 발생 페이로드가 저장되어 있는 영역이 없는 경우, 입력함수 + leave_ret을 넣을 수 있을 만큼 overflow 발생 두 경우 다 gadget이 존재해야 함 이 글에..

System Hacking 2021.05.03

[pwnable.xyz] add 풀이 (64bit, OOB)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 쉬우니까 간단하게 적는다. 주어진 파일은 문제 파일 바이너리 역시 다 int이다. 마지막에 v7[v6]의 값을 출력시켜주는데 이 값은 v4와 v5를 더한 것이다. 옆에 함수 목록을 보면 아래와 같은 flag를 출력시켜주는 함수가 있다. 우리가 입력하는 v6은 v7의 인덱스인데 딱히 뭐... 적을 수 있는 제한이 없다. 여기서 범위 밖의 내용을 볼 수 있는 Out of bound.. OOB를 떠올렸다. v4+v5를 저 win 함수의 주소로 주고, RET 부분에다가 저 주소를 넣어주자. 0x60 + 0x8(SFP)를 하면 RET가 나온다. 0x68 / 0x8 을 하면 13이다. index는 13이다~~ scanf의 반환값이 3이 아..

[pwnable.xyz] sub 풀이 (64bit, 정수놀이)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 1분 컷 할 수 있다. 쉬우니까 간단하게 적어야징 주어진 파일은 문제 파일 바이너리 v4랑 v5에 입력하는데 둘이 뺀 값이 4919면 플래그를 준다. 참고로 v4랑 v5는 자료형이 int이다. 음수도 입력가능하단 뜻 그럼 이렇게 간단하게 flag를 획득할 수 있다.!! 참고로 scanf는 공백으로 끊는다. (너무대충봐서 걍 엔터치고 했닿ㅎㅎ;) 4918 -1 이렇게 입력해야한다는 뜻

[pwnable.xyz] welcome 풀이 (64bit, malloc)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 첫 포너블.xyz 문제다~~~ 문제 이름이 welcome인데 welcome 못 할 뻔 했다 ㅎㅎ; 주어진 파일은 문제 파일 바이너리 Analysis mitigation 후덜덜 ㅜ welcome 문제이고 50점 짜리인데 보호기법이 다 걸려 있다. .. 하지만 점수도 낮고 솔브 수도 높으니 쫄지 말자.. execution length를 입력하고 message를 입력한다. code 문제풀면서 간단하게 주석을 달아보았다. 크게크게 보면 chk의 값이 0이어야 flag를 읽을 수 있다. 이제.. chk의 값을 0으로 바꿔야하는 것에 집중하면서 위에서부터 살펴보자. chk은 malloc의 반환값이다. malloc의 반환값이 뭔지 찾아보았다..

[HackCTF : Pwnable] wishlist 풀이 (64bit, uaf, stack pivoting)

문제 풀이 환경 : ubuntu 18.04 16.04 사용 툴 : IDA 7.5 pro (로되리안) 리모트 셸을 못따서 주변사람들한테 물어보려고 노션으로 내가 분석한 것, 익스코드 왜 이렇게 작성했는지.. 등 적다가 다 적고 마지막에 혹시몰라서 우분투 버전 바꾸니 바로 셸 따인 문제 ㅠㅁㅠ www.notion.so/jir4vvit/HackCTF-wishlist-3e59ae8ac0ce4a5cb8a333d78703be5f [HackCTF] wishlist 워게임 사이트 : HackCTF (https://ctf.j0n9hyun.xyz/) www.notion.so

WAR GAME/HackCTF 2021.04.30

[HackCTF : Pwnable] pzshell 풀이 (64bit, shellcode, shellcraft, orw, getdents)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro shellcode랑 친하지 않은 나2... 주어진 파일은 바이너리 파일과 c코드 Analysis mitigation 미티게이션...?은 아니지만 미티게이션 느낌이 나는 seccomp도 걸려있다 ㅠ_ㅠ execution 뭐 제대로 입력도 안했는데 세폴뜬다. 코드를 확인해보자. code 세콤이 걸려있다. 저 함수들은 쓰면 안된다. 바로 직전 문제 ezshell에서 사용했던 execve 함수는 사용하지 못한다... 그래서 open read write를 하기로 했다. 필터는 syscall만 걸려있는데, result 첫부분을 보면 syscall이 있다. 이 전의 ezshell문제처럼 syscall을 사용할 때 저기로 jmp를 해줘야 겠다..

WAR GAME/HackCTF 2021.04.30

[HackCTF : Pwnable] ezshell 풀이 (64bit, shellcode)

일문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro shellcode랑 친하지 않은 나... 주어진 파일은 바이너리 파일과 c코드 Analysis mitigation 풀렐로... execution null이요..? code 쉘코드를 제작해야하는 문제.. 저기 필터링이 보이는데 syscall을 의미하는 0f 05가 필터링 되어있다 ㅠ 3b는... 59번 execve 실행을 방지하는 걸로 보인다. b0은 분석할때는 몰랐고 문제 풀때 알게 되었는데 이걸 뜻한다. 저 구문을 왜 사용했냐면 필터링된 3b를 우회하기 위해 al에 3a를 옮겨놓고 inc하려고 했다 ㅎㅎ; 아무튼.. 내가 shellcode를 작성하면 result에 내가 작성한 shellcode를 옮겨 붙이고 result+2부..

WAR GAME/HackCTF 2021.04.30

[HackCTF : Pwnable] World Best Encryption Tool 풀이 (64bit, leak)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 하 못 풀 뻔 . . . 주어진 파일은 바이너리 파일 뿐 Analysis 일단 실행 나의 인풋을 암호화해준다. 그리고 Yes나 No를 입력해서 계속 이어가거나 종료할 수 있다. IDA 저기서 bof가 터진다. 그리고 바로 아래 for문에서 암호화를 시킨다. strncpy 함수는 0x39 복붙한다. 위에서도 언급했지만, Yes나 No를 입력해서 계속 이어가거나 종료할 수 있다... How to exploit 보호 기법 카나리가 존재한다... bof를 일으켜서 RET를 건드리려면 카나리 릭이 필수적이다. Summary canary 릭 libc 주소 릭 system('/bin/sh') 실행 카나리 릭 할 때는 카나리가 '\x00'으로..

WAR GAME/HackCTF 2021.04.28