Hacking Note 3

DarkCON CTF 에서 몰랐던 것들

vuln.live/blog/12 1. .git 이 존재하는 걸 알았지만 어떻게 해야할 지 몰랐다. -> git-dumper로 덤프 뜨고 git log -p 로 로그를 훑어 본 뒤에, git checkout 원하는 커밋 해쉬값 하면 그때로 돌아간다. 참고/twoicefish-secu.tistory.com/106 Github Forensic 문제에 유용한 Git 명령어 1. 로그와 변경사항 보기 git log -p 각 커밋마다 수정된 파일의 내역을 보여준다. 2. 브랜치 변경 git checkout [Commit hash] git checkout commit 해쉬를 입력하고 파일 찾기를 진행하면된다. twoicefish-secu.tistory.com 2. preg_replace RCE로 원하는 함수를 실행 ..

Hacking Note/Web 2021.02.21

PWN - 0x00 - 시스템 해킹을 시작하는 길

포너블이 처음이라면, 1년전의 내가 이 글을 봤을때 갈피가 잡히게끔 주저리주저리 해보겠다. CTF에서 포너블 문제는, 결국 서버 쉘을 따내는 것이다. 쉘을 따내는데 쓰이는 기법에 따라 풀이가 달라진다. 기본적으로 쉘을 따려면, system("/bin/sh"); 을 실행해야한다.(exec 등등) 이 구문을 실행하기 위해 수십가지의 방법들이 있고, 그 방법들을 막는 보호기법이 걸려있고, 그 기법을 우회하는 공격이 나오고... 이것들을 많이 아느냐 모르느냐가 실력의 지표라고 생각한다. Stack Frame 아주 기초로 가보자면, 어떤 함수가 끝을 내릴때, 다시 돌아갈 주소가 있어야 돌아갈 수 있다. 중학교때 비유해서 공부했던 기억을 되살려보면, 장보러 가기 위해 메모장에 구매 목록을 써놨는데, 화장실 갔다온 ..

Node JS prototype pollution to RCE / express-fileupload@1.1.6 + EJS

http://blog.p6.is/Real-World-JS-1/ posix님이 발견하신 CVE-2020-7699 취약점이 너무나 흥미로워 보였고, 유익한 내용이기에 적어본다. 실습 환경은 express-fileupload@1.1.6 버전을 사용해야한다. 우선, prototype pollution 에 대해 간단하게 표현해보자면, 아래와 같다. var a = {} var b = {} b.__proto__.pollution = '1' console.log(a.pollution) // '1' 자칫 신경 안써도 될 것 같아 보이지만, express-fileupload@1.1.6 에서 parseNested option이 설정돼있으면 아래와 같은 내부 동작이 이루어진다. // node_modules\express-fi..

Hacking Note/Web 2020.09.07