S!_Jmini 2019. 9. 11. 22:55

소스 코드 편집기


Ctrl + Z : 되돌리기 

Ctrl + Shift + Z : 되돌리기 취소 





##### Visual Studio 잡기술 #####


Ctrl + f5 : 컴파일
Ctrl + D : 해당 줄 복사
Ctrl + K + C : 드래그 되있는 영역 주석처리
Ctrl + K + U : 드래그 되있는 영역 주석처리 해제
Ctrl + Shift + A : 소스파일 생성
/*  이 사이에 있는 것들은 전부 주석처리 */

 

 



##### Python IDLE 잡기술 #####

 


f5 : 컴파일
Ctrl + T : 문자자리바꾸기
Ctrl + ] : 오른쪽 들여쓰기
Alt + 3 : 드래그 되있는 영역 주석처리
Alt + 4 : 드래그 되있는 영역 주석처리 해제
'''
이 사이에 있는 것들은 전부 주석처리
'''

 

 


Ubuntu 환경


##### 공개키 발급 #####

 

다음 서명이 올바르지 않습니다: EXPKEYSIG XXXXXXXXXXXXX CF CLI Team cf-cli-eng@pivotal.io

apt-get update와 같은 명령어를 쳤는데 위와 같은 오류와 함께 진행이 안되는 경우가 있다

아래 명령어를 통해 새로 공개키를 발급 받으면 꿑!

 

wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | apt-key add - 

 

 

 

이번엔 공개키가 없다고 한다

해당 경우도 아래 명령어를 통해서 키값을 추가해주면 꿑!

 

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXX


 


 

### Ubuntu terminal ###

 

 

$ sudo apt-get install terminator

 

Ctrl + Alt + T : 터미널 창 띄우기

Ctrl + Shift + e : 가로 분할

Ctrl + Shift + o : 세로 분할

Ctrl + Shift + p : 다음 터미널창으로 이동

Ctrl + l : 창 비우기

Ctrl + p : 이전 명령어

Ctrl + n : 다음 명령어

 

$ vi ~/.config/terminator/config

[global_config]
    tab_position = bottom
    handle_size = 0
    focus = system
[keybindings]
[profiles]
  [[default]]
    scrollbar_position = hidden
    use_system_font = False
    visible_bell = True
    background_darkness = 0.8
    background_type = transparent
    background_image = None
    show_titlebar = False
    font = 나눔고딕코딩 Bold 14
[layouts]
  [[default]]
    [[[child1]]]
      type = Terminal
      parent = window0
    [[[window0]]]
      type = Window
      parent = ""
      size = 1000, 600
[plugins]​

개인 terminator_setting.sh

더보기
#!/bin/sh
apt install fonts-nanum-coding
cat << EOF > /home/minishell/.config/terminator/config
[global_config]
  tab_position = bottom
  handle_size = 0
  focus = system
[keybindings]
[profiles]
  [[default]]
    scrollbar_position = hidden
    use_system_font = False
    background_darkness = 0.8
    background_type = transparent
    background_image = None
    show_titlebar = False
    font = 나눔고딕코딩 Bold 10
[layouts]
  [[default]]
    [[[child1]]]
      type = Terminal
      parent = window0
    [[[window0]]]
      type = Window
      parent = ""
      size = 1000, 600
[plugins]
EOF

### Vim setting ###

 

 

$ vi ~/.vimrc

set number    " line 표시
set ai    " auto indent
set si " smart indent
set cindent    " c style indent
set shiftwidth=4    " 자동 공백 채움 시 4칸
set tabstop=4    " tab을 4칸 공백으로
set ignorecase    " 검색 시 대소문자 무시
set hlsearch    " 검색 시 하이라이트
set nocompatible    " 방향키로 이동 가능
set fileencodings=utf-8,euc-kr    " 파일 저장 인코딩 : utf-8, euc-kr
set fencs=ucs-bom,utf-8,euc-kr    " 한글 파일은 euc-kr, 유니코드는 유니코드
set bs=indent,eol,start    " backspace 사용가능
set ruler    " 상태 표시줄에 커서 위치 표시
set title    " 제목 표시
set showmatch    " 다른 코딩 프로그램처럼 매칭되는 괄호 보여줌
set wmnu    " tab 을 눌렀을 때 자동완성 가능한 목록
syntax on    " 문법 하이라이트 on
filetype indent on    " 파일 종류에 따른 구문 강조
set mouse=a    " 커서 이동을 마우스로 가능하도록

출처: https://gabii.tistory.com/entry/Ubuntu-vim-%EC%84%A4%EC%B9%98-%EB%B0%8F-EC%84%A4%EC%A0%95

 

 

 

 


### from pwn import * ###

 

 

알아두면 유용한

p = process(['./binary'], env={'LD_PRELOAD':'./libc.so.6'}) #LD_PRELOAD setting
log.info("libc_base : {}".format(hex(libc_base))) #value printing
gdb.attach('./binary', 'b *address') #gdb auto attach

 

 

bruteforce 예시

while num:
        p = process('./binary')

        p.sendafter('input? ',pay)
   
        try:
                p.recvuntil("Correct!")
                print "Success"
                break
        except:
                print "Failed!"
                p.close()
                continue

 

 

 

 


IDA(Interactive DisAssembler)


### 정적 분석 ###

 

shift + F12 : 문자열 검색

n : 함수 또는 변수의 이름 변경

y : 함수 또는 변수의 타입과 인자 변경

값 선택 + r : 숫자 <-> 문자

값 선택 + h : 10진수 <-> 16진수

코드 옆 빈공간 선택 + / : 주석 생성

코드 선택 + G : 원하는 주소로 이동

변수 선택 + x : 해당 변수가 참조되는 영역 탐색

(Fucntion window)Ctrl + F : 함수 찾기

 

 

 

 

 


### 동적 분석 ###

 

Edit -> Patch Program : 바이너리 패치

F2 : break point 설정

실행코드 선택 + F2 : 해당 코드 내용 수정  

실행코드 선택 + Ctrl + n : 해당 코드 건너뛰기

Ctrl + F2 : 디버깅 중지

F9 : 디버깅 시작

F7 : 함수 내부 호출 (pwndbg의 si명령어)

F8 : 함수 1줄 진행 (pwndbg의 ni명령어)