Constant(440)
-
defcon2015 r0pbaby writeup
보호되어 있는 글입니다.
2018.04.08 -
defcon2015 r0pbaby 풀고 알게 된 것들
느낀점 : ROP 어렵다 . 아직까지 오프셋 계산 왔다 갔다 하는게 적응이 되지 않는다. 알게 된 것 : pop rdi ; ret ; (system함수의 인자는 rdi) libc 주소를 보는 법 : pwngdb 실행 후 ctrl+c로 인터럽트 걸고, vmmap 이용해서 살펴 봄 system 함수 주소 보는 법 : pwngdb 실행 후 p system 여기서 나온 주소와 libc 주소를 이용하여 system함수의 offset값을 구할 수 있음libc base addr - system_offset = system addr 여기에서 s는 sfp, r은 ret인 것을 알게됨 libc.so.6 찾는 방법 find / -name libc.so.6 2>/dev/null rp++ 를 사용하는 방법에 대해 알게 됨 : ..
2018.04.08 -
ROP 제대로 이해될때까지 공부
DEP는 스택에 있는 코드가 실행될 수 없게 만드는 기술 ASLR은 스택, 힙, 모듈 베이스 주소를 랜덤화 : 주소 또는 메모리의 위치를 예측 불가하게 만든다. ROP 체인 구성 기준 1. 전체 함수를 사용하는 대신에 명령어의 연속된 작은 덩어리를 이용한다.2. 명령어 조각은 2개~5개 정도가 적당하다.3. 모든 명령어 조각은 ret로 끝나야 한다. (핵심)4. 명령어 조각들은 'gadget'으로 서로 연결 되면서 명령어 덩어리가 된다.5. gadget은 의도 된 특정 행동을 수행한다.6. 공격자는 gadget를 조합해서 새로운 공격을 수행한다. DEP를 우회하지 않고는 스택에서 점프 혹은 명령어 실행을 절대 할 수 없다. DEP로 보호되고 있는 페이지에서 코드를 실행하려는 시도가 포착되면 접근 위반(S..
2018.04.04 -
가이드라인이라 쓰고 삽질의 흔적이라 읽는다.
안녕하세요. 열심히 악성코드와 시스템해킹 독학 중인 c0nstant입니다. 오늘은 악성코드를 전혀 접해보지 않은 분들에게 가이드라인 처럼 알려주기 위해 글을 하나 작성해 보았습니다. 핵심 주제는 "Dropper Malware" 입니다. 악성코드에 대해 아직 많이 모르기 때문에 조심스러웠으나, 어떻게 공부를 진행하고 있는지 남들에게 당당히 공개함으로써 더 발전 할 수 있다고 확신하였기 때문에 이러한 프로젝트를 혼자 진행하게 되었습니다. 글의 페이지는 40쪽이 조금 넘어가지만, 사진들이나 코드가 많기 때문에 보기에 어렵진 않을거라 생각합니다. 뉴비의 문서 재밌게 봐주시길 바랍니다. 배포는 언제든 환영이지만, 출처는 남겨주시기 바랍니다. 악성코드의 입문을 도와주신 yyt3000에게 진심으로 감사인사를 드립니다..
2018.04.02 -
DEPCAMP r100
Angr 공부용으로 풀어보았다. 바이너리 : 메인함수이다.패스워드를 입력하고 옳고 그름을 판단하는 전형적인 문제다. 심플해보이지만, 계산하기 귀찮게 되어 있는 연산이다. 이 연산을 한방에 해결하는 녀석이 angr라고 한다. 진심으로 오늘 처음 사용하고 충격받았다.import angr def main():p = angr.Project("r100", load_options={'auto_load_libs': False}) // 실행시킬 바이너리 명 # 내가 찾는 주소가 0x400844 (Nice!)# 피하려는 주소가 0x400855 (Incorrect Password!)ex = p.surveyors.Explorer(find=(0x400844, ), avoid=(0x400855,))ex.run() // 실행re..
2018.04.02 -
BruteForce is Wonderful!
예전에 멘토형(yyt3000)이 해당 문제를 주었을 땐 노가다로 풀었었는데 댕이댕이님의 블로그에서 이 문제를 또 발견 하여 이번엔 코드로 작성해서 풀어보았다. [바이너리] : 조건은 다음과 같다. #include #include #include // condition// arr[0] & 0xAD == 0 // arr_index0// arr[1] & 0x9A == 0 // arr_index1// arr[2] & 0x97 == 0 // arr_index2// arr[3] & 0xbf == 0 // arr_index3// arr[4] & 0x5FC5 == 0 // arr_index4// arr[5] & 0xD6 == 0 // arr_index5 char arr[] = "";static int arr_index..
2018.04.02