일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- RPS
- SQL
- 데이터 무결성
- ZIP
- Python
- Android 서명
- Database
- main
- Android 디컴파일
- Programming
- 스키마 생성
- ADB
- select
- 인자 전달
- android
- __main__
- rps.apk
- sys
- __name__
- enumerate
- SECCON
- db
- 무결성 제약조건
- Pay1oad
- r
- 릴레이션 생성
- 데이터베이스
- CodeEngn
- Today
- Total
목록Security (15)
블로그

위 코드에서 보면 cnt값이 1000이 되어야 해당 플래그를 출력해주는 것을 볼 수 있다. 그래서 해당 부분을 다음과 같이 수정을 하고 실행 했더니 이렇게 나오고 cnt가 1000일 때의 올바른 정답을 알 수 없었다. 물론 구하자면 구할 수 있다.. 우선 우리가 알고싶은 값은 calc.so에서 리턴되는 값이다. 아래와 같이 코드를 수정 및 추가한다. .locals 5 에서 .locals 6으로 변경 v3에 저장된 calc.so의 리턴 값을 string으로 받은 후 로그로 출력하면 7이 출력 되는 것을 알 수 있다. 이 상태에서 위에서 1000에서 0으로 변경한 값을 밑에서 다시1000으로 수정하고 실행하면 정답을 볼 수 있다. SECCON{107749}

CodeEngn Smart App L02 앱 소스를 보면 위와 같이 두가지 조건이 동시에 만족해야 원하는 키값이 나오는 것으로 보인다. this.makeDate()가 일치하는지 확인해주는 조건문 if-ne를 if-eq로 변경 this.Volume()가 일치하는지 확인해주는 조건문 if-ne를 if-eq로 변경 이후 zipalign과 apksigner를 사용하여 앱을 서명해서 실행하면 원하는 키 값을 볼 수 있다.

ADB 설치 방법 안드로이드 스튜디오 실행 우측 상단 File 에서 Settings... 클릭 검색창에 sdk 검색 후 Android SDK 클릭 SDK Tools에서 다음처럼 Android SDK Platfrom-Tools가 설치 되어있는지 확인 기존에 설정한 Platfrom-Tools의 환경변수 제거(해당되는 경우만) 위처럼 형광펜으로 칠해진 부분을 눌러 환경변수 등록. 일반적으로 아래와 같은 위치에 platform-tools가 설치된다.(사용자마다 다를 수 있음) C:\Users\사용자 이름\AppData\Local\Android\Sdk\platform-tools ADB 명령어 간단 정리 # adb에 연결된 디바이스 확인 adb devices # adb 재시작 adb kill-server adb s..

문제 OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 프로그램 실행 여기서 입력이 안된다!!!!!! 프로그램 수정 다음과 같이 ASPack으로 패킹되어있다. 다음과 같이 PUSHAD 를 하여 레지스터를 스택에 저장하는 것을 알 수 있다. 이 후 POPAD를 사용하여 저장된 레지스터들이 다시 불러오게 된다. 따라서 스택에 저장된 ESP에 BreakPoint를 걸면 패킹이 풀린 뒤 정상적인 프로그램의 시작 전으로 돌아갈 수 있다. 여기서 RETN 0C가 프로그램이 시작하는 OEP로 가는 명령이다. 따라서 OEP는 00445834라는 것을 알 수 있다. 이곳에서 Ctrl + A를 눌러 코드 재분석을 해준다..

문제 StolenByte를 구하시오 Ex) 75156A0068352040 다음과 같이 종료된다. 단순히 실행됬다가 어떤 파일을 찾고서 없으면 찾을 수 없다고 하면서 종료된다. 프로그램 수정 우선 StolenByte가 무슨 뜻인지 알야야한다. https://muhan56.tistory.com/80 StolenByte는 패커가 위치를 이동시킨 코드로써 보호된 프로그램의 코드의 윗부분이다. (보통은 엔트리 포인트의 몇 개의 명령어이다.) 이 상태에서 언팩을 진행하면 코드의 일부분이 사라져서 정상적으로 작동하지 않는다. 이 프로그램을 언팩하고 실행하면 아래의 사진처럼 처음 시작 부분에서 코드의 일부분이 사라져서 위 사진이 아래사진처럼 정상적으로 출력되지 않고 이상하게 나온다 패킹된 상태에서 디버깅을 실행하면 이..

문제 OEP를 구하시오 Ex) 00400000 프로그램 실행 일반적인 계산기이다.. 프로그램 수정 OEP는 앞에서 풀었던 6번 문제처럼 풀면 된다. Packing이 되어있는 프로그램을 실행하면 우선 Unpacking을 실행한다. Unpaking이 끝나면 원본코드를 동작시키기 위해서 OEP로 분기한다. 실행하고서 가장 마지막에 점프하는 부분은 원본 코드의 EntryPoint로 점프한다는 것을 알 수 있고 이부분이 OEP이다. 마지막에 점프하는 부분을 찾아본다!! OEP인 부분의 주소는 01012475이다. 정답 끝!

문제 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 '어떤것'으로 변경되는가 ? 프로그램 실행 프로그램 수정 프로그램을 실행하다보면 0040225C에서 볼륨이름을 받고, 004010AD가 실행되면 0040225C에 볼륨이름을 저장하는 것을 알 수 있다. 4562-ABEX로 저장된 볼륨이름. 이 부분을 CodeEngn으로 수정해준다. 수정하고 계속 진행하면 입력된 시리얼과 비교하기전에 004010AF~004010CB가 2번 반복되어서 볼륨이름이 다음과 같이 바뀌는 것을 알 수 있다. 정답 끝!

문제 Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD 프로그램 실행 프로그램 수정 Packing이 되어있는 프로그램을 실행하면 우선 Unpacking을 실행한다. Unpaking이 끝나면 원본코드를 동작시키기 위해서 OEP로 분기한다. 실행하고서 가장 마지막에 점프하는 부분은 원본 코드의 EntryPoint로 점프한다는 것을 알 수 있고 이부분이 OEP이다. 마지막에 점프하는 부분을 찾아본다!! 가장 마지막 부분에서 00401360으로 점프하는 것을 알 수 있고, 여기를 지나면 원본코드가 실행되는 것을 볼 수 있다. 원본코드가 실행되고 나서 프로그램을 진행하다보면 00401062에 있는 특정문자열과 비교해주는 것으로 추정되는 부분이 있..