WAR GAME/pwnable.xyz 19

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

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro pwnable.xyz의 attack 문제를 풀어보라고 하셨다. 그래서 바이너리를 까봤는데.. 솔직히 처음엔 겁먹었다;; 함수들이 너~무 많아.. (예전이었으면 main부터 봤겠지만.. 지금은 아니다 크크크) 그래서 메모장에 정리하다가 사진도 넣고 싶어서 노션에다가 정리했다. 생각보다 OOB는 강력한 취약점임을 알게되었다.... OOB 터지고,,, 메모리에 데이터 넣을 수 있는 부분?있으면 뭐.. 끝이 아닌가 싶네.. www.notion.so/jir4vvit/pwnable-xyz-attack-32fa029fd85e409d9725320d6c26b8a1 [pwnable.xyz] attack 워게임 사이트 : pwnable.xyz (h..

[pwnable.xyz] two targets 풀이 (64bit, 브포, scanf)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 리버싱 잘 못하는데 이 문제 풀어서 경험치가 조금 쌓인 것 같다. 기분 좋다. 여담으로 긴 글 적을 때는 확실히 노션이 더 편한 것 같다... www.notion.so/jir4vvit/pwnable-xyz-two-targets-26d9f81b59d84f4db87d81cf1efb0e56 [pwnable.xyz] two targets 워게임 사이트 : pwnable.xyz (https://pwnable.xyz/) www.notion.so

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

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 어제 롸업보고 다음날에 롸업 안보고 다시 풀었다. 주어진 파일은 문제 파일 바이너리 접근해서 적을 수 있나여? Analysis mitigation execution code 이 전에 풀었던 add나 sub 문제랑 비슷해보인다. 세 숫자를 입력해야하고 마지막 인풋은 index이다. 이 문제도 역시 flag를 출력해주는 win 함수가 존재하는데, win 함수를 최종적으로 실행시키는 것이 목표이다. 저기 네모친 곳은 원하는 주소에 원하는 값을 쓰고 있다. 그리고 더 자세히 보면(?) OOB가 발생한다. idx는 9이상이 되면 프로그램이 while문을 빠져나가지만, 음수일 때는 체크하지 않아서 OOB가 발생한다. 그리고 저기 if 조건..

[pwnable.xyz] GrownUp 풀이 (64bit, fsb, strcpy)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro strcpy는 NULL까지 읽어서 복사 주어진 파일은 문제 파일 바이너리 Flag는 바이너리 파일 안에 있다고 한다. 셸을 따는 문제가 아닌 것 같다. Analysis mitigation execution N를 입력하면 프로그램이 종료된다. 그래서 y를 입력해야 한다. fsb 문제인가 하고 한번 입력해봤는데.. 그냥 그대로 출력해준다. 코드를 확인해보자. code 입력을 두 번한다. 처음에 y나 Y를 입력하지 않으면 종료된다. 한글자만 입력하면 되는데 신기하게 더 입력할 수 있다.. 16글자까지 입력이 가능하다. 그리고 read함수로 src에 입력을 받고 strcpy 함수로 usr에 복사를 한다. usr는 bss 영역에 있어 전..

[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의 값을 가져야 한다. 최종..

[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의 반환값이 뭔지 찾아보았다..