https://los.rubiya.kr/gate.php <- 여기서 푸실 수 있습니다!
LOS란?
이 LOS(Lord Of SQLInjection)은 SQLInjection를 실습할 수 있는 웹 해킹 실습 사이트입니다.
SQL Injection에 관한 건 [해킹/웹 해킹] - SQL Injection 이 글을 읽어주세요~ㅎ
[해킹/웹 해킹] - [LOS] 2번 cobolt write up <- 2번 문제
풀이 과정

3번 문제를 보니 전과는 조금 달라 보이네요!
$query = "select id from prob_goblin where id='guest' and no={$_GET[no]}";
쿼리문을 보니 id값이 guest로 고정되어 있고 사용자가 입력하는 부분은 no= 이 부분 같습니다. 그리고~
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
if($result['id'] == 'admin') solve("goblin");
이 부분이 해결하는 부분인데 전 문제와 비슷하네요? id값이 admin이 되면 끝인 거 같습니다! 그렇다면 전과 똑같은 방법으로 입력해보도록 하겠습니다.
no=id=admin%20%23 이런 식으로 입력했더니

이런 식으로 특수문자가 검출되는 것 같습니다.
if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~");
그렇다면 no값에 기본적인 1이라는 값을 넣어볼까요?

게스트라고 인사해주세요... 우리는 admin이 되고 싶으니 다른 값을 넣어보겠습니다. 2, 3, 4 넣어보겠습니다.

아무것도 안 뜨네요? 거짓인 것 같네요! 그렇다면 아래와 같이 적어주겠습니다.
select id from prob_goblin where id='guest' and no=23 or id='admin'
ㄴ no에 거짓 값을 넣어서 거짓으로 만들어 주고 or로 id를 admin으로 만들어 주었습니다.
앗 하지만 위에서 시도했던 거처럼 특수문자는 막혀있습니다. 그렇다면 어떻게 해야 할까요?
바로 아스키코드를 사용하는 것입니다. 사용해서 다시 적어볼까요?
select id from prob_goblin where id='guest' and no=23 or id=char(97, 100, 109, 105, 110)
ㄴ 앞의 설명과 같이 일부러 거짓을 만들어 주고 id값을 admin으로 바꿔주는 것입니다.

짜란 이렇게 해결하였습니다!! 수고하셨습니다~
+추가 팁
혹시 아스키코드표를 보면서 일일이 베끼셨나요? 코딩을 통해서 얻어 낼 수도 있겠지만 아스키코드로 바꿔주는 사이트들이 있습니다. 예를 들면 https://www.easycalculation.com/ascii-hex.php 이런 사이트에서 쉽게 아스키코드를 얻어낼 수 있습니다.
'해킹 > 웹해킹' 카테고리의 다른 글
[소전] 모의해킹 (1) | 2023.01.04 |
---|---|
[LOS] 2번 cobolt write up (0) | 2021.06.06 |
정규표현식 / 주로 사용하는 정규표현식 (0) | 2021.06.06 |
[LOS] 1번 gremlin write up (0) | 2021.06.06 |
SQL Injection (0) | 2021.06.03 |
https://los.rubiya.kr/gate.php <- 여기서 푸실 수 있습니다!
LOS란?
이 LOS(Lord Of SQLInjection)은 SQLInjection를 실습할 수 있는 웹 해킹 실습 사이트입니다.
SQL Injection에 관한 건 [해킹/웹 해킹] - SQL Injection 이 글을 읽어주세요~ㅎ
[해킹/웹 해킹] - [LOS] 2번 cobolt write up <- 2번 문제
풀이 과정

3번 문제를 보니 전과는 조금 달라 보이네요!
$query = "select id from prob_goblin where id='guest' and no={$_GET[no]}";
쿼리문을 보니 id값이 guest로 고정되어 있고 사용자가 입력하는 부분은 no= 이 부분 같습니다. 그리고~
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
if($result['id'] == 'admin') solve("goblin");
이 부분이 해결하는 부분인데 전 문제와 비슷하네요? id값이 admin이 되면 끝인 거 같습니다! 그렇다면 전과 똑같은 방법으로 입력해보도록 하겠습니다.
no=id=admin%20%23 이런 식으로 입력했더니

이런 식으로 특수문자가 검출되는 것 같습니다.
if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~");
그렇다면 no값에 기본적인 1이라는 값을 넣어볼까요?

게스트라고 인사해주세요... 우리는 admin이 되고 싶으니 다른 값을 넣어보겠습니다. 2, 3, 4 넣어보겠습니다.

아무것도 안 뜨네요? 거짓인 것 같네요! 그렇다면 아래와 같이 적어주겠습니다.
select id from prob_goblin where id='guest' and no=23 or id='admin'
ㄴ no에 거짓 값을 넣어서 거짓으로 만들어 주고 or로 id를 admin으로 만들어 주었습니다.
앗 하지만 위에서 시도했던 거처럼 특수문자는 막혀있습니다. 그렇다면 어떻게 해야 할까요?
바로 아스키코드를 사용하는 것입니다. 사용해서 다시 적어볼까요?
select id from prob_goblin where id='guest' and no=23 or id=char(97, 100, 109, 105, 110)
ㄴ 앞의 설명과 같이 일부러 거짓을 만들어 주고 id값을 admin으로 바꿔주는 것입니다.

짜란 이렇게 해결하였습니다!! 수고하셨습니다~
+추가 팁
혹시 아스키코드표를 보면서 일일이 베끼셨나요? 코딩을 통해서 얻어 낼 수도 있겠지만 아스키코드로 바꿔주는 사이트들이 있습니다. 예를 들면 https://www.easycalculation.com/ascii-hex.php 이런 사이트에서 쉽게 아스키코드를 얻어낼 수 있습니다.
'해킹 > 웹해킹' 카테고리의 다른 글
[소전] 모의해킹 (1) | 2023.01.04 |
---|---|
[LOS] 2번 cobolt write up (0) | 2021.06.06 |
정규표현식 / 주로 사용하는 정규표현식 (0) | 2021.06.06 |
[LOS] 1번 gremlin write up (0) | 2021.06.06 |
SQL Injection (0) | 2021.06.03 |