일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- los_giant
- los 8번
- los 13번
- los_troll
- los bugbear
- los darkknight
- los dragon
- los 17번
- los 3번
- los 12번
- los 16번
- lord of sql injcetion
- los succubus
- los 10번
- los orc
- los goblin
- los 4번
- los_15번
- los_assassin
- los zombie_assassin
- los 9번
- los 1번
- los skeleton
- los 18번
- los_vampire
- los 14번
- los gremlin
- los 20번
- los nightmare
- lord of sql injection
- Today
- Total
목록lord of sql injection (3)
paperHun

los 4번을 풀어보자. 먼가 이전과는 다른게 생긴거 같다. 조건문이 더 추가 된거 같다. 내가 입력한 pw 값이 맞는지 검사 해보는거 같다. 따라서 여기서는 pw값을 스킵하는 이전의 꼼수를 쓸수 없게 된거같다. 이전과는 다르게 간단하게 문제를 풀수 없을거 같다. 이번 문제를 풀기 위해서는 pw를 하나 하나 맞추어 보는수 밖에 없을꺼 같다. pw 전체를 맞추기에는 시간이 오래 걸릴꺼 같은데, 이때 substr함수를 사용하게 되면 획기적으로 시간을 줄일수 있다. 예를 들어 substr(pw,1,1)을 쓰게 된다면 pw중 1번째 글자부터 1개를 잘라낸다. 이 점을 이용하여 pw를 한자리 한자리 대입하여서 pw를 완성 하면된다. pw의 길이는 엄청 길지는 않을테니 url안에 length()함수를 사용하여 비교..

los 3번을 풀어보겠다. 이전과는 다르게 id가 guest기 때문에 id가 guest를 찾는 쿼리문이 거짓이 되어야 한다. 쿼리문을 거짓으로 만드는것은 쉽다. 여러가지 방법이 있지만 나는 no에 아무 숫자를 넣어서 거짓으로 만들어주었다. 쿼리문 뒤에 or 을 붙혀주고 id가 admin이기만 하면 또 풀릴꺼 같다. 이상한 경고문이 떴다. 코드를 잘보니 preg_match로 '를 걸러내고 있었다. 따라서 우리는 직접 id='admin'을 쳐서 문제를 해결 할수 없게 되었다. ''없이 string 문을 쓰는법은 간단하다. 아스키 문자들을 다시 char형으로 변환시켜 주면 된다! char 함수를 쓰고 admin의 각각의 아스키 숫자를 넣어주어서 해결하였다.

los 1번을 풀어보겠다. 먼저 코드를 보자면, 가장 먼저 위에 있는 query문이 눈에 띈다. query 문이란 데이터 베이스에 있는 정보를 요청하는 것인데, select id from prob_gremlin에서 id는 쿼리문이 요청하는 정보이고, prob_gremlin은 id가 담겨있는 데이터 베이스를 의미한다. 뒤에 있는 where id='' and pw=''는 쿼리문이 가져오려는 id의 조건문이다. 이제 query문이 무엇인지 알았으니 los_gremlin의 해결조건을 보자, solve("gremlin")이라는 함수가 보이니 result['id']가 참이되면 해결 되는거 같다. 보통 id값에 admin이 있기 때문에 id='admin'을 해주면 풀리긴 한다. 여기서 #은 뒤에 있는 ' and pw..