일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 써니나타스
- 포너블
- pyinstaller
- 자료개방포털
- 데이터형
- lob
- 써니나타스 1번
- anxi0
- argc
- mode함수
- 범용레지스터 #레지스터 #어셈블리 #ASM #리버싱 #어셈블리어 #EAX #ESP
- ultra argv hunter
- 결측치
- 빅데이터
- troll to
- orge to troll
- 서니나타스
- lob 9번
- kostat
- wolfman to darkelf
- lob 7번
- lob 10번
- kosis
- 쉘코드
- 마크업 언어
- pythonexe
- IS함수
- R언어
- pythoncli
- argv
- Today
- Total
목록전체 글 (72)
ANX1-Z3R0의 불안극복(不安克服)
매우 유용한 reduce함수로 다양한 사용성을 자랑해보겠다. reudce는 인자로 ((누산기,현재요소,현재요소의인덱스,호출된배열)=>{return 결과값},{초기값}) 총 4개를 넣고 2개를 받을 수 있는데, 누산기와 현재요소는 필수 요소로 기입하지 않으면 오류를 뱉는다. 초기값을 제공하지 않으면, 자동으로 배열 0번의 인덱스를 넣어준다. 따라서 다음과 같은 예제는 누산값을 제대로 출력한다. const sum = [1,2,3,4,5].reduce((accumulator,current)=>{ return accumulator+current }) console.log(sum) // 15 초기값을 제공하지 않고, 배열에 현재요소로 접근하여 reduce함수를 적용했을 때, 1로 자동 배치 되므로, 배열의 0번 ..

윈도우에서 linux 명령어를 쓸 수 있다. 제약없이 큰 메리트다. 바로 깔아보자. 이렇게 생긴 윈도우 파워쉘을 켜고 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 를 순서대로 입력하고, MS store에 들어가서 상단의 검색바에서 우분투를 검색해서 설치해준다. 그리고 실행시켰는데 이렇게 뜬다면, powershell을 관리자 권한으로 다시 켜서 Enable-WindowsOptionalFeature -Online -FeatureNam..

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space #include #include #include #include void getpath() { char buffer[64]; unsigned int ret; printf("input path please: "); fflush(stdout); gets(buffer); ret = __builtin_return_address(0); if((ret & 0xbf000000) == 0xbf000000) { printf("bzzzt (%p)\n", ret); _exit(1); } printf("got path %s\n", buffer); } int main(int argc, char **argv) { getpath(); ..

가장 푸는 데 시간이 오래 걸렸던 구간. core 파일과 씨름을 했다. 결국 알아낸 방법: peda로 process attach해서 실시간으로 스택을 읽어내는 거 그리고..... ASLR 끄는 거!!!! 메모리 보호 기법인 ASLR 때문에 삽질 겁나했다. 꼭 끄고 시작하자. (vmware 다시 켤때마다 해야하므로 주의하자.) echo 0 | sudo tee /proc/sys/kernel/randomize_va_space 이런거 왜 하냐고? 우리가 이렇게 비교적 초반에 배우는 지식이 쉽게 뚫릴리가 없잖냐, 이미 운영체제들은 다 대책이 있는거지. 하지만! 우리는 아직 배우는 입장이므로, 이런 옵션들을 꺼줄 필요가 있다. #include #include #include #include int main(int ..

#include #include #include #include void win() { printf("code flow successfully changed\n"); } int main(int argc, char **argv) { char buffer[64]; gets(buffer); } 짧고 굵은 코드다. gets로 받는 buffer만으로 win에 접근 하면 된다. 일단 간단한 win주소 알아놓기를 해놓자. 오케이 알겠고 (\xf4\x83\x04\x08) offset값을 알아내보자. 여지껏 sfp라는 명목으로 대애충~ 4byte쯤 offset을 계산했었는데, 이것은 충분히 수정 가능한 영역이므로, 일일히 다 세고 있으면 비효율 적이다. gdb-peda에는 이것을 해소해 줄만한 기능이 있는데, 그것을 한..
git clone https://github.com/longld/peda.git ~/peda echo "source ~/peda/peda.py" >> ~/.gdbinit 1번째 줄은 다운로드, 2번째 줄은 gdb로 쳤을때 peda가 켜지게 바꾸는 작업이다. gdb-peda의 장점을 좀 말해보자면, 1. i382문법으로 바꿔주는 명령어 (set disassembly-flavor intel)을 매번 치지 않아도 된다. 2. 레지스터를 보기 위해 매번 info register를 하지 않아도 된다. 3. breakpoint 후 진행상황을 확인하기 위해 disas main을 치지 않아도 된다. 4. 스택상황을 보여준다(!!!!!!) 5. linter 기능(주요 함수나 기능에 색깔 표시)을 기본 제공한다. 제발 쓰자.

#include #include #include #include void win() { printf("code flow successfully changed\n"); } int main(int argc, char **argv) { volatile int (*fp)(); char buffer[64]; fp = 0; gets(buffer); if(fp) { printf("calling function pointer, jumping to 0x%08x\n", fp); fp(); } } 슬슬 해괴한 코드들이 나오고 있다. 내가 overflow시킨 값으로 뛰고, 그걸 win으로 맞춰줘야 하는 것 같다. 어렵게 생각할 필요없다. gets에 값을 넣는 방법과 win의 주소만 알면 된다. araboja. [gets 함수..

#include #include #include #include int main(int argc, char **argv) { volatile int modified; char buffer[64]; char *variable; variable = getenv("GREENIE"); if(variable == NULL) { errx(1, "please set the GREENIE environment variable\n"); } modified = 0; strcpy(buffer, variable); if(modified == 0x0d0a0d0a) { printf("you have correctly modified the variable\n"); } else { printf("Try again, you got ..