일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- bootstrap
- gitbash
- GIT
- 뷰
- NavBar
- 웹해킹
- 포렌식워게임
- 이진탐색트리
- 웹개발
- 워게임
- 써니나타스
- materialize
- 그래프
- mongoose
- MongoDB
- 자바기초
- nodeJS
- node
- CTF
- 자료구조
- node.js
- 웹해킹기초
- 자바문제풀이
- 포렌식
- 워게임추천
- Express
- 이진트리
- 웹기초
- wargame.kr
- 자바
- Today
- Total
목록Wargame/web (17)
보안 전공생의 공부
Hint 에서는 'Reading suninatas's Writing!^^'라고 써져있다. KeyFinding도 눈에 띈다. Writer가 suninatas인 3번 게시물에 들어가보았다. 밑에 쿼리문은 이러하다. select szPwd from T_Web13 where nldx='3' and szPwd='"&pwd&"' → T_Web13에서 nldx가 3이고, szPwd가 &pwd&인 컬럼의 szPwd을 검색해라. SQL Injection 기법을 이용해 비밀번호를 입력해야 할 것 같다. 비밀번호에 대한 정보가 아무것도 없으니 말이다. noirstar.tistory.com/264 SQL Injection 이란? (SQL 삽입 공격) 1. SQL Injection 1.1 개요 SQL Injection SQ..
당연히 안되겠지만 admin/admin을 입력해보았다. 역시나 안됐다 ㅎㅎ 소스코드를 한번 봐보았다. 스크립트문을 보니 id와 pw가 같으면 안된다. 밑에 주석으로 힌트가 주어졌다. 힌트는 스크립트문과 다르게 id와 pw가 같다고 한다. 그렇다면 chk_form()함수를 수정해야한다 ! 특히 if문을 지워야할 것 같다. 개발자도구 콘솔로 스크립트를 수정할려고 한다. 이미 작성된 페이지 코드는 개발자도구 콘솔을 통해 수정할 수 있기 때문이다 :) 원래 스크립트 문에서 변수 id, pw를 선언, 초기화한것과 else문 안의 document.web02.submit(); 만 함수 안에 있도록 수정해주었다. 다시 맨 처음처럼 admin/admin을 입력해주면 Authkey가 나타난다 !!
▶ PNG : PNG 시그니처(8개의 바이트)와 일련의 청크들로 구성되어있다. ▶ APNG : PNG 형식의 확장기능으로, 애니메이션으로 된 이미지에 대한 지원을 추가로 하는 형식이라고 한다. 청크 하나는 4개의 부분으로 이루어져있다. 길이(4바이트), 청크 유형(4바이트),청크데이터(길이 바이트), CRC(4바이트) 길이 (4 바이트) 청크 유형 (4 바이트) 청크 데이터 (길이 바이트) CRC (4 바이트) 최소한의 PNG인 경우 → IHDR(그림헤더) 청크, IDAT(그림데이터) 청크, IEND(그림 끝부분) 청크가 필요하다. 89 50 4E 47 0D 0A 1A 0A PNG 시그너처 IHDR 그림 헤더 IDAT 그림 데이터 IEND 그림 끝부분 3개의 각각의 PNG 파일들로부터 animat..
플래그를 획득해야한다. 링크에 들어가 문제를 확인해보았다. GET방식으로 guess 값을 입력해 URL에 넘겨준다. 만약 변수 guess가 존재한다면, secret.txt를 file_get_contents함수를 통해 문자열로 읽어주어 이를 변수 secretcode로 정의한다. (trim은 문자열의 앞뒤에 생기는 불필요한 공백을 없애주는 함수이다) === 는 처음보는 연산자여서 검색을 해보았더니, 두 변수의 값뿐만 아니라 그 유형까지도 일치하는지 판단하는 것이였다. (출처 : https://velog.io/@filoscoder/-%EC%99%80-%EC%9D%98-%EC%B0%A8%EC%9D%B4-oak1091tes ) 변수 guess와 secrecode(secret.txt를 문자열로 변..
이전 문제에서 봤던 preg_match 함수가 있다 ! 이번에는 pw에 or이나 and를 쓰지 말라고 한다 ! pw값은 입력받아야하지만 pw값과 무관하게 id가 admin이면 문제가 풀린다 주소 뒤에 ?pw=' or id='admin 이나 ?pw='||id='admin 을 입력하면 되는데 pw에 or을 사용하면 안되므로 후자를 입력하면 된다. 완전 스무스하게 풀리는 편안함 .. 안 풀리면 내가 너무 한심하고, 풀리면 문제가 너무 쉬운 거 같고 ..ㅋㅋ
preg_match라는 함수가 낯설다. preg_match('/대조할 문자/', '입력한 문자', $matches); 구조이며 - 대조할 문자 : 찾거나 필터링하고 싶은 문자열 ( 특수문자일때는 앞에 \ 붙이기) - 입력한 문자 : 사용자가 어떤방식이든 입력 받아 담은 특정 변수 - $matches : 대조할 문자 == 입력한 문자 일때 그 문자는 배열형태로 $matches에 저장 ( 출처 : https://flash-ctf.tistory.com/43 ) 이를 활용해 해석해보면 pw에 공백이 존재하면 안된다. (이때 / 뒤에 붙은 i는 대소문자를 구분하지 않는다는 의미이다.) 그리고 마지막에 있는 if문을 보면 pw와 무관하게 id가 admin 일 때 문제가 풀리는 것을 확인..
◆ Blind SQL Injection 서버에서 내부 오류 메시지를 외부에 공개되지 않도록 구성한 경우 Type 변환 오류 메시지를 사용한 Database구조 파악이 불가능 → substring(문자열, 시작위치, 길이) 문자열의 특정 문자열을 한 글자씩 찾아가는 Blind SQL Injection 공격 시도 Query 결과에 따른 서버의 참/거짓 반응을 통해 공격을 수행한다. (Target 사이트에서 참/거짓을 구분지을 수 있는 페이지가 존재해야함) 이를 통해 db명, 테이블명, 컬럼명 ID, PW 등을 알아낼 수 있다. (출처 : https://peemangit.tistory.com/151 ) id는 admin 이고 pw 파라미터 값을 입력받아야 한다. 그러나 db에 있는 pw에 대한 ..
start를 눌러주니 웬 게임창이 뜬다. 비행기가 형관선에 안 닿게 유의하면서 조종하여 점수가 31337점이 나와야 게임이 성공한다. javascript 구문을 우회하여 게임에 성공해야 되는 것 같다. 소스코드의 스크립트 구문은 도통 뭘 말하는 건지 알 수 없게 난독화되어 있다. ▶ 자바스크립트 난독화 자바스크립트는 클라이언트(Client)에서 실행되도록 하는 언어여서 사용자가 웹사이트에 접근하게 되면 해당 스크립트를 그대로 볼 수 있게 된다. 이를 방지하고자 적용하는 기법이다. (출처 : https://kkamikoon.tistory.com/165 ) 이 난독화 된 스크립트 구문을 해독해야 문제의 단서가 보일 것이다. 문제에서 난독화 수준은 문자열로 치환한 정도로, 이를 해독하는 사이트가 있다...