본문 바로가기
해킹 공부/웹해킹

SQL INJECTION

by zzzmilky 2020. 9. 22.

작년초 내가 처음 쿠씨씨 지원할때에, 사실은 보안 공부를 하고 싶다고 했었다,,ㅎㅎㅎ

1학년 1학기때에 그래서 정보보안 스터디가 열렸는데 스터디원은 세명이었고 파토가 났다...ㅎ

그래서 이번학기에 정보보호 수업 듣는김에 워게임 사이트에서 50 100 150점 정도 되는 배점 낮은 문제들 몇개 풀어보기 시작했다!


 

 

18번 문제 배점 100점짜리..

 

 

SQL INJECTION문제라고 떡하니 적혀있다. 

하지만 나는 SQL INJECTION이 뭔지 모른다..ㅎ

view-source를 눌러서 index.php를 살펴본다.

input에 넣는 값이 no로 들어간다!

 

 

index.php

 

 

php 문법을 잘 몰라서 preg_match를 찾아봤다.

해당 사이트를 참고했다. www.tcpschool.com/php/php_regularExpression_concept

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

if(preg_match("/ |\/|\(|\)|\||&|select|from|0x/i",$_GET['no'])) exit("no hack"); 

위 코드는 플래그가 i여서 대소문자를 구분하지 않고 공백문자나 from select등등을 두 번째 인수로 전달받은 문자열(no)에서 검색한다. 만약에 패턴이 문자열에 존재한다면 exit하면서 result는 no hack가 된다.

 

 

 

FROM을 입력시 no hack라고 뜬다.

 

 

 

 

 

 

 

m.blog.naver.com/PostView.nhn?blogId=diceworld&logNo=220292127761&proxyReferer=https:%2F%2Fwww.google.com%2F

mysqli_query에 대한 설명이다. 위 query를 해석하면 id='guest'이고 no=$_GET[no]일때의 id를 select한다.

 

PHP MySQL 쿼리 실행하기(mysqli_query)

- PHP mysqli_query 란? mysqli_query 함수는 mysqli_connect 를 통해 연결된 객체를 이용하여 MySQ...

blog.naver.com

 

 

 

이때 주석처리된 admin의 no가 2임이 주어져있다. 근데 query에 조건에는 guest가 id일때 이므로 guest의 no를 구해야한다. 그냥 1이라고 추측해보았다.

 

 

 

 

1을 입력하면 hi-guest라고 뜬다. 맞았다! 그렇다면 "query에 id가 guest로 고정돼있는데 admin으로 어떻게 바꾸는는가?" 이게 문제였는데, 앞의 값을 거짓을 주고 or로 참값을 주는 방식로 해결가능했다. 즉, "select id from chall18 where id='guest' and no=거짓 or 참값"을 하게 되면, and가 or보다 우선순위이기 때문에 id='guest' and no=거짓 문장과 문장(실행하려는 부분)으로 이루어져있다고 볼 수 있다. (전형적인 sql injection의 방법이라고 한다) admin을 의미하는 no=2을 or뒤에 적어주면 된다.

그래서 입력에는 (1아닌 임의의 숫자) or no=2 를 넣으면 된다. 

 

근데 앞서 설명한 preg_match 부분에 의해 입력에 공백이 들어가면 no hack라고 뜬다. 그래서 나는 input을 textarea로 바꾼다음에 엔터키를 쳐서 입력을 했다. 

 

 

 

 

텍스트에리아에 111엔터or엔터no=2 라고 제출하니 hi admin과 함께 문제가 solved 되었다고 한다.

'해킹 공부 > 웹해킹' 카테고리의 다른 글

포트포워딩(port forwarding)  (0) 2020.10.02
SMTP/ Mail header injection  (0) 2020.10.01
LFI 취약점, php wrapper  (0) 2020.09.30
쿠키 변조, encoding  (0) 2020.09.29
CR-LF INJECTION  (0) 2020.09.23

댓글