분류 전체보기

Java_Scanner 버퍼 비우기
Java에서 콘솔을 통해 값을 입력받아야 할 때, Scanner를 정말 많이 사용하게 된다. 스캐너의 경우, 일반적인 사용법은 입출력으로 나뉠 수 있는데, 1. Scanner sc = new Scanner(System.in); // 입력값 2. Scanner sc = new Scanner(System.out); // 내보내는 값 위처럼 스캐너 객체를 생성할 때 입력 값을 받도록 한다. 그런데 스캐너를 통해 입력을 받을 때, 변수의 자료형을 구분해주어야한다. Java에서는 특히나 자료형을 더 신경써주어야한다 ! 아래 예시를 봐보자. import java.util.Scanner; public class next2 { public static void main(String[] args) { Scanner sc..

Webhacking - challenge(old) 38번
문제를 들어가면 LOG INJECTION이라는 문구와 함께 로그인 버튼이 있다. INJECTION 삽입 문제인 것 같은데, 아직 감이 오지 않아 코드를 먼저 확인해 보았다. admin.php 파일을 확인해 봐야 한다. 로그뷰를 확인할 수 있다. admin을 입력해보고 login을 해보니 you are not admin이라는 문구와 함께 로그인이 안되는 것을 확인 할 수 있다. 인젝션을 해보고 나서 로그뷰를 확인해보니 값이 추가되었다. 이 문제를 해결하기 위해서는 CRLF Injection에 대해 알아야한다. https://www.hahwul.com/cullinan/crlf-injection/ CRLF Injection 🔍 Introduction CRLF Injection은 Carriage Return L..

Webhacking - challenge(old) 23번
문제 23번이다. 들어가면 우리가 풀어야할 미션이 뭔지 알려준다. 해당 스크립트 구문을 삽입하여 제출하면 되는 것 같다. 문장에서 어딘가 필터링이 걸리는 상황인 것 같은데, 값을 하나하나 넣어 확인해보았다. 우선 해당 문구를 넣어봤더니 no hack이라고 뜬다. 주소를 살펴보면 , alert, script 등은 필터링 되지 않았지만 ( ) 와 ; 가 필터링 된 것을 확인할 수 있다. 현재 문자열을 2개 이상 연결하면 필터링이 되는 상황으로, get 방식으로 code 변수에 값을 넣어 서버에 전달이 가능하게 하기 위해 null바이트 %00 를 전달해야한다. a%00l%00e%00r%00t(1); 해당 값을 주소에 입력해주었더니 문제를 해결하였다.

Webhacking - challenge(old) 55번
55번을 들어가니 초록색에 빨간 눈을 가진 젤리가 보인다. 시간이 좀 지나니 게임 오버라는 알림창이 뜬다. rank를 들어가봤다. rank가 쭈르륵 뜬 아래를 보면 query문이 있다. 3번째 컬럼에 flag 값이 담겨있는 것을 확인햇으니, flag가 담긴 컬럼명을 얻기 위해 limit 절과 procedure analyse() 함수를 사용해야한다. rank.php?score=1%20limit%202,1%20procedure%20analyse() 컬럼명은 p4ssw0rd_1123481321이다. score의 값을 1과 2로 한번씩 넣어 결과를 비교해 보며 , if(true,2,1)을 통해 확인해보았다. 그 다음에 코드를 통해 password의 길이와 전체 password를 알아보았다. (코드 출처 : ht..

Webhacking - challenge(old) 2번
웹해킹 challenge_old 2번 문제를 풀어보았다. 특별한 정보가 없어 소스코드를 확인하였다. 해당 주석문을 통해 단서를 얻을 수 있다. 첫번 째 주석문은 시간을 의미한다. 두번째 주석문은 admin.php가 존재함을 알려준다. admin.php로 이동해보니 비밀번호를 입력하는 창이 나오는데, SQL 문제라고 생각되어 'or 1=1--으로 값을 대입해봤지만 wrong password라고 나타났다. 일단 비밀번호에 대한 정보가 없기 때문에 시간 주석을 활용해봐야한다. 시간은 현재의 시간 값을 가리키고 있지만, 이를 해봄으로써 Blind SQL Injection이 적용될 수 있다고 생각 할 수 있다. 우선 DB내의 테이블 개수를 확인해야하기때문에 COUNT를 사용하였다. (select count(tab..

Webhacking - challenge(old) 27번
27번을 눌러 들어가보면 깔끔하게 되어있다. 바로 view-source를 눌러보았다. 해당 소스코드에서 php 부분만 살펴보았다. 특정 문자열들은 필터링 되어 있으며, 쿼리를 보낼 때 id가 guest로 고정되어 있다. 하지만 조건문을 확인하였을때, id가 admin일 경우만, 문제 해결이 된다고 한다. 각 유저 아이디의 no값을 알아내봤다. 각각 1과 2를 제출하였을 때, no = 1일 경우, guest인 것으로 확인 되었고, no = 2일 경우, query error 메세지가 보인다. no = 2가 admin 값의 no 값임을 예상해볼 수 있다. select id from challenge27_table where id='guest' and no=(0) or no = 2)")) or die("quer..