목록전체 글 (184)
Iriton's log

문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. 입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다. 출력 ..

초기 화면은 위와 같다. flag.docx 를 다운받으려 하니 역시나... 권한이 부여되지 않았다고 한다. 그럼 test.txt라도 다운로드 받아 보자. 소스코드를 확인해 보니 test.txt의 하이퍼링크는 어떤 문구가 인코딩된 걸로 보이는 것으로 연결되어 있고 flag.docx는 애초부터 access denied 라는 경고문이 뜨게 되어 있다. 우선 디코딩 해서 어떤 문구인지 확인해 보자. ?down=dGVzdC50eHQ= 위의 문자열을 base64로 디코딩 했는데 위와 같은 결과가 나왔다. ?down=까지는 어떤 파일을 다운로드 하라는 거 같고 그 뒤의 문자열이 test.txt의 인코딩된 문자열 같다. 그럼 이 문자열을 flag.docx을 인코딩한 문자열로 바꿔서 실행하면 어떨까? 그럼 test.tx..

초기 화면은 위와 같다. 제출 버튼을 눌러보면 url에 id=admin으로 입력한 값이 뜨며, you are not admin이라는 문구가 뜬다. admin으로 접속이 되면 flag 값이 뜰 것 같다. 소스 코드에는 별다른 내용이 없었다. 혹시나 admin을 base64로 인코딩 한 값인 YWRtaW4= 으로 바꾸면 될까 싶었지만 그냥 로그인만 된다. 그래서 가장 기본적인 SQL Injection 공격을 시도했다. ?id=admin'-- 콜론으로 id 입력 코드를 임의로 끝내고 --으로 뒤의 코드를 무력화 시켜서 원래 로그인 조건에 맞지 않아도 admin으로 로그인 될 수 있게끔 하는 것이다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.

문제 파일 zip이 암호화 되어 있다. 암호화를 풀어 주어야 한다. zip의 구조에 대해 먼저 살펴 보자. flag는 0x6 0x7에 있다고 한다. Hxd로 문제 zip을 열어 보자 bit 0 : 암호화 bit 1~2 : 압축 옵션 bit 3 : 데이터 설명자 bit 4 : 향상된 압축해제 bit 5 : 패치 데이터 압축됨 bit 6 : 강한 압축 bit 7~10 : 미사용 bit 11 : 언어 부호화 bit 12 : 예약 비트 bir 13 : 헤더 마스크 값 bit 14~15 : 예약 비트 추가로, 암호화 되지 않는 zip 파일을 Hxd로 열어 확인해 보니 해당 flag 값이 00 00으로 저장되어 있는 걸 확인했다. 그래서 문제 파일도 09 08 에서 00 00 값으로 변경했다. 그래도 암호가 풀리지..

STEP을 단계별로 거치지 않고 임의로 하이퍼링크를 타고 들어가면 위와 같은 문구가 뜬다. 코드 분석 param과 param2가 각각 getget, rerequest이기만 하다면 32번째 줄 조건문을 통과하면서 step2로 넘어간다. prev_step_num(입력값)이 step1_num과 일치해야 조건문에 진입할 수 있다. 전역변수 step2_num은 int.from_byte(os.urandom(16), sys.byteoreder)의 값을 저장한다. 근데 여기선 리턴값이 flag.html이 아니라 step2.html 이라서 뭔 의미가 있나 싶다. prev_step_num에 저장되는 입력값이 step2_num과 일치하고 param과 param2에 저장되는 입력값이 각각 pooost, requeeest이면 ..