일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Python
- 릴레이션 생성
- Database
- sys
- Pay1oad
- __name__
- 스키마 생성
- Android 서명
- 데이터베이스
- Android 디컴파일
- ZIP
- rps.apk
- r
- ADB
- 무결성 제약조건
- CodeEngn
- main
- select
- android
- __main__
- SECCON
- enumerate
- SQL
- RPS
- Programming
- db
- 인자 전달
- 데이터 무결성
- Today
- Total
목록분류 전체보기 (58)
블로그

if __name__ == '__main__' 실행된 모듈의 이름이 __main__이면 실행하라는 의미이다. 모듈을 직접 실행하면 __main__이라는 값을 가지게 되고, import를 통해서 실행된 모듈은 파일명을 값으로 가지게 된다. 아래의 예시를 통해 확인할 수 있다. # file.py if __name__ == "__main__": print("직접 실행한 경우") print(__name__) else: print("import를 통해 실행한 경우") print(__name__) 다른 스크립트에서 모듈로 불러와서 실행한 경우 # 다른 스크립트에서 모듈로 불러오기 import file

인자 전달 아래는 명령창에서 인자를 전달하는 방법이다. # 한 개의 인자를 전달 python test.py argv1 # 두 개의 인자를 전달 python test.py argv1 argv2 전달 받은 인자를 확인하는 방법으로는 sys모듈을 사용하여 확인할 수 있다. 아래는 전달 받은 인자를 확인하는 방법이다. # sys 모듈을 로드 import sys # sys.argv[0]에는 스크립트의 이름(모듈의 이름)이 저장된다. print(sys.argv[0]) # 두 개의 인자를 전달 받았다면 아래와 같이 확인할 수 있다. print(sys.argv[1]) print(sys.argv[2]) test.py의 코드 test.py의 실행 결과

zip, enumerate `enumerate `는 인덱스와 값을 튜플 형태로 반환한다. 아래는 `enumerate` 사용의 예시이다. list = [1, 2, 3, 4] for index, data in enumerate(list): print("인덱스: " + str(index)) print(" 값 : " + str(data)) print("--------") `zip`은 다수의 iterable 객체를 받아 튜플 형태로 반환한다. 각 객체의 크기가 다를 경우 가장 작은 객체의 크기만큼 반복한다. 아래는 `zip` 사용의 예시이다. list1 = [1, 2, 3, 4] list2 = [1, 2, 3, 4] list3 = [1, 2, 3, 4] for i, j, k in zip(list1, list2, ..

위 코드에서 보면 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..
테이블 예시 EMPLOYEE EMPNO EMPNAME TITLE MANAGER SALARY DNO 2106 김창섭 대리 1003 2500000 2 3426 박영권 과장 4377 3000000 1 3011 이수민 부장 4377 4000000 3 1003 조민희 과장 4377 3000000 2 3427 최종철 사원 3011 1500000 3 1365 김상원 사원 3426 1500000 1 4377 이성래 사장 ^ 5000000 2 DEPARTMENT DEPTNO DEPTNAME FLOOR 1 영업 8 2 기획 10 3 개발 9 4 총무 7 문자열 비교 LIKE 비교 연산자는 문자열 타입으로 선언된 애트리뷰트에만 사용이 가능하며, 영문자에 대해서는 대, 소문자를 구분한다. 부정 연산자로는 NOT LIKE 를 ..
SELECT DATABASE에서 특정 조건을 가진 투플을 검색할 때 사용하는 SQL문이다. SELECT문의 구조 -- 필수적인 절 SELECT 애드리뷰트(들) FROM 릴레이션(들) -- 선택적인 절 WHERE 애트리뷰트 조건(들) GROUP BY 그룹화 할 애트리뷰트(들) HAVING GROUP BY에 사용된 애트리뷰트 조건(들) ORDER BY 정렬의 기준이 되는 애트리뷰트(들); SELECT절 질의 결과에 포함시킬 애트리뷰트들을 열거한다. DISTINCT절을 추가하여 중복 제거가 가능하다. -- EMPLOYEE에 있는 모든 데이터 조회 SELECT * FROM EMPLOYEE; -- EMPLOYEE에 있는 모든 데이터를 중복 제거 후 조회 SELECT DISTINCT * FROM EMPLOYEE; ..