본문 바로가기

CTF

(53)
Reto Android Crackme #2 이번 문제는 smali code 패치 때문에 시간이 조금 걸렸다. 2개의 액티비티가 보인다. 그리고 조금 폴더를 둘러보면 이렇게 보이는데 이게 성공시 나타나야 하는 화면같다. 별다른 건 보이지 않고 success.jpg만 있기 때문에 확신을 할 수 있었다. 한번 실행을 해보자여기서 Exit를 누르면 해당 앱은 종료되고 Buy App을 눌렀을 땐 미리 설정해둔 url로 이동하게된다.url로 이동했을 때 없는 페이지기 때문에 결론은 아무것도 안일어난다. 이제 소스를 볼 차례다. 클래스는 봤던대로 보인다. 우선 MyAndroidAppActivity부터 보면 이게 끝이다. 중요한 부분은 LicenseCheck 클래스이다. 우선 base64와 바이트 배열이 보이는데 나중에 License를 구할 때 쓰는거 같다. ..
Reto Android Crackme #1 어떤 클래스를 봐야할지 나와있으므로 바로 보도록하자. username 입력창과 password 입력창이 있는데 username은 admin3으로 되어있고 password는 PBAGENFRAN456을 doConvert한 값과 비교한다. 123456789101112131415161718192021222324public class test{ public static String doConvert(String in) { StringBuffer tempReturn = new StringBuffer(); for (int i = 0; i
pragyan ctf MI6 정해진 대로 푼 문제는 아니다 그냥 수많은 게싱을 반복해서 푼 문젠데 나중에 꼭 풀이를 보고싶다.ruby라는 언어는 안써봐서 어떻게 소스를 해석해야할지 몰라서 그냥 게싱했다 이 대회가 좀 이상한게 그냥 주는 파일마다 확장자를 exe를 붙여놨다. 아무튼 저 만큼 까지가 bash 소스이고 그 밑에 payload.tar tar 압축 파일명이 보인다. 그래서 헤더를 검색해보면바로 옆에 있던 1f 8b 08이 tar 헤더이다.고대로 tar파일을 빼서 tar.gz파일로 만든다음 압축을 풀면 reverse_1.rb가 주어진다.1234567891011121314151617181920212223242526272829303132333435363738394041424344454647class Fixnum def random..
Hashdays 2012 Android Challenge 이번 문제 풀이는 길다. 이거 하나 푸느라고 몇 시간을 낭비했는지 모르겠다. 우선 클래스 수가 적다. 저부분만 보면 될거같다. 해쉬값들이 보이고 성공 문자열도 보인다. 우선 실행을 해봤는데 이틀전 푼 문제와 디자인이 똑같다. 하지만 문제 난이도는 엄청 다르다.다시 위에 소스를 보면 sha-256도 보이는데 hashes의 첫 번째 값을 sha-256으로 복호화하면 엄청 간단한데 이렇게 키값이 보인다. 성공!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 자! 그럼 본론으로 들어가보자 이 문제는 2012년도 문제다. 지금은 해쉬 데이터 베이스가 많아서 바로 나왔지만 (누군가 이미 값을 넣어봤을테니)그 당시에는 바로 나오지 않았을 것이..
여러가지 아키텍쳐로 컴파일 보호되어 있는 글입니다.
Insomni’hack 2012 InsomniDroid CrackMe AndroidManifest.xml를 확인해보면 InsomniActivity가 보인다. 클래스는 3개뿐이다. 버튼 하나와 입력창과 텍스트가 있을 것이다. 해당 앱을 실행하면 이렇게 생겼다. 우선 a클래스를 보면 입력한 값을 가져와서 true가 되면 Congrats! 문자가 나오는것이다. 바이트 배열이 보이는데 패스하고 아래의 소스를 보자! b클래스를 보면 AES암호화 SHA-256이 보이는데내가 입력한 값을 SHA-256 암호화하고 그 값이 바이트 배열 b와 같으면 리턴값으로 true를 준다. a배열은 그냥 fake이다. b배열은 sha256인데 해당 값이 최종 비교할 값이다.6152587ede8a26f53fd391b055d4de501ee8b2497fe74f8fd69f2c72e2f3e37a c배열과 d배..
BSidesSF-pinlock 대회 때 못풀어서 풀이를 참고하여 풀었다.2가지 방법으로 풀어보겠다. 첫 번째pin 번호를 요구한다. 아무거나 입력했더니 틀렸다고 나오게된다. 소스를 보면 내가 입력한 pin을 sha1로 암호화해서 pinDB에 있는 값과 같으면 시크릿 클래스 실행 소스를 보면 DatabaseUtilities에 secretsDBv1 이 값을 디크립트하고 CryptoUtilities 함수에 v1과 내가 입력한 pin을 넘겨준다.그리고 이 값을 화면에 표시하는데 우슨 pindb를 확인해봐야겠다. 여기서 pin값은 sha1이라서 디코딩을 해보면 7498이란 값을 가지게된다. 입력해도 이렇게 나온다. 보니까 DB가 3개가 있다. (secretsDBv2가 있는데 소스에서는 보이질 않는다 준 이유가 있겠지) 그리고 readme에 이..
BSidesSF Reversing Easy설명이 따로 필요 없는 문제다.ida pro로 열면 끝!FLAG:db2f62a36a018bce28e46d976e3f9864 Skipper컴퓨터 이름, 운영체제 버전, CPU 이름을 비교하고 flag 함수를 호출한다.푸는 방법은 다양한데 그냥 조건 분기를 패스하면 flag를 호출한다. FLAG:f51579e9ca38ba87d71539a9992887ff Skipper2Skipper와 같은 문제인데 finsh 함수를보면 연산 할 때 user이름, os 버전, cpu 이름과 연산을 하기 때문에이름을 변경해줘야한다. FLAG:18ee7c71d2794f546ca23e6858de0bc6 Easyarm12345678910111213141516171819202122232425262728293031323334353..