Information Security ˗ˋˏ ♡ ˎˊ˗
반응형

Security 94

[Reversing 실습] abex’ crackme #1

abex’ crackme #1 : crack 연습 목적용 공개 프로그램 Ollydbg(v1.1) 코드의 특징: 어셈블리로 작성된 코드, 시작 주소가 EP로 매우 간단하고 명확하게 작성(stub code가 없음) - 여기서 MessageBoxA 총 3개의 API 함수를 사용 코드의 목적: MessageBoxA 순서대로 1, 2, 3으로 볼 때, 원래는 1->2로 이동하는데 1->3으로 이동하길 원한다. 코드 분석 00401000 PUSH 0 ; Style = MB_OK|MB_APPLMODAL 00401002 PUSH 402000 ; Title = "abex' 1st crackme" 00401007 PUSH 402012 ; Text = "Make me think your HD is a CD-Rom." 004..

Security/Reversing 2020.04.01

[Reversing 실습] Little Endian 표기법

바이트 오더링: 컴퓨터에서 메모리에 데이터를 저장하는 방식 - 종류: Big Endian, Little Endian 1. Big Endian: 순서대로 표기, 큰 단위가 앞에 나오는 경우 2. Little Endian: 역순으로 저장, 작은 단위가 앞에 나오는 경우 코드를 이용하여 Little Endian을 확인할 수 있다. Intel x86 CPU(윈도우 계열)은 Little-Endian 방식! Ollydbg(v1.1)을 이용하여 직접 만든 exe 파일을 열기 F7/F8을 이용하여 Main함수를 찾을 수 있다. Main함수라는 것을 예측할 수 있는 부분: Arg1, 2, 3 BYTE, WORD, DWORD, ASCII가 코드에 존재한다. 이 곳의 주소를 가지고 dump window에서 찾아보면 Litt..

Security/Reversing 2020.04.01

[Reversing 실습] 문자열 패치 두 가지 방법

https://t-okk.tistory.com/32 Reversing 실습 - 기본 디버깅 1. 기본 디버깅: 프로그램 시작 주소 및 main 함수 확인 - Hello World!라는 프로그램 만들기 Ollydbg(v1.1)로 열어서 확인 Entry Point(윈도우 실행파일의 코드 시작점): 0040126F - Ollydbg에서 F7, F8, F9를.. t-okk.tistory.com 여기서 만든 HelloWorld 프로그램을 가지고 문자열 패치를 진행 1. 문자열 패치 첫 번째 방법 - 문자열 버퍼를 직접 수정 - Main 함수에서 문자열이 저장되어 있는 Text 부분의 주소를 찾는다. - Dump Window 부분에서 Ctrl+g를 통해 그 위치로 이동한다. Text 주소: 0040210C 넉넉하게..

Security/Reversing 2020.04.01

[HackCTF Web] 마법봉 (매직해시 취약점)

문제 풀이 flag 값이 나오기 위해서는 md5로 숫자 240610708 값을 암호화한 값과 sha1으로 입력값을 암호화한 값이 같으면 플래그가 출력된다. 이때 해시 값이 같다고 되는 경우로는 "매직 해시(Magic Hash)"를 이용한다. 밑에서 자세히 살펴보겠지만, 간단하게 Magic Hash란? 비교 연산을 할 때, type juggling을 이용하여 서로 다른 값이 같은 값으로 인식되도록 하는 특수한 동작이다. www.whitehatsec.com/blog/magic-hashes/ Magic Hashes | WhiteHat Security For more than the last decade, PHP programmers have been wrestling with the equals-equals ..

Security/WebHacking 2019.11.28

[HackCTF Web] Read File

문제 풀이 http://ctf.j0n9hyun.xyz:2021/?file=flag.php http://ctf.j0n9hyun.xyz:2021/?command=flag.php http://ctf.j0n9hyun.xyz:2021/?command=123.php command 뒤에 어떠한 값을 넣어도 위와 같은 페이지만 나온다. http://ctf.j0n9hyun.xyz:2021/?command=flaggoogle.com 해당 url을 입력했을 때는 맨 처음 구글 페이지가 뜨는 것을 볼 수 있다. 서버에서는 flag라는 문자열을 필터링하고 있다는 것을 알게 되었다. 필터링을 우회한 후에 command=flag.php로 입력을 해야 원하는 플래그 값이 나올 것이다. http://ctf.j0n9hyun.xyz:20..

Security/WebHacking 2019.11.28

[HackCTF Web] Guess me

문제 풀이 아무 값이나 넣어서 제출하기를 눌렀을 때, 나오는 모습이다. 처음 문제를 보았을 때, 모르는 개념이 많아서 먼저 함수나 php코드 형태를 검색해봤다. PHP 개념 1. extract($_GET) : PHP에서는 일반적으로 $_GET[aaa]를 $aaa로 쓸 수 있다. 하지만 서버 설정이나 버전에 따라서 반드시 $_GET[aaa]를 써야 하는 경우가 있다. 이 때 본문에 $_GET[aaa] 대신 $aaa가 쓰여있다면 오작동을 일으키게 된다. extract함수는 배열의 값을 꺼내주는 역할을 한다. 즉 $_GET[aaa], $_GET[bbb] 가 있다면 $aaa, $bbb로 쓸 수 있도록 만들어준다. 2. trim 함수 : 시작과 끝 문자열에서 공백(또는 문자)을 제거하는 trim 함수 3. fil..

Security/WebHacking 2019.11.28

[HackCTF Web] 보물

문제 풀이 page 1 버튼을 누르면, 랜덤한 해쉬 값들이 나오는 것을 볼 수 있었다. page 3 버튼 말고 url을 통해 http://ctf.j0n9hyun.xyz:2025/?page=10 을 입력했을 때도 각각 다른 값들이 나왔다. 각각 page 버튼을 누를 때마다, GET방식으로 page=1, page=2, page=3을 전송한다는 것을 알게 되었다. 검색을 통해 python requests를 이용하여 코드를 작성하여 값을 출력해야 한다는 것을 알게 되었다. 해석: page 파라미터에 인자를 0부터 시작하여 flag값이 나올 때까지 1씩 증가시키며 request를 보내는 코드이다. 만약 request에 대한 응답에서 flag 형식의 문자열이 발견된다면 응답을 출력하고 break를 통해 종료하게 된..

Security/WebHacking 2019.11.28
반응형