CTF | wargame 130

RPISEC 연습문제 / crackme0x0?? (기초 리버싱, radare2 연습)

문제는 간단하다. password를 받고 고정된 값과 같으면 성공 메시지를 출력한다. strings로 긁어낼 수도 있다. 먼저 radare2를 이용하기 전이라면 사용했을 gdb를 이용한다. [ gdb / b *main+70 ] main+70에는 strcmp가 들어있다. 비교구문을 잡으면 스택에 비교하는 데이터들을 확인할 수 있기 때문. 보면 1234는 입력한 값이고 g00dJ0B!이 flag가 된다. radare2를 이용한 풀이이다. 아직 문제를 더 풀어 보아야 할 듯 하다. 기본적인 명령어 aa - analyze all pdf @ function name - function [0x08048430]> pdf @main ;-- main: / (fcn) sym.main 133 | sym.main (); | ..

CTF | wargame 2018.02.27

hdcon 2016 / runme (mips 프로그램 실행)

mips 가상머신을 돌리려고 하다 보니 mips 관련 문제 풀이로 이어져서 풀어보게 되었다. ref : http://kblab.tistory.com/328 qemu는 1712 최신버전으로 먼저 받고 링크 페이지에 필요한 파일들을 받고 배치파일을 생성한다. qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -redir tcp:4444::22 -nographic mips.bat 파일 공유 부분은 가지고있던 vm웹으로 전송하는 형태로 사용하였다. 뭐... runme 문제 자체가 mips상에서 실행하면 되는 프로..

CTF | wargame 2018.02.27

labyrenth 2017 / Mobile 2 - routerlocker (mips 리버싱, gdb set follow-fork-mode child)

mips가 mobile로 분류 되어 있다. 환경을 맞추고 실행을 시켜 보면 위와 같이 나온다. License file not found로 봐서는 파일을 읽어 들이는 것으로 보인다. [ IDA - fopen (loc_400908) ] mips에서 파라미터가 들어가는 형태는 a0, a1을 사용하는 듯 하다. 형태를 좀 자세히 알기 위해서 fopen의 원형을 보면 (https://www.ibm.com/support/knowledgecenter/ko/ssw_ibm_i_73/rtref/fopen.htm) FILE *fopen(const char *filename, const char *mode); 이와 같은 형태를 띈다. IDA에서 출력한 정보를 바탕으로 보면 fopen($a0, $a1)의 형태를 지닌다. mod..

CTF | wargame 2018.02.27

labyrenth 2017 / Mobile 1 - Ezdroid(안드로이드 코드 리버싱, 자바 연산상 오류 )

apk를 디컴파일 해 보면 볼만한 클래스는 EzMain과 ones 두 개가 존재한다. EzMain을 메인으로 생각하면 된다. [ onCreate ] onCreate부분을 보게 되면 Part1으로 특정 문자열이 출력 되게 되어 있다. 기기를 붙여 실행을 시키면 log로 확인이 가능하다. 아니면 코드 분석을 하면 된다. [ retIt ] part1의 답인 retIt을 보면 위와 같다. 고정된 숫자값의 shift right x만큼을 한다. 단, 저장되는 형태가 byte이므로, &연산을 통해 버려주어야 한다. 파이썬 연산으로 변환하면 다음과 같다. (-1041749503 >> 5) & 0xff (-1865645093 >> 9) & 0xff (-1972361451 >> 7) & 0xff (-1779558645 >..

CTF | wargame 2018.02.27

radare2 / sym 파싱 오류, sym to str

https://cpuu.postype.com/post/838572 위 포스트를 보고 radare2 연습을 하는 과정에서 문제가 발생함. RPISEC 첫 연습문제인 crackme0x00a [ 정상 결과 ] 이미 해결 뒤라 정상으로 나온 사진밖에... str.g00dJ0B!으로 나와야 할 부분이 자꾸 sym.pass.1685로 나타나는 현상... 이유는 버전상 오류였던 듯 하다. (관련 : https://github.com/radare/radare2/issues/4997) ubuntu에서 apt-get으로 받았던 radare2의 버전은 0.9.x로 너무 오래된 것 https://github.com/radare/radare2 공식 깃에서 받아서 다시 설치하면 해결이 가능하다.

CTF | wargame 2018.02.26

BlackHat 2017 / Web Cache Deception Attack

https://www.youtube.com/watch?v=mroq9eHFOIU 웹 CDN 서버에서의 캐시 데이터로 인한 취약점이다. 공격자가 어떤 공격으로 인해 피해자를 원하는 서버로 연결요청을 시킬 수 있다고 할때, http://private.com/private.php/nonexists.css 로 링크를 요청시킨다. 여기서 정상 페이지는 private.php이며, 뒤에 nonexists.css 는 static 페이지로 인식 시키기 위함이다. 이렇게요청을 시키게 되면, 피해자의 권한으로 private.php에 대한 접근 결과를 받게 된다. 하지만 CDN 서버에서는 private.php가 아닌 private.php/nonexists.css로 인식을 하게 되고, static 캐시 데이터로 인식을 하기 때문..

CTF | wargame 2018.02.26

codegate 2018 / Welcome to droid (Activity 강제 실행)

안드로이드 문제이다. Activity가 총 4개로 MainActivity, Main2Activity, Main3Activity, Main4Activity 가 존재한다. 먼저 MainActivity는 id를 입력받고 Main2Activity로 전환한다. 그리고 비밀번호를 받는데 입력받은 값을 고정된 문자열인 codegate2018hurray!HAHAHALOL과 특정 연산을 진행한다. [ Main2Activity ] 아마 액티비티에 번호를 붙인 것은 순서대로 진행을 하라는 의미일 것이며, 최종 목표는 Main4Activity를 실행 시킬 것이라고 생각하여 4번을 보았다. [ Main4Activity ] 코드는 간단하다. 액티비티를 띄우면 JNI에서 문자열을 읽어 온다. 다른 작업은 없기 때문에 해당 액티비티..

CTF | wargame 2018.02.26

codegate 2017 / bugbug (seed 획득을 통한 random 유추. 포맷스트링 버그)

write up : http://blog.kimtae.xyz/159 https://bpsecblog.wordpress.com/2016/05/02/codegate2016_bugbug/ .... 일단 취약한 fsb 부분과 넘겨야 하는 부분을 알았으므로 순서대로 보면 (1) random 넘기기 1단계로 random 값을 넘겨야 한다. random을 통과해야만 fsb가 터지는 printf 함수를 사용할 수 있기 때문이다. random에 사용되는 seed 값은 읽어들이게 되는데 buf 바로 뒤에 있다. 때문에 버퍼의 크기인 0x64를 입력하면 시드 값이 붙어서 나오게 된다. [ 붙어나온 seed 값 ] seed 값 계산은 ctypes 모듈을 사용하여 계산하였다. [ random 계산 ] (2) exit_got 흐..

CTF | wargame 2017.05.02

codeengn / smartapp / challenge 04 (안드로이드 apk 리버싱, 맵핑되지 않은 메소드 연결)

[ 문제 ] bctf mobile 문제를 풀다가 아직 codeengn 문제를 다 풀지 않았던 것을 알아서 풀게 된 문제. 이전 문제들과 동일하게 서명이 없기 때문에 설치를 할 수 없다. 어차피 리컴파일 하면 서명을 다시 해야하기 때문에 있으나 없으나 큰 차이는 없다. 이번 문제의 경우 풀면서 genymotion을 통한 adb를 사용하였다. (설정 : http://i5on9i.blogspot.kr/2014/12/adb-genymotion.html) [ apk 실행시 화면 ] 실행을 하면 위처럼 입력창 하나와 버튼 하나, 결과가 뿌려지는 텍스트가 하나 있다. apk의 구조는 상당히 간단하다. MainActivity가 있고, 거기서 키값 확인을 한다. 키값은 고정된 sha256값과 비교를 하게 된다. 사용되지..

CTF | wargame 2017.05.02