본문 바로가기

wri te-ups/Lord of SQL Injection

(19)
LoS 올클했씁미다 LOS 올클했습니다 ㅊㅊㅊㅊㅊㅊ 사실 맨 마지막 문제는 오류가 있어서 절대 못 푸는 문제랍니다. 그래서 제가 못 푸는 거였어요ㅋㅎㅋㅎㅋㅋㅋㅎㅋㅋㅎㅎ
[Lord of SQL Injection] umaru solving.. 말그대로 umaru 문제를 풀면서 작성하는 글- H3X0R, s1ipper 팀 소속 윤석찬(ch4n3) - 진짜로 말 그대로 umaru문제를 풀면서 작성하는 /tmp/ 스러운 포스팅입니다. 사실 방금 대단한 것을 발견했어요. Time Based SQL Injection이죠. mysql> update login set no=0 where id='admin' and sleep(ord(mid(pw,1,1))=80);Query OK, 0 rows affected (1.00 sec)Rows matched: 0 Changed: 0 Warnings: 0update 문을 공략할 수 있다는 거죠. (이 mysql은 localhost입니다.)sleep() 함수의 리턴값은 0이기 때문에 and 연산으로는 무조건 거짓이 되게..
[los] DB가 바뀌고 나서의 xavis write up Lord of SQL Injection xavis write up 이 문제는 1개월동안 잡고 있었던 문제 같습니다ㅜㅜ 진짜 어떻게 풀어야 하는 지도 계속 몰랐던 문제라 웹해커 친구에게 힌트를 물어봤습니다. 그 친구는 힌트가 한글이라고 했고, 한글로 blind sql injection 하는 구나 이렇게 생각하면서 풀려고 노력했었는데 아니더군요! 그냥 힌트만 얻으려 들어오신 분들에게 조금의 힌트를 드리자면,pw에 있는 내용은 한글이 아닙니다ㅡㅡ한글은 아니지만 일반 ascii 코드도 아닙니다! 위의 코드는 제가 문제를 푸는 데 사용했던 파이썬 코드입니다. 제 우분투에서는 유니코드가 잘 나오지 않았기 때문에 mysql에서 select 하면 볼 수 있는 형식의 16진수 스트링을 프린트하도록 하였습니다. 참고로, ..
[Lord of SQL Injection] Assassin Zombie 풀이 Lord of SQL Injection (LoS) - Assassin_ZombieAnalyze 띠용??? 정규식에서 어떤 걸 필터링하는 건지 모르겠다. 하지만 확신한 것이 있다. 바로 취약한 함수 ereg()를 사용했다는 것. 어떻게 풀어요 그럼?ㅜㅜ ereg() 함수는 앞에 %00 (Null byte)가 있다면 탐색을 종료한다는 특성을 가지고 있다. 따라서 http://los.eagle-jump.org/zombie_assassin_14dfa83153eb348c4aea012d453e9c8a.php?pw=%00'or'1'='1 이렇게 해도 HeHe에 걸리지 않는다.
[Lord of SQL Injection] Assassin 풀이 Lord of SQL Injection (LoS) - Assassin Analyze like에서는 사실 어떻게 해야할 지 감이 잘 안온다. http://hackerschool.org/Sub_Html/HS_Posting/?uid=43 여기에서의 rubiya님의 강의를 보고 대충 감을 잡았다. 어떻게 풀어요 그럼?ㅜㅜ와일드 카드 "%"를 이용한 Blind SQL Injection을 수행하면 된다. 앞부분은 guest와 admin이 똑같지만, 달라지는 순간이 있다. 이 순간을 잘 캐치해서 풀면 된다.
[Lord of SQL Injection] Giant 풀이 Lord of SQL Injection (LoS) - GiantAnalyze 띄어쓰기만 된다면 쿼리문을 참으로 만들 수 있다. 하지만 주요한 공백과 공백 우회 문자들은 다 막혔다. 어떻게 풀어요 그럼?ㅜㅜ 사실 저기 필터링 된 문자 이외에 다른 문자들이 있음. 1. %0b 수직 탭2. %0c 폼 피드(form feed)
[Lord of SQL Injection] Bugbear 풀이 Lord of SQL Injection (LoS) - Bugbear Analyze이번 문제에서는 굉장히 많은 것이 필터링되어 있다. substr() , ascii() , ord() 함수를 사용하지 못하고 or , and , like , 0x 등의 연산자와 공백이 필터링된다. ord() 함수가 필터링되는 이유는 or이 필터링되었기 때문. 띠용??? 근데 여기서 문자를 숫자로 바꿔주는 함수가 모두 필터링되어있다. 망한 걸까. Solutionhex() 함수를 이용해서 0x를 뺀 16진수와 비교하면 된다! 생각보다 쉬운 문제다. mysql> select hex('a') = 61;+---------------+| hex('a') = 61 |+---------------+| 1 |+---------------+1 ..
[Lord of SQL Injection] Darknight 풀이 Lord of SQL Injection (LoS) - Darknight Analyze일단 싱글쿼터는 쓰지 못한다. substr() 함수와 ascii() 함수마저... 더군다나 = 도 쓰지 못한다...ㅜㅜ Solution blind SQL Injection을 진행할 때 보통 ascii(substr(pw,1,1)) like 97 이런 식으로 비교했으나 함수를 조금만 바꿔서 ord(mid(pw,1,1)) like 97 이런 식으로 바꾸면 필터링에 걸리지 않는다. 만약에 like까지 필터링으로 걸렸있었다면, in 으로 비교할 수 있다. 그리고 in 마저 필터링되어있다면, < > 등으로 대체하여 비교할 수 있다. ord() 함수와 ascii() 함수는 거의 같은 함수라고 말할 수 있다. 하지만, 이것도 다른 기능..