전체 글 70

써니나타스 26번

빈도수 분석을 이용해 문제를 풀어야할 것 같다. 빈도수 분석이란 ? 암호학에서의 빈도분석이란 평문과 암호문에 사용되는 문자 또는 문자열의 출현빈도를 단서로 이용하는 암호해독법을 말한다. 문장의 빈도수를 파악해서 끼워맞추면서 문제를 풀 수는 있지만 quip quip 툴을 이용해서 해독해보았다. 그랬더니 kim yuna ~~가 출력되면서, 알아볼 수 있는 문장이 나왔다. kim yuna가 답인 것같아 입력해봤지만 틀렸다고 뜬다ㅠ 문제를 다시 보니 마지막에 '평문의 빈 글자와 문장 부호는 생략했다'라고 쓰여져 있는 것을 볼 수 있었다. (·̆⍛・̆) 그래서 kimyuna로 입력했더니 문제 해결 ~~!~~!!!~! >>quip quip 툴 https://quipqiup.com/ quipqiup - cryptoq..

FORENSICS/suninatas 2020.05.16

써니나타스 19번

이번에도 아래있는 숫자를 보고, 암호를 구하는 문제이다. 2진수로 되어있는 숫자들을 문자열로 변환해보았다. 이번에도 바로 Auth값이 나오지 않고, 암호화된 문자열이 출력되었다. NVCTFDV KF JLEZERKRJ REU KFURP ZJ R XFFU URP REU RLKYBVP ZJ GCRZUTKWZJMVIPYRIU 문자열 중간중간에 띄어쓰기가 있는 것으로 봐서, 카이사르 암호화를 한 것같다. (다른 base 64나 MD5, SHA 암호화 방법 등은 띄어쓰기까지 암호화를 하기 때문에) ▶ 카이사르 암호화란 ? 시저 암호라고도 불리는 암호학에서 다루는 간단한 치환암호의 일종이다. 카이사르 암호는 암호화하고자 하는 내용을 알파벳별로 일정한 거리만큼 밀어내, 다른 알파벳으로 치환하는 방식이다. 카이사르 암호..

FORENSICS/suninatas 2020.05.03

써니나타스 18번

아래 쓰여져있는 숫자를 보고 암호를 구하는 문제이다. 숫자는 아스키코드인 것같아 파이썬 코드를 이용해 문자열로 변환하였다. cipher = [86, 71, 57, 107, 89, 88, 107, 103, 97, 88, 77, 103, 89, 83, 66, 110, 98, 50, 57, 107, 73, 71, 82, 104, 101, 83, 52, 103, 86, 71, 104, 108, 73, 69, 70, 49, 100, 71, 104, 76, 90, 88, 107, 103, 97, 88, 77, 103, 86, 109, 86, 121, 101, 86, 90, 108, 99, 110, 108, 85, 98, 50, 53, 110, 86, 71, 57, 117, 90, 48, 100, 49, 99, 10..

FORENSICS/suninatas 2020.05.03

webhacking.kr 29번

첫 화면에 FLAG is in another table이라고 써있는 것을 보고 SQL인젝션 문제인가.. 생각을 해봤다. 공격시도할 수 있는 방법은 파일명을 이용하는 것밖에 없기 때문에 파일명을 조작해야한다. 파일을 업로드하는 것이기 때문에 insert문을 사용할 것이고, insert문의 칼럼 순서를 알아내야 한다. -> insert문 : insert into 테이블명 (칼럼1, 칼럼2, 칼럼3) values (값1, 값2, 값3) 이것저것 테스트해 본 결과 file, time, ip 순으로 되어있는 것을 알 수 있었다. 이제 FLAG값을 알아내야한다. FLAG값은 다른 테이블에 있다고 했으니 테이블명을 알아내야 하는데, 그 전에 ! 데이터베이스명을 먼저 알아야한다. 데이터베이스명 찾기..

webhacking.kr 35번

view-source 클릭 ! $_GET['phone']에 *, /, =, select, -, #, ;가 포함되어있으면 no hack을 출력한다. $_GET['id']는 5를 넘으면 안되고, admin을 입력할 수 없다. 입력된 $_GET['id']와 $_GET['phone']는 chall35테이블의 id와 phone칼럼에 추가되고, $_SERVER['REMOTE_ADDR'](ip주소)는 ip칼럼에 추가된다. 이 때, id=admin이고 ip=내 ip주소인 데이터가 존재한다면 문제가 해결된다. $_GET['id']에는 admin을 직접 입력할 수 없다. 그러므로 insert문을 이용해 id가 admin이고, 내 ip주소를 갖는 데이터를 추가해주면 된다 ! phone=0),('admin','내 ip주소',..

webhacking.kr 60번

view-source 코드해석하기 ! file_get_contents() : 전체파일을 문자열로 읽어들이는 함수 unlink() : 파일을 삭제하는 함수로, 성공하면 true를 반환하고 실패하면 false를 반환 $_COOKIE['PHPSESSID']의 값이 숫자가 아니면 Access Denied가 출력된다. $_GET['mode']가 auth이고, ./readme/{$_SESSION['idx']}.txt 파일에 $_SESSION['idx']값이 들어있으면 파일이 삭제되고, 문제가 해결된다. $_GET['mode']가 auth이 아니라면, ./readme/{$_SESSION['idx']}.txt 파일에 $_SESSION['idx']를 입력하고, 파일을 닫는다.그리고 만약 ip가 127.0.0.1아니면, ..

webhacking.kr 53번

view-source 밖에 볼 게 없으니.., 코드를 해석해봐야겠다. $_GET['answer']이 hidden_table과 같으면 문제가 해결된다. $_GET['val']에는 select, by가 포함되어 있으면, no hack이 출력된다. 일단 hidden_table에 대해서 아는 정보가 없기 때문에 $_GET['val']을 이용해 테이블명을 알아내야한다. 여기서 알아둬야할 명령어 !! 테이블명을 알아낼 때, procedure analyse()를 사용하면 우리가 원하는 값을 찾을 수 있다. 위 사진에서 볼 수 있듯이 procedure analyse()를 통해 데이터베이스명, 테이블명, 칼럼명까지 알아낼 수 있다. 따라서, val=1 procedure analyse(); 를 입력해주면 hidden_ta..

webhacking.kr 49번

view-source 코드를 해석해보면, $_GET['lv']에 select, or, and, (, ), limit, 콤마(,), /, order, cash, 공백, tap키, 작은따옴표('), 큰따옴표(")가 포함되어 있으면 no hack을 출력한다. 그리고 select문의 결과가 admin이면 문제가 해결된다. 문제를 풀기위해서는 $_GET['lv']에 id=admin을 넣어줘야한다. lv : 1~4까지는 각 lv값에 일치하는 id가 있기 때문에 lv=0||id=admin 을 입력해주었다. (or 대신 ||를 이용) 그러나 no hack이 출력되었다.., admin을 입력해서 그런것같아 admin대신 0x61646D696E를 입력해주었다. -> lv=2||id=0x61646D696E 그랬더니 문제 해..

webhacking.kr 48번

뭘 해야될지 모르겠어서 일단 파일을 업로드해봤다. upload file을 누르면, 내가 업로드한 파일의 내용이 출력된다. 또, php코드가 실행되지 않는 것도 알 수 있었다. 파일을 Delete하면, 타임스탬프가 찍히는 것을 볼 수 있었다. (゚ペ)?... 어떻게 풀어야될지 모르겠어서 찾아보니 업로드한 파일이 삭제될 때, 'rm /upload/파일명' 명령어가 실행되고 file deleted 창이 뜨는 것이다. 그러므로 rm명령어 뒤에 우리가 원하는 명령어를 입력하면 된다. 명령어를 더 실행시키기 위해서는 세미콜론(;)을 이용해야 한다. 피들러를 이용해 업로드한 파일명을 바꿔줬다. 업로드한 후, Delete해주면 rm명령어 다음 ls명령어가 실행되어 FLAG값이 출력된다 ! FLAG{i_think_th..