2021-06-06 · 1

3번 goblin write up

securitypwnable

이 글은 작성된 지 2년이 넘었어요. 내용이 오래됐을 수 있어요.


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 넣어보겠습니다.

!> ****](https://www.easycalculation.com/ascii-hex.php)

아무것도 안 뜨네요? 거짓인 것 같네요! 그렇다면 아래와 같이 적어주겠습니다. select id from prob_goblin where id='guest' and no=23 or id='admin' ㄴ no에 거짓 값을 넣어서 거짓으로 만들어 주고 or로 id를 admin으로 만들어 주었습니다. 앗 하지만 위에서 시도했던 거처럼 특수문자는 막혀있습니다. 그렇다면 어떻게 해야 할까요? 바로 아스키코드를 사용하는 것입니다. 사용해서 다시 적어볼까요? **select id from prob_goblin — ascii-hex.php 이런 사이트에서 쉽게 아스키코드를 얻어낼 수 있습니다.


원문: tistory — 2021-06-06 발행, 이 블로그로 이전됨.

댓글

댓글을 삭제할까요?

관련 글

3번 goblin write up · 나봄하랑