본문 바로가기

전체 글

(167)
안드로이드 TIP 보호되어 있는 글입니다.
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..
codegate 2017 angrybird 이 문제는 z3아님 angr를 쓰라고 만들어놓은거같다.바이너리를 열어보면 exit()함수가 맞이해준다. 우선 바이너리를 수정해서 헥스레이를 사용할 수 있게 하자exit 함수위에 cmp eax, 1로 수정해주고 밑에 call 3개를 nop 처리한다. 이렇게 수정하면 fgets 두번 째 인자가 제대로 안되서 또 다시 수정해준다. 수정 전 수정 후이런식으로 nop처리한다.바이너리를 수정했으면 ida에서 이렇게 보인다.이제 fgets도 작동을 하니 angr를 통해 플래그를 얻어보자123456import angrproj = angr.Project("./test", load_options={'auto_load_libs':False})path_group = proj.factory.path_group(threads=4..
AlexCTF Reverse Engineering https://ctf.oddcoder.com/ 주말에 CTF가 두개씩이나 있어서 이거 문제를 풀다가 다른 CTF로 넘어갔다. 리버싱 50리버싱 50점은 그냥 보면 보였고 리버싱 100리버싱100점은 C++로 제작되었는데이 부분이 배열값에서 정해진 리스트대로 값을 뽑는부분인데 어셈코드는 이렇다 위에 aL3t_me~~~~이 문자 배열에서 밑에 저 리스트 0x36 0x65등등 이런값으로 값을 불러온다 근데 잘 안되가지고 일일이 하나씩 찾았다. 1234567891011121314151617181920212223242526272829303132333435a = "L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0w..
BITSCTF Riskv and Reward 리버싱 20점은 러버덕 펌웨어 파일이 주어졌는데 어떻게 해야하는지 아예 몰라서 못풀었다. 그래서 80점 자리만 잡고있었는데 elf 64비트 파일이 주어졌다. 아이다로 열어봤더니 안열리고 실행도 안됬다.계속 구글링만하다가 게싱을 해보자는 생각으로 헥스에디터를 실행했다. 바이너리 용량이 얼마 안되서 천천히 내려보았다. 가장먼저 눈에 띄는건 위의 문자열이다.해당 문자열을 보면 플래그를 섞어놓은것 처럼 보이는데 BITSCTF{}이걸 추측할 수있다.이 문제는 Alex 리버싱 100점이랑 비슷한데플래그를 뽑으려면 alex처럼 리스트가 있어야 할거같았다.그래서 BITSCTF를 배열에서 찾아보면 B = 0x28, I = 0x21 이런값이란걸 알 수 있다.이걸 헥스에디터에서 검색했더니 저 배열 바로 밑에 리스트가있었다...
securitytraps.pl whereami 보호되어 있는 글입니다.
insomnihack CTF bender_safe mips 아키텍처인걸 알 수 있는데 헥스레이가 안되니 직접 동적 디버깅을 통해 분석을 해야한다. 프로그램을 실행하면 OTP라고 뜨면서 랜덤값을 준다 이 값에 대한 문자열을 보내면 flag를 얻을 수 있다. vaildate함수를 보면 이 함수를 통과해야하는데이 함수를 분석해서 소스를 한번 짜봤다 123456789101112131415161718192021222324252627282930313233343536373839# -*- coding:utf-8 -*-text = raw_input("text: ")arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" result = ""result += text[0]result += text[-1]if ord(text[7])