Web Hacking/LoS 18

[Lord of SQL Injection] orge

id도 admin으로 만들어야 하고 비밀번호도 맞아야 한다. or랑 and는 필터링된다. pw=1' || id='admin 이것도 blind sql injection인가보다. 패스워드 길이를 알아내야 하는데 저번처럼 length(pw)=1 같은 방식으로 알아내보겠다. &가 GET방식으로 전달되지 않는다고 한다. 어쩐지 안되더라니... %26으로 변환해서 보내주었다. 참고로 #도 %23으로 바꿔줘야 한다. pw=3' || id='admin'%26%26length(pw)=8%23 순조롭게 8자리인 것을 알아냈다. los_orge.py import requests url = "https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw=" ..

Web Hacking/LoS 2021.05.29

[Lord of SQL Injection] wolfman

id를 admin으로 만들면 풀리는 문제같다. 공백문자를 필터링하고 있다. 아래 블로그에서 공백 우회방법을 참고했다. https://binaryu.tistory.com/31 1. Tab : %09 no=1%09or%09id='admin' 2. Line Feed (\n): %0a no=1%0aor%0aid='admin' 3. Carrage Return(\r) : %0d no=1%0dor%0did='admin' 4. 주석 : /**/ no=1/**/or/**/id='admin' 5. 괄호 : () no=(1)or(id='admin') 6. 더하기 : + no=1+or+id='admin' 그 외 다양한 우회 방법 참고 https://g-idler.tistory.com/61 간단해 보이는 +를 써봤는데 필터링되..

Web Hacking/LoS 2021.05.18

[Lord of SQL Injection] orc

addslashes 이스케이프 시켜야하는 문자 앞에 백슬래시를 붙여주는 작업을 하는 함수다. ', ", \, NUL 을 처리한다. zzaps.tistory.com/45 쿼터를 필터링하고 있음을 알 수 있다. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); 이 부분을 보면 입력값과 DB의 pw가 일치해야 풀리는 것을 확인할 수 있다. 이 문제는 Blind SQL Injection 을 사용해야 한다. Blind SQL Injection은 쿼리 결과에 따른 서버의 참과 거짓 반응을 통해 공격을 수행하는 방식이다. length(pw)=pw길이 length함수를 사용하면 패스워드 길이를 알 수 있다. 1부터 값을 늘려가며 찾아보자. pw='..

Web Hacking/LoS 2021.05.09

[Lord of SQL Injection] goblin

id를 admin으로 만들면 풀릴 것 같은데 id가 guest로 쓰여있다. id=admin 식으로 입력하자 역시 id값은 변하지 않았다. no에 아무거나 입력하고 뒤에 주석으로 id=admin을 날려보았더니 Hello guest를 띄웠다. no=1 %23id=admin 여러가지로 시도해보다가 "를 입력하면 다음과 같이 뜬다는 것을 알아냈다. if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 이 부분을 보니까 쿼터를 필터링한다. url 인코딩으로 입력해보기로 했다. "를 %22로 입력해보아도 No Quotes가 뜬 걸로 보아 url 인코딩은 통하지 않는 것 같다. 필터링을 우회할 수 있는 방법을 알아보다가 엄청난 사이트를 발견했다. 심지어 블..

Web Hacking/LoS 2021.04.10

[Lord of SQL Injection] cobolt

쿼리 select id from prob_cobolt where id='' and pw=md('') 저번과 다르게 md5로 pw값이 해시화된다. 테스트삼아 괄호를 맞춰 1=1을 해봤는데 다음과 같은 결과가 나왔다. id=1&pw=1') or('1'='1 코드를 보니 if문으로 id가 admin일 경우 풀리게 되어있고 아닐경우에 이런 문구를 출력한다. if문에는 id값이 admin인지 아닌지만 확인하고 있다. 그러면 admin뒤의 값을 주석처리하면 풀리지 않을까? #을 그대로 치니 입력이 되지 않았기 때문에 문자인코딩으로 %23을 넣어주었다. '으로 id값을 닫아주어야 clear할 수 있다. id=admin'%23 cobolt clear~

Web Hacking/LoS 2021.04.04

[Lord of SQL Injection] gremlin

los.rubiya.kr/ join으로 가입해준 뒤 로그인했다. gremlin을 들어가면 다음과 같은 문제가 나온다. php에서 변수를 조작하려면 ? 뒤에 id=1같은 방식으로 입력하면 된다. 전에 sql관련 문제를 풀 때 뒷부분을 참으로 만들어서 풀었던 기억이 있는데 찾아보니까 sql 인젝션이 적용되는지 테스트할 때 사용한다고 한다. or '1'='1을 입력해보았다. id=1&pw=1' or'1'='1 클리어~!

Web Hacking/LoS 2021.03.28