본문 바로가기

Web19

PHP Mysql 게시판 만들기 - 1 DB설정 (내가 지정한 DB명은 20210318, table명은 board 이다.) idx에 AUTO_INCREMENT를 준 이유는 자동으로 번호를 증가시키기 위함이다. index.php 코드이다. 보통 메인 페이지를 index.php 혹은 index.html로 설정하는데, 나중에 로그인/회원가입 구현 페이지도 작성할 것이라면 해당 페이지는 main.php 정도로 작성해주는게 편하다. (로그인 페이지를 index.php로 구현하기 때문) 자유 게시판 No. 제목 작성자 작성일 //위에서 담아둔 result 값을 row배열에 넣는다. //나중에 작성할 view.php는 각각의 게시글의 번호를 받아와서 디테일을 보여주는 페이지다. 배열에 담은 페이지넘버(idx)로 연결할 수 있는 태그를 작성해준다. //게시.. 2021. 3. 25.
Blind SQL Injection Blind SQL Injection을 정리하기 이전에, 알고가면 좋은 개념과 함수에 대해 먼저 정리한다. 이 공격기법은 일반적으로 ' or 1=1-- 와 같은 공격패턴을 사용하는 인증우회(Auth Bypass)기법의 상위 단계라고 할 수 있다. 1) substr substr 함수는 문자열과 자를 범위를 파라미터로 받아서 해당 부분의 문자열을 리턴해준다. 예를 들어, USERS 테이블에 id와 pw컬럼이 존재하고 id는 jungwoo, pw는 nct127 인 행이 존재할 때 substr((SELECT pw FROM USERS WHERE id='jungwoo'),2,2) 쿼리문을 DB에 보내게 되면 id가 jungwoo인 유저의 pw 컬럼을 조회하라는 명령으로 nct127이 뽑히게 된다. 그 후 ‘nct12.. 2020. 12. 30.
Los - orc orc를 풀기 전, 알아두면 좋은 개념 및 함수 Blind SQL Injection Blind SQL Injection을 정리하기 이전에, 알고가면 좋은 개념과 함수에 대해 먼저 정리한다. 이 공격기법은 일반적으로 ' or 1=1-- 와 같은 공격패턴을 사용하는 인증우회(Auth Bypass)기법의 상위 단계라고 lyk00331.tistory.com pw가 참이어도, id가 admin인 계정과 비교하여 일치할 때 Flag가 나오기 때문에 정확한 pw를 알아야 한다. pw길이 구하기 이 문제는 db에 존재하는 admin 계정의 pw와 우리가 입력할 pw가 일치해야 풀리도록 만들어졌다. 그래서 pw 길이를 일단 알아야 하고, 그 후에 substring 함수로 정확한 pw를 구할 것이다. 주어진 쿼리에서 우리.. 2020. 12. 29.
Los - goblin id가 admin이면 풀린다. 그러나 id에는 guest 값이 고정되어있고, no 값만 받게끔 되어있다. id를 admin으로 만들기 no에는 정수형 값을 받는다. 아무런 값(숫자)을 넣은 후, id 값을 이어서 넣어줄 수 있다. 새로 만들어준 id 값은 파라미터로 보면 no 영역에 입력되기 때문에, ', ",` 등 따옴표가 필터링되어있어서(6번째 줄) 문자열로 인식시킬 수 없다. 우회를 위해 주석처리 #을 %23으로 나타낸 것처럼, '도 %27로 입력해보았으나, 마찬가지로 필터링되어있어서 불가능했다. 값을 넘기기 위해서는 해당 값이 문자열이라는 것을 알릴 수 있는 다른 방법이 필요하다. 시행착오 1 더보기 처음에는 concat() 함수를 사용해서 값을 전달해줄 수 있나 해봤지만, 안 됐다. 시행착오 2.. 2020. 12. 5.
Los - cobolt 쿼리문이 실행되었을 때, id가 admin인 값이 존재한다면 문제가 풀린다는 것을 알 수 있다. id를 admin으로 만들기 이 문제는 pw에 md5로 암호화되어있기 때문에, 앞서 풀었던 gremlin과 같이 pw 입력 전에 주석처리로 pw를 무력화 해주어야 한다. URL은 영어나 숫자 등 몇몇 문자를 제외하고는 16진수 값으로 인코딩하기 때문에, #을 입력하면 인식하지 못한다. 따라서 URL 인코딩 코드 값인 %23을 입력하면 주석처리가 가능해진다. 쿼리 id=admin' 를 입력한 후, %23(#)로 주석처리를 해서 pw를 무력화했다. DB가 서버에 변조된 쿼리 결과를 전송하고, 변조된 페이지 내에 DB 정보를 전송하여 COBOLT Clear! 라는 문장이 나타나며 문제가 풀린다. 2020. 12. 4.
Los - gremlin php 코드를 보면, 쿼리문이 실행되었을 때, id의 값이 존재한다면 문제가 풀린다는 것을 알 수 있다. 이 문제를 푸는 방법은 크게 id 값을 변조하는 방법과, pw 값을 변조하는 방법으로 나뉜다. 1. id 값을 참으로 만들어 해결 이 방법은 단순히 참으로만 만드는 것이 아닌, pw 입력 전에 주석처리시켜 pw를 무력화 해주는 것이 포인트이다. 이때, URL은 영어나 숫자 등 몇몇 문자를 제외하고는 16진수 값으로 인코딩하기 때문에, #을 입력하면 인식하지 못한다. 따라서 URL 인코딩 코드 값인 %23을 넣어줌으로써 주석처리가 가능해진다. or 1=1 구문을 넣어 id를 참으로 만든 후, %23을 입력해서 pw를 무력화시켜줬다. DB가 서버에 변조된 쿼리 결과를 전송하고, 변조된 페이지 내에 DB .. 2020. 7. 15.
SQL Injection SQL Injection 공격이란? : 파라미터에 구문을 넣어 쿼리가 동작되는 공격기법 파라미터란? : URL에서 동적으로 결과를 생성하는 어플리케이션에 전달하는 값 웹 어플리케이션의 뒷단에 있는 DB에 질의(쿼리)하는 과정 사이에 일반적인 값 외에 내용을 변조하는 악의적인 의도를 갖는 구문을 함께 삽입하여 공격자가 원하는 SQL 쿼리문을 실행한다. 이런 과정을 통해 불법 로그인을 하거나, DB 데이터를 열람하거나, 시스템 명령을 하는 등등의 비정상적인 DB 접근을 시도하는 것이고, 이것이 대표적인 웹 해킹 기법인 SQL Injection이다. SQL Injection 로그인 인증 우회 정상적인 로그인 인증 과정 클라이언트가 웹 서버에게 다음과 같은 로그인 정보를 제공한다. 서버는 해당 정보가 DB에 존.. 2020. 7. 14.