Network 51

[LOS_18]nightmare

이번문제는 제한 되는 부분 : strlen($_GET[pw]) > 6) 으로 길이제한 걸려있다. get 받는 파라미터 : pw 해결해야 되는 부분 : 결과에 id가 있으면 풀리는 간단한 문제이다. 진짜 몇시간 동안 이것저것 많이 고민해 본 문제이다. 풀리는건 간단했으나 이것을 생각해 내기가 정말 어려웠다. (6자 개헬) ?pw=')1;%00 이렇게 입력했을때 6자가 넘는데 되길래 그러면 ;%00 이라는 주석 우회가 먹히는듯 해보였다. 일단 주석우회를 위해 ;%00 를 이용하고 이것저것을 해보았다. 항상 참으로되는 식으로 만들다가 비교연산을 이용해서 참값을 낼 수 있다는 것을 알았다. '

Network/LOS 2019.08.30

[LOS_17]succubus

이번문제는 필터링 되는 부분 : preg_match 로 '(single quote)를 필터 get 받는 파라미터 : id, pw 해결해야 되는 부분 : 결과에 id가 있으면 풀리는 간단한 문제이다. 생각을 좀 해보면 쉬운 문제이다. \는 필터가 안되어있다. 그렇다면 \를 통해 id에 있는 싱글쿼터를 문자열 처리해 준다. 그러면 id='~~~pw=' 까지가 다 문자열 처리가 된다 그런뒤에 "(double quote)를 이용해서 참값을 만들어 주면 된다. ?id=\&&pw=|| "1"="1" %23\ 클리어!

Network/LOS 2019.08.30

[LOS_16]zombie_assassin

이번문제는 필터링 되는 부분 : @ereg 로 '(single quote)를 필터 get 받는 파라미터 : id, pw 해결해야 되는 부분 : 결과에 id가 있으면 풀리는 간단한 문제이다. @ereg 함수는 취약한걸로 저번에 학습했다. %00 (null)을 입력하면 해당 정보를 제대로 처리 못하는 경우가 있다. ?id=1&&pw=1%00'||'1'='1' %23 %00 (null)로 @ereg함수를 무력화 시켜주고 참이 되도록 해서 해결 하였다. 클리어!

Network/LOS 2019.08.30

[LOS_15]assassin

이번 문제에서는 필터링 되는 부분 : '(single quote) get 받는 파라미터 : pw 해결해야 되는 부분 : id 파라미터가 'admin' 일 경우 싱글쿼터를 닫아줘야 한다 안그러면 다 문자열 처리가 되어버린다. ?pw=1 || id like 0x2761646d696e27 %23 싱글쿼터를 우회 하려고 %26apos; (혼합된 URL/HTML 인코딩) 을 써서 해보았다. ?pw=1%26apos; || id="admin" %23 싱글쿼터로 보이기만 할 뿐 싱글쿼터로 들어가진 않았다. LIKE 함수에 생각해 보다가 %기호로 접근해 보았다. ?pw=%0% import requests headers = {"cookie": 'PHPSESSID=[Your Session ID]'} # 자신의 쿠키값 url..

Network/LOS 2019.08.28

[LOS_14]giant

문제를 보니 저번과는 조금 다르게 출제가 되고있다. 일단 select id 가 아니라 1234이다 필터링을 보니 shit을 get방식으로 받는데 길이가 1을 넘어가면 안되고 \n, \r, \t 가 필터링이 되어있다.(공백을 만드는 것을 방지) where절 뒤에 get 으로 받는 것이 아닌 from절 뒤에 get값을 넘겨주고 결과값도 1234가 나와야 풀리는 문제이다. 예상 풀이는 길이를 우회하고 정상적인 테이블인 prob_giant와 %23(#) 을 같이 넘겨주어 뒤에 불필요한 것들을 주석처리 해주면 될 것 같다. 하지만 풀이는 간단했다. 단순히 공백을 우회해주면 되는 문제였다. 알아보니 대체 값으로는 위와 같고 저중 다른 것들은 필터링이 되어 %0b 와 %0c로 해결이 되었다. 클리어!

Network/LOS 2019.08.28

[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