Network/LOS 22

[LOS_12]darkknight

연달아 푸는 blind sql injection 문제 ' , substr , ascii , = 이렇게 4개가 필터링이 되어있다. 문자열을 처리해줘야 참값을 알아낼텐데 고민하다 URL인코딩도 안되어서 어떻게 하지 하다가 전에 풀던 문제중 hex값으로 바꾸면 문제가 풀릴것같았다. 우선 admin의 no값을 알아냈다. ?pw=1 && no=0 || no LIKE 0x32 and id LIKE 0x61646D696E 사실 no는 그냥 한거고 이제 pw의 length를 구하고 난뒤(구해야하나 어짜피 8길이일듯하다) pw를 맞추면 된다. 길이 체크 완료. 이제 한글자 한글자씩 찾아줘야 하는데 ascii() 함수가 필터링 되어있기에 우회해주는 ord()함수를 이용해 준다. 정리해주면 다음과 같다. 이를 이용해 파라미..

Network/LOS 2019.08.27

[LOS_11]golem

이번 문제를 분석해보니 or , and , substr( , = 이렇게 필터링이 걸려있고 get방식으로 정확하게 admin의 pw를 맞추는 blind sql injection 문제이다. 먼저 Hello [id] 의 부분에 admin을 넣어서 나오게 하고 싶은데 그게 쉽지가 않다. 바로 = 를 우회하는게 쉽지가 않은데 이리저리 찾아보다가 URL인코딩 방식도 안먹히기에 다른 방법을 검색해보다가 LIKE 를 이용해 보면 쉽게 할 수 있었다. LIKE문은 예를 들어 select id from iamtable where id LIKE 'admin' iamtable이라는 테이블에서 id칼럼에서 'admin'인 id값을 select하는 것이다. 그래서 넣어본 결과 ?pw=1' || id LIKE 'admin'%23 ..

Network/LOS 2019.08.27

[LOS_8]troll

이번 문제는 어떻게 공격하면 좋을까 먼저 코드분석부터 하자면 쿼리문의 결과에서 id가 admin이면 solve가 된다. 그리고 ereg()함수에서 get으로 받아오는 id값을 필터링해준다. 하지만 PHP 5.3+ 부터 쓰이지 않는다고 한다. 그 이유는 무엇일까? 첫 바이트에 NULL을 넣으면 필터링을 우회할 수 있기 때문이다. 시도해 보았다. ?id=%00admin 보아하니 널값이 입력되었는데 검증하는 부분에서 null 을 인식해서 그런것 같다. 그렇다면 ereg의 또다른 특징인 대소 문자를 구분하는 것을 이용해 보고자 한다. ?id=Admin 클리어! 비교적 간단한 troll 문제였다.

Network/LOS 2019.08.17

[LOS_7]orge

이 문제는 pw를 get으로 받는데 정확하게 pw를 맞추라는 문제이고 or, and가 제한이 걸려있는 blind sql injection문제이다. 첫번째 조건문을 보아 쿼리문을 통해 참이면 "Hello [id]"가 출력이 된다. 조건 참일 경우를 이용하여 길이를 하나하나 찾아 주었고 그냥 입력하면 정상적으로 들어가지 않아 # 을 넣어 뒤에를 주석처리를 해주었다.(URL인코딩) and,or는 &&, ||로 대체해서 쓸수있기에 이것을 이용해 랭스를 알아 보았다. (URL인코딩을 통해 우회를 해주었다.) || : %7c%7c && : %26%26 ?pw=1'%7c%7c id='admin' %26%26 length(pw)=8 %23 전 문제와 비슷하게 넣었는데 똑같은 8자리였다. ?pw=1'%7c%7c id='..

Network/LOS 2019.08.17

[LOS_4]orc

이 문제는 pw를 get으로 받는데 정확하게 pw를 맞추라는 문제이다. 이 문제에서 사용되는 addslashes() 함수는 ' , " , \ 등문자가 포함되어 있다면 그 앞에 \ 를 붙이는 함수이다. 이 함수를 사용하지 않으면 오류가 발생할수 있기 때문에 취약하다. 그리고 stripslashes() 함수는 addslashes() 함수와 짝을 이루어 사용되는 것으로 역할은 addslashes()함수 의 반대이다. 즉, 역슬래시(\)를 떼어내는 함수이다.

Network/LOS 2019.08.16

[LOS_3]goblin

이번 문제는 기본적으로 id에 guest가 들어있고 no를 get으로 받아 쿼리를 날리는 문제이다. 조건문에는 아이디가 admin으로 들어와야 풀리는 문제 goblin이다. no에 아무거나 입력하니 이와같이 뜬다. 난 어드민이고 싶은데! if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 게스트를 빠져나가서 아이디를 어드민으로 넣어주고 싶었지만... 보호기법이 작용한다. 음 다시 돌이켜보니 guest에 해당하는 no는 1이다. 그렇다면 admin에 해당하는건 다른 숫자이지 않을까? 하지만 다른 방법이 떠오르지 않는다. https://los.eagle-jump.org/goblin_5559aacf2617d21ebb6efe907b7dded8.php..

Network/LOS 2019.08.16