Constant(438)
-
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 -
XOR IT'S FUN
출처 : https://stop2y.blog.me/ 이 분의 블로그를 구경하다가 리버싱 문제를 하나 보게 되어 풀어보았다. 알고리즘은 다음과 같다. 코드는 다음과 같다.#include #include int main(){char arr[] = "\x42\x69\x74\x78\x2c\x5c\x6D\x7f\x7f\x7b\x63\x7e\x68\x2c\x36\x2c\x5f\x6f\x6d\x61\x7c\x69\x7e";char result[24] = { 0 };int xor_num = 0; while (xor_num < 255){printf("%d번째 : ", xor_num); for (int i = 0; i < sizeof(arr) / sizeof(arr[0])-1; i++){result[i] = arr[i] ..
2018.04.02 -
swamp CTF return
보호되어 있는 글입니다.
2018.04.01