목록Pwnable (12)
controlpro

NX에 PIE 그리고 Full Relro 까지 걸려 있는 문제이다. 보호 기법이 많으면 솔직히 하기싫다. ㅠ 일단 풀어보자 일단 문제를 확인해보면 v4 , v5 , v6을 받고 v5와 v4를 xor 연산을 해주고 result[v6] 에 넣어준다. 여기서 문제가 발생한다. if문을 통해서 어느정도 v6 < 9라는 조건을 걸어서 문제가 없어보이지만 v6에 음수가 들어가서 out_of_bound문제가 생기는 경우는 고려하지 않았다. 그러면 result 변수 뒷쪽에 덮을만한 함수가 있어야 한다. vmmap으로 영역을 보면 rwxp 영역이 존재하는 것을 알 수 있는데 여기에 main 함수 영역이 포함되어 있어서 우리가 코드 부분을 직접 수정이 가능하다. 근데 result 변수가 저기까지 다을 까? 라는 생각을 할..

50점 짜리 문제 start 다음과 같이 함수가 있다. 기능은 크게 edit_note 와 edit_desc가 있다 . edit_note를 보면 buf를 입력에 note의 내용을 입력 받고 s에 strcpy로 값을 넘긴다. 왜 이런 쓸데 없는 짓을 하는 지는 잘모르겠다.;; 그리고 edit_desc는 buf에 0x20만큼 입력을 한다. 그러면 여기서 s 와 buf의 관계가 상당히 애매해 지는데 ida에서 s와 buf의 위치를 확인 해보면 다음과 같다. 즉 s와 buf는 32byte만큼 차이가 나는데 s에는 buf를 통해서 strcpy되는 값이 길이의 제한을 받지 않기 때문에 buf의 포인터의 값을 맘대로 덮을 수 있다. (이문제의 핵심) 그래서 처음입력을 받을 때 32dummy + read_got 해주고 ..

Dreamhack문제가 살짝 질려서 딴 문제로 넘어왔다. pwnable.xyz의 Growup 시작! 처음에 18살 이상인지 확인을 하고 y or Y를 입력 받고 다음에 name을 입력하고 입력받은 이름을 출력하고 프로그램이 끝난다. 딱히 buf가 일어나는 부분은 없어 보였느데 마지막줄에 usr와 qword_601160이 0x80만큼 떨어져있다. 수상하네... 그래서 qword_601160에 무엇이 있는지 확인을 해보면 qword_601160가 byte_601168을 받는다 답은 strcpy이다. strcpy를 사용하면 0x80을 복사하고 마지막에 null byte는 삽입하여 0x81을 총 복사할 수 있다. 이렇게 되면 > 0x601168 -> 0x601100으로 덮이게 된다. 이 경우는 우리가 입력한 부..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.