본문 바로가기
반응형

전체 글87

Lord of SQL Injection : Darknight[12] [Level 12. Darknight] Sol → ?pw=0b70ea1f 작은따옴표('), 등호(=), substr와 ascii를 사용하지 못하는데 admin의 pw를 정확히 맞추어야 한다. 그래서 우리는 다음 3가지 문제를 해결해야 한다. Q1) 작은따옴표(')와 등호(=)를 사용할 수 없는데 id = 'admin'을 어떻게 쓸까? Q2) substr를 사용할 수 없는데 substring(pw, n, 1)을 어떻게 쓸까? Q3) ascii를 사용할 수 없는데 ascii(substring(pw, n, 1)) > m을 어떻게 쓸까? A1) like와 char를 사용해서 작은따옴표 없이 비교하자. 아스키코드로 a ~ z는 97 ~ 122에 해당한다. 따라서 char(97)은 a에 해당한다. char(97) .. 2021. 12. 4.
Php로 웹 개발하기 : 게시판(14) - 파일 삭제 파일 삭제는 글 삭제와 같은 흐름으로 구현하되, SQL에 연결해서 row를 삭제하는 것이 아니라 특정 폴더에 있는 파일을 삭제하면 된다. 파일 삭제 기능을 구현할 file_delete.php 파일 하나를 만들어주고, 삭제 링크로 연결해준다. 이때, get 파라미터로 id를 넘겨준다. ① 파일 삭제 [read.php] 2021. 12. 3.
Php로 웹 개발하기 : 게시판(13) - 파일 확인 저번 포스팅에서는 파일을 업로드하는 기능을 구현했었다. 파일을 확인(View), 삭제(Delete), 다운로드(Download)하는 기능을 추가로 만들 것이다. 우선 파일 이름을 저장해놓아야 표시, 삭제, 다운로드할 때 사용할 수 있으므로 MySQL에 추가하자. ALTER table board add column `file` varchar(20); 이제 게시판에 글을 작성할 때, file을 업로드하면 파일 이름을 MySQL에 저장하고, file이 없으면 NULL을 저장하도록 코드를 추가해주자. [board_create.php] if($_FILES['upload_file'] != NULL){ $tmp_name = $_FILES['upload_file']['tmp_name']; $name = $_FILES[.. 2021. 12. 2.
Lord of SQL Injection : Skeleton[10] ~ Golem[11] [Level 10. Skeleton] Sol → ?pw=' or id = 'admin' %23 id가 admin이어야 단계를 Clear 할 수 있다. where 절은 and 조건으로 이어져있는데 하나가 이미 거짓이다. 그래서 참을 만들어주기 위해 or로 id = 'admin'을 넣고 #으로 뒤에 거짓 조건은 무시하게 만들었다. 쉽게 Clear 할 수 있었다. [Level 11. Golem] Sol → ?pw=77d6290b id admin의 패스워드를 맞추어야 하는데, or / and / substr(Blind SQL)을 모두 사용하지 못한다. 근데 이 문제도 7, 8단계와 마찬가지로 or는 ||, and는 &&, substring은 SUBSTRING를 사용해서 자동화 툴을 돌려주었다. 그런데 이 문제에.. 2021. 12. 1.
Php로 웹 개발하기 : 게시판(12) - 파일 업로드 게시판의 주요 기능 중 Create 부분에 파일을 업로드하고 이를 확인할 수 있는 기능을 추가해보자. ① 파일 업로드 제목과 내용 밑에 input type을 file로 설정해서 파일 업로드 구역을 하나 넣어준다. 그런데, 이미지를 올리고 나중에 이를 가져오려면 내 로컬과 MySQL 중 어느 곳에 이미지를 저장하는 것이 좋을까 고민하다가 일단 내 로컬에 저장하기로 했다. 파일을 업로드할 때 이미지 주소를 생성하고, 그 주소를 사용해서 이미지를 불러오도록 하기 위해 일반적인 HTML 문서에서는 업로드된 파일이 어떻게 표시되는지 확인해보았다. 파일을 하나 업로드했는데 이미지는 뜨지 않고 파일명만 떴다. form에 enctype="multipart/form-data"를 추가하고 input name을 (file로.. 2021. 11. 30.
Lord of SQL Injection : Troll[8] ~ Vampire[9] [Level 8. Troll] Sol → ?id=ADMIN admin을 치면 안 되지만 id가 admin 이어야 한다. 처음에는 admin을 16진법이나 Base64로 변환해서 입력해봤는데, clear 되지 않았다. 그러다가 MySQL은 대소문자를 구분하지 않으니 ADMIN으로 입력해보았다. 읭? Clear 되었다. [Level 9. Vampire] Sol → ?id=adadminmin 9단계 문제는 사용자의 입력값에서 admin을 없애는 작업이 들어가 있다. 하지만 id가 admin 이어야 한다. 그래서 id를 adadminmin으로 입력해서 admin이 없어져도 admin이 남도록 (adadminmin ← 이렇게) 손을 써주었다. 8단계와 9단계 모두 블랙리스트 기반 필터링을 우회하는 대표적인 방법에.. 2021. 11. 29.