Network/LOS 22

[LOS_22]dark_eyes

이번문제는 필터링 되는 부분 : col, if, case, when, sleep, benchmark get 받는 파라미터 : pw 해결해야 되는 부분 : mysql 에러가 뜨면 종료하는데 정상적인 값으로 알아내야하고, error based blind sql injection을 통해 정확한 pw 값을 알아내야한다. 이번에는 앞에서 썼던 if 문이 필터링이 되어있다. error based blind sql injection우회 기법은 다음과 같다. 조건문 사용 : ... 1 and if($tg,1,(select 1 union select 2)) order by / group by : ... 1 order by (select 1 from (select 1 union select 2)m where $tg=1) ..

Network/LOS 2019.09.05

[LOS_21]iron_golem

이번문제는 필터링 되는 부분 : sleep , benchmark get 받는 파라미터 : pw 해결해야 되는 부분 : mysql 에러가 뜨면 종료하는데 정상적인 값으로 알아내야하고, blind sql injection을 통해 정확한 pw 값을 알아내야한다. 참값을 증명해주는 부분이 없다. 문법이 에러가 나면 이런식으로 보여주는 식이다. 문법에러가 아닌 거짓값일때는 정상값으로 흘러가 구별하기가 쉽지 않다. 그렇다면 처음에 생각했던 blind sql injection 공격이 아닌 error based sql injection 기법으로 가야겠다. 왜냐하면 나에게 검증할 수 있는 부분은 에러가 전부 이기 때문! 보통 if문으로 공격을 많이 한다. mysql에서의 if문은 if(조건, 참, 거짓) 으로 나타낸다...

Network/LOS 2019.09.05

[LOS_20]dragon

이번문제는 필터링 되는 부분 : 없음 (기본빼고) get 받는 파라미터 : pw 해결해야 되는 부분 : 주석처리가 되어있는 것을 무효화 시키고 pw 파라미터에서 id admin으로 결과값 내기! 보면 한줄 주석처리가 되어있다. 그렇다면 개행처리를 해주어서 풀어주면 될것같다. ?pw=%0a and 0 or id='admin 그냥 개행값 \n 은 먹히지 않는다. 그래서 우회해서 %0a 를 이용하고 id='guest and 0 을 통해 무효로 처리해주고 뒤에 or id='admin 처리를 해주어 id = 'admin'에 해당하게 해주었다. 클리어!

Network/LOS 2019.08.30

[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