no image
Old - 54 (score:100)
문제로 들어오니 Password is 뒤에 하나씩 글자가 생겼다 사라지네요 ! 소스코드를 봅시다 :D answer 함수를 주목해서 봅시다 ㅎㅎㅎ! 문자를 가져온 후 setTimeout함수로 계속해서 문자를 호출하는 것으로 보이는군요! 그리고 최종적으로 아무런 문자가 없으면 "?"로 끝이나게 되는 구조입니다! 자세히보면 aview.innerHTML에 새로운 값을 대입하기 때문에 문자가 계속해서 바뀌게 되는군요! 그럼 간단하게 이어붙이면 되지 않을까요 :D ! 수정된 코드입니다 ! 어짜피 "?"는 필요없기 때문에 지워버렸고 제일 중요한건 "=" 에서 "+=" 로 연산자를 바꿈으로써 계속 이어나가게 했습니다 :D ! 개발자 환경에서 콘솔로 이 소스코드를 실행시키면.. 쨘! 플래그가 출력이 되네용 :D! 이만 ..
2020.02.25
no image
Basic RCE L11
문제는 OEP와 Stolenbyte를 찾는 문제입니다 :D PEiD로 프로그램을 확인해보니 UPX로 패킹이 되어 있네요 ! Stolenbyte를 찾아야하니 언패킹하지 않고 바로 찾겠습니다 :D 이제 POPAD 찾아가는건 능숙하죠 ㅎㅎㅎ?! 앞의 문제에서 계속해왔던거라 설명 생략하고 진행하겠습니다! POPAD 다음 PUSH 명령어가 보입니다! Stolenbyte임을 알 수 있죠 ㅎㅎㅎ? 계속 내려가서 OEP로 가봅시다! 40100C부터 있네요! 그럼 OEP가 40100C라고 생각할 수도 있지만.. OEP는 401000이겠죠 ㅎㅎㅎ? 그리고 총 12byte의 NOP이 존재합니다! 그럼 12byte의 stolenbyte가 있어야하니까 [POPAD] 그림에서 PUSH 명령어 3개가 Stolenbyte가 되겠네요..
2020.02.24
no image
Old - 39 (score:100)
입력란이 하나가 존재하는군요! 소스코드를 봅시다 :D 소스코드를 살펴보니 역슬래쉬(\)는 공백 처리 싱글쿼터(')는 ''로 처리된다고 하네요! 그리고 15글자로 문자열을 끊어버리는군요 ㅎㅎㅎ 쿼리에서 자세히보면 id 뒤에 싱글쿼터가 존재하지 않는거 보이시나요 :D ? 저 취약점을 이용해서 풀어보겠습니다! id는 당연히 admin으로 해야하는 암묵적인 느낌을 가지고 해야하는데 mysqlql에서는 "=" 연산 작동 시 공백을 이용할 수가 있습니다! 'admin' = 'admin ' 위의 두개의 연산이 성립이 됩니다! 밑의 사이트에서 정말 잘 설명되어 있으니 한번 보시길 바래요 :D https://woowabros.github.io/study/2018/02/26/mysql-char-comparison.html..
2020.02.24
no image
Reversing - Reversing Me
문제를 보니 어떤 코드가 존재합니다 :D 한번 확인해볼까요 ! serial 값이 들어있고 키를 입력하여 복호화된 값을 맞추라고 하는거군요 :D 그럼 간단하게 디코딩을 통해 flag를 출력시키면 되겠네요 ! 쨘 ! 이상 문제풀이를 마치겠습니다 :D
2020.02.24
no image
Reversing - Welcome_REV
HackCTF의 리버싱 문제를 풀어보도록 하겠습니다! 실행을 시켜보니 패스워드를 입력하라고 합니다! 음.. 그럼 비교하는 부분이 있지 않을까요 :D ? 바이너리 부분을 보기 위해 strings 명령어를 이용해 보도록 합시다! 명령어를 이용하여 확인해보니 base64로 보이는 문자열이 존재합니다! 확인을 해보니 Flag네용 :D 이만 리버싱 첫번째 문제 풀이였습니다!
2020.02.24
no image
Old - 38 (score:100)
문제로 들어가니 log를 인젝션하라네요? 소스코드를 봅시다 :D 소스코드를 보니 아무런게 없고 admin 페이지가 있다고합니다! admin.php에 접속하여 보니 log viewer가 존재합니다! 그리고 ip와 입력했던 정보가 존재하는군요 :D admin을 입력해 보겠습니다! admin이 아니라는군요..? 그럼 admin을 로그에 남기면 풀리겠구만 했습니다 :D 개행을 이용해서 문제를 풀어보겠습니다! 소스코드에 input 타입을 textarea로 변경하여 쉽게 개행하여 입력이 되도록 하면 간단하겠죠 :D ? 요런식으로 입력하게 되면 아마 admin으로 로그인되지 않을까 싶습니다 :D admin.php로 접속하니 쨘! 하고 풀리네요 :D 이만 Old 38번 문제 풀이였습니다!
2020.02.23
no image
Basic RCE L10
이번에는 OEP와 등록성공으로 가는 OPCODE를 구하라고합니다! PUSHAD를 보아하니 패킹이 되어있군요 :D 한번 확인해봅시다! 이번에는 ASPacking이 되어있습니다! UPX가 아니군요..! 일단 전 문제 풀이에서 공부했던 방식으로 OEP를 찾아가도록 하겠습니다 :D OEP를 찾아왔습니다! 그런데 아무런게 보이지 않는군요? [Ctrl] + [A] 를 누르면 본래 코드들을 볼 수 있습니다 :D 그럼 쉬운방법으로 찾기 위해 문자열로 찾아봅시다 :D 문자열을 검색하니 Registered가 보입니다! 더블클릭으로 들어가 봅시다 :D 조금더 위에 보니 JNZ 분기가 보이네요 ! 저 분기에 따라 Registerd 문자열이 출력이 되는것을 보아 "등록성공" 으로가는 분기임을 알 수 있습니다! 이만 Basic ..
2020.02.23
no image
Basic RCE L09
StorlenByte를 구하라고 하네요 :D 일단 열어봅시다! 또 PUSHAD가 나왔습니다! 패킹이 되어있다는 소리겠죠 ㅎㅎㅎ? 이번에는 한번에 POPAD로 가는 방법을 알려드리겠습니다! PUSHAD를 실행시키면 8개의 레지스터가 스택에 쌓인다고 했죠 :D 쌓인 순간의 스택의 위치를 메모리 주소로 찾아갑니다! 그럼 ESP의 위치는 19FF54이므로 메모리도 19FF54로 Go To([Ctrl]+[G]) 해주도록 합시다 :D 그다음 첫번째 바이트에 브레이크 보인트를 걸어줍니다! 그리고 [F9]를 눌러 실행을 시켜주면 바로 POPAD 밑으로 갑니다! 이렇게 말이죠 :D 그런데 PUSH 명령어가 3개가 존재하는 걸 볼 수 있습니다! StolenByte의 의미를 알아야 하는데요 ! 패커가 임의로 이동 시킨 코드..
2020.02.15

Old 54번 문제

문제로 들어오니 Password is 뒤에 하나씩 글자가 생겼다 사라지네요 !

 

소스코드를 봅시다 :D

소스코드

answer 함수를 주목해서 봅시다 ㅎㅎㅎ!

 

문자를 가져온 후 setTimeout함수로 계속해서 문자를 호출하는 것으로 보이는군요!

그리고 최종적으로 아무런 문자가 없으면 "?"로 끝이나게 되는 구조입니다!

 

자세히보면 aview.innerHTML에 새로운 값을 대입하기 때문에 문자가 계속해서 바뀌게 되는군요!

 

그럼 간단하게 이어붙이면 되지 않을까요 :D !

수정된 코드

수정된 코드입니다 !

어짜피 "?"는 필요없기 때문에 지워버렸고 제일 중요한건 "=" 에서 "+=" 로 연산자를 바꿈으로써

계속 이어나가게 했습니다 :D !

 

개발자 환경에서 콘솔로 이 소스코드를 실행시키면..

flag

쨘! 플래그가 출력이 되네용 :D!

 

이만 54번 문제풀이를 마치도록 하겠습니다 !

'CTF > Webhacking.kr' 카테고리의 다른 글

Old - 32 (score:150)  (0) 2020.03.05
Old - 25 (score:150)  (0) 2020.02.29
Old - 39 (score:100)  (0) 2020.02.24
Old - 38 (score:100)  (0) 2020.02.23
Old - 26 (score:100)  (0) 2020.02.14

Basic RCE L11

HelloMG
|2020. 2. 24. 17:43

Basic RCE L11 문제

문제는 OEP와 Stolenbyte를 찾는 문제입니다 :D

PEiD

PEiD로 프로그램을 확인해보니 UPX로 패킹이 되어 있네요 !

Stolenbyte를 찾아야하니 언패킹하지 않고 바로 찾겠습니다 :D

POPAD

이제 POPAD 찾아가는건 능숙하죠 ㅎㅎㅎ?!

앞의 문제에서 계속해왔던거라 설명 생략하고 진행하겠습니다!

 

POPAD 다음 PUSH 명령어가 보입니다!

Stolenbyte임을 알 수 있죠 ㅎㅎㅎ?

 

계속 내려가서 OEP로 가봅시다!

OEP

40100C부터 있네요!

그럼 OEP가 40100C라고 생각할 수도 있지만.. OEP는 401000이겠죠 ㅎㅎㅎ?

 

그리고 총 12byte의 NOP이 존재합니다!

그럼 12byte의 stolenbyte가 있어야하니까

[POPAD] 그림에서 PUSH 명령어 3개가 Stolenbyte가 되겠네요 :D

 

이렇게 쉽게 풀 수 있었습니다 :D

앞에서 계속 풀어왔던 문제를 복습하는 듯한 느낌이네요 !

 

이만 문제풀이 마치겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L13  (0) 2020.03.22
Basic RCE L12  (0) 2020.02.28
Basic RCE L10  (0) 2020.02.23
Basic RCE L09  (0) 2020.02.15
Basic RCE L08  (0) 2020.02.14

Old 39번 문제

입력란이 하나가 존재하는군요!

 

소스코드를 봅시다 :D

소스코드

소스코드를 살펴보니

역슬래쉬(\)는 공백 처리

싱글쿼터(')는 ''로 처리된다고 하네요!

그리고 15글자로 문자열을 끊어버리는군요 ㅎㅎㅎ

 

쿼리에서 자세히보면 id 뒤에 싱글쿼터가 존재하지 않는거 보이시나요 :D ?

 

저 취약점을 이용해서 풀어보겠습니다!

 

id는 당연히 admin으로 해야하는 암묵적인 느낌을 가지고 해야하는데

mysqlql에서는 "=" 연산 작동 시 공백을 이용할 수가 있습니다!

 

'admin' = 'admin       '

위의 두개의 연산이 성립이 됩니다!

 

밑의 사이트에서 정말 잘 설명되어 있으니 한번 보시길 바래요 :D

https://woowabros.github.io/study/2018/02/26/mysql-char-comparison.html

 

MySQL에서 'a' = 'a '가 true로 평가된다? - 우아한형제들 기술 블로그

DB 알못의 어떤 리서치

woowabros.github.io

 

 

그럼 어떻게 풀면될까요 :D ?

풀이

쨘 ! 요렇게 풀면 됩니다 ㅎㅎㅎㅎ

'admin          ' 이런식으로 입력하면

싱글쿼터가 2개가 되지만 15, 16번째 위치에 속하기 때문에 뒤의 16번째는 짤려서 15번째 쿼터만 남게되죠!

그럼 'admin'으로 인식이 되어집니다 !

풀이 성공

그럼 이만 문제풀이를 마치겠습니다 !

'CTF > Webhacking.kr' 카테고리의 다른 글

Old - 25 (score:150)  (0) 2020.02.29
Old - 54 (score:100)  (0) 2020.02.25
Old - 38 (score:100)  (0) 2020.02.23
Old - 26 (score:100)  (0) 2020.02.14
Old - 24 (score:100)  (0) 2020.02.13

Reversing - Reversing Me

HelloMG
|2020. 2. 24. 16:44

Reversing Me

문제를 보니 어떤 코드가 존재합니다 :D

 

한번 확인해볼까요 !

소스코드

serial 값이 들어있고 키를 입력하여 복호화된 값을 맞추라고 하는거군요 :D

 

그럼 간단하게 디코딩을 통해 flag를 출력시키면 되겠네요 !

복호화를 위한 소스코드
flag

쨘 !

 

이상 문제풀이를 마치겠습니다 :D

'CTF > HackCTF' 카테고리의 다른 글

Forensics - Question?  (0) 2020.02.28
Forensics - Welcome_Forensics  (0) 2020.02.25
Reversing - Welcome_REV  (0) 2020.02.24
Cryptography - Classic Cipher-2  (0) 2020.02.14
Cryptography - Classic Cipher-1  (0) 2020.02.13

Reversing - Welcome_REV

HelloMG
|2020. 2. 24. 15:48

Welcome_REV

HackCTF의 리버싱 문제를 풀어보도록 하겠습니다!

실행

실행을 시켜보니 패스워드를 입력하라고 합니다!

 

음.. 그럼 비교하는 부분이 있지 않을까요 :D ?

바이너리 부분을 보기 위해 strings 명령어를 이용해 보도록 합시다!

명령어를 이용하여 확인해보니 base64로 보이는 문자열이 존재합니다!

확인을 해보니 Flag네용 :D

flag

이만 리버싱 첫번째 문제 풀이였습니다!

'CTF > HackCTF' 카테고리의 다른 글

Forensics - Welcome_Forensics  (0) 2020.02.25
Reversing - Reversing Me  (0) 2020.02.24
Cryptography - Classic Cipher-2  (0) 2020.02.14
Cryptography - Classic Cipher-1  (0) 2020.02.13
Cryptography - Smooth CipherText  (0) 2020.02.12

Old 38번 문제

문제로 들어가니 log를 인젝션하라네요?

 

소스코드를 봅시다 :D

source code

소스코드를 보니 아무런게 없고 admin 페이지가 있다고합니다!

admin.php

admin.php에 접속하여 보니 log viewer가 존재합니다!

그리고 ip와 입력했던 정보가 존재하는군요 :D

admin

admin을 입력해 보겠습니다!

you are not admin

admin이 아니라는군요..?

그럼 admin을 로그에 남기면 풀리겠구만 했습니다 :D

textarea

개행을 이용해서 문제를 풀어보겠습니다!

소스코드에 input 타입을 textarea로 변경하여 쉽게 개행하여 입력이 되도록 하면 간단하겠죠 :D ?

Injection

요런식으로 입력하게 되면 아마 admin으로 로그인되지 않을까 싶습니다 :D

문제 풀이 성공

admin.php로 접속하니 쨘! 하고 풀리네요 :D

 

이만 Old 38번 문제 풀이였습니다!

'CTF > Webhacking.kr' 카테고리의 다른 글

Old - 54 (score:100)  (0) 2020.02.25
Old - 39 (score:100)  (0) 2020.02.24
Old - 26 (score:100)  (0) 2020.02.14
Old - 24 (score:100)  (0) 2020.02.13
Old - 18 (score:100)  (0) 2020.02.12

Basic RCE L10

HelloMG
|2020. 2. 23. 15:43

Basic RCE L10 문제

이번에는 OEP와 등록성공으로 가는 OPCODE를 구하라고합니다!

PUSHAD

PUSHAD를 보아하니 패킹이 되어있군요 :D

한번 확인해봅시다!

ASPack

이번에는 ASPacking이 되어있습니다!

UPX가 아니군요..!

 

일단 전 문제 풀이에서 공부했던 방식으로 OEP를 찾아가도록 하겠습니다 :D

OEP

OEP를 찾아왔습니다!

그런데 아무런게 보이지 않는군요?

[Ctrl] + [A] 를 누르면 본래 코드들을 볼 수 있습니다 :D

[Ctrl] + [A]

그럼 쉬운방법으로 찾기 위해 문자열로 찾아봅시다 :D

문자열 검색

문자열을 검색하니 Registered가 보입니다!

 

더블클릭으로 들어가 봅시다 :D

JNZ 분기

조금더 위에 보니 JNZ 분기가 보이네요 !

 

저 분기에 따라 Registerd 문자열이 출력이 되는것을 보아 "등록성공" 으로가는 분기임을 알 수 있습니다!

 

이만 Basic RCE L10 문제풀이를 마치겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L12  (0) 2020.02.28
Basic RCE L11  (0) 2020.02.24
Basic RCE L09  (0) 2020.02.15
Basic RCE L08  (0) 2020.02.14
Basic RCE L07  (0) 2020.02.13

Basic RCE L09

HelloMG
|2020. 2. 15. 17:22

Basic RCE L09 문제

StorlenByte를 구하라고 하네요 :D

 

일단 열어봅시다!

PUSHAD

또 PUSHAD가 나왔습니다!

패킹이 되어있다는 소리겠죠 ㅎㅎㅎ?

 

이번에는 한번에 POPAD로 가는 방법을 알려드리겠습니다!

Go to

PUSHAD를 실행시키면 8개의 레지스터가 스택에 쌓인다고 했죠 :D

쌓인 순간의 스택의 위치를 메모리 주소로 찾아갑니다!

그럼 ESP의 위치는 19FF54이므로 메모리도 19FF54로 Go To([Ctrl]+[G]) 해주도록 합시다 :D

Hardware BP

그다음 첫번째 바이트에 브레이크 보인트를 걸어줍니다!

 

그리고 [F9]를 눌러 실행을 시켜주면 바로 POPAD 밑으로 갑니다!

POPAD

이렇게 말이죠 :D

그런데 PUSH 명령어가 3개가 존재하는 걸 볼 수 있습니다!

 

StolenByte의 의미를 알아야 하는데요 !

패커가 임의로 이동 시킨 코드의 윗부분을 의미를 합니다 :D

이러한 경우 정상실행이 되지 않기 때문에 제 위치에 놓은 뒤 덤프를 시켜 정상 실행을 시켜줘야 하죠!

 

덤프하는 방법은 다른 사이트에도 많이 나와있으니 한번 꼭 해보시길 바랍니다 !

* 많은 공부가 되실꺼예요 ㅎㅎㅎ *

 

그럼 저 3개의 PUSH 명령어가 StolenByte면 OEP로 돌아갔을 때 정상적인 모습이 나오지 않겠죠 :D ?

OEP

OEP로 돌아가보니 정상적이지 않은 것을 보아 StolenByte임을 알 수 있습니다!

 

그러므로 정답은 "6A0068002040006812204000"이 되겠네요 ㅎㅎㅎㅎ

 

이만 9번 문제 풀이를 마치겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L11  (0) 2020.02.24
Basic RCE L10  (0) 2020.02.23
Basic RCE L08  (0) 2020.02.14
Basic RCE L07  (0) 2020.02.13
Basic RCE L06  (0) 2020.02.12