본문 바로가기

WEB/Lord Of SQL injection

[Lord Of SQL injection] succubus → nightmare 음 전 문제에서 ereg함수 취약점을 알고 기분좋게 succubus로 왔더니 작은따옴표도 preg_match로 제낀다. 흑 일단 검색해서 알아본 것 중에 \를 통해 우회하는 방법이 있는 것 같다.http://security.stackexchange.com/questions/37749/no-single-quotes-is-allowed-is-this-sql-injection-point-still-exploitable 여기에 보면 질문자가 작은따옴표 우회하는 방법을 묻는데 답변자들이 다 \를 통해 우회하라고 한다. 사실 \를 통해 어떻게 우회하란건 지는 잘 모르겠지만 \가 힌트인 것 같다.계속 검색하다가 succubus 풀이까지 왔다ㅋㅋㅋhttp://bluehatsecurity.tistory.com/219 여.. 더보기
[Lord Of SQL injection] zombie_assassin → succubus 문제 소스코드를 보면 id든 pw든 다 '를 제낀다. 저기 if(@ereg(~);부분만 우회하면 될 거 같은데 그 전 문제들에서도 '를 우회하려고 검색해봤는데 마땅히 그렇다할 기법을 찾지 못했다. 이번에도 작은 따옴표 우회하는 방법을 검색해도 잘 모르겠다. 근데 왜 미처 함수에서 취약점을 찾자는 생각을 하지 못했을까. preg_match함수에 작은 따옴표를 넣어도 되는데 ereg 함수를 통해 제끼는 걸 보면 뭔가 있을 거 같다.ereg 치는데 바로 취약점이 연관되어 나온다.http://hackability.kr/entry/PHP-%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%95%84%ED%84%B0%EB%A7%81-%ED%95%A8%EC%88%98ereg-eregi-%EC%B7%A8%EC%9.. 더보기
[Lord Of SQL injection] assassin → zombie_assassin 우선 소스코드가 간단해졌다. like 다음에 GET[pw]가 오니까 %이용해서 한자리씩 알아내면 될 것 같다. 우선 앞의 한자리만 노가다로 알아내보자pw의 맨 앞자리를 알아보기 위해 0부터 z까지 대입했는데 8%에서 Hello guest가 뜨고 아무것도 뜨지 않았다. admin과 guest의 pw가 겹치는 부분인가 보다. 겹치는 부분도 유의하며 코드를 짜서 돌려보자like 다음에 맞는 pw글자들은 코드 처음부분에 아무 값도 없는 변수 하나를 지정하고 그 변수에 차곡차곡 쌓아 이어붙이면 될 것이다. 더보기
[Lord Of SQL injection] giant → assassin 우선 쿼리문을 보자마자 from과 prob_giant사이를 띄워주고 싶다. 근데 띄워줄려니 space도 막혔고 뭐 죄다 막혔다. 그리고 길이 제한도 해놔서 /**/도 해봤자 안될 거 같다.http://luxs1t.tistory.com/28 여기서 공백 우회를 하는 다양한 코드를 소개해준다. 이 중 예외처리 되지 않는 걸로 shit에 넣으면 풀린다. 더보기
[Lord Of SQL injection] bugbear → giant 우선 문제를 보면 no에 예외처리 되는게 전 문제에 비해 더 많아진 것 같다. and, or, substr, ascii, like, 0x도 예외처리가 된다. 우선 like가 예외처리 되는거에 가장 큰 걱정을 하며 일단 Hello admin을 뽑아내보자.일단 공백은 저번 문제에서 했듯이 /**/로 우회하고 or, and는 논리연산자로 우회한다. 이제 like가 문제인데 찾아보니 like우회는 strcmp, in 등등으로 우회할 수 있다는데 in 구문을 통해 우회하는 게 쉬워서 in으로 우회했다. (IN 구문에 대한 설명 http://makand.tistory.com/entry/SQL-IN-%EA%B5%AC%EB%AC%B8)이제 like 우회하는 방법을 알았으니 파이썬으로 짜서 돌려보자이번에도 pw길이는 8.. 더보기
[Lord Of SQL injection] darkknight → bugbear 다크나이트 문제. 갑자기 이전 문제들에 비해 난이도가 올라간 거 같다.우선 pw에서 '을 예외처리하고 no에서는 substr, ascii, = 포함되면 죄다 예외처리를 한다.pw에서 '를 예외처리하니 no 이후부터 쿼리를 작성에서 공격을 때려야겠다라는 생각이 들었다. 그런데 다시보니 no도 '을 예외처리한다.no 이후로부터 공격을 때려 푸는건 맞는 거 같은데 싱글 쿼터를 어떻게 우회하나 검색하다 결국엔 다른 사람의 풀이에서 답을 얻었다.http://bluehatsecurity.tistory.com/214여기서 보면 no는 숫자를 받으므로 더블쿼더(")를 이용해서 id를 입력한다는 것이다.오 된다.그럼 이제 pw의 길이를 확인해보자. 일단 8부터역시 pw의 길이는 8이다.이제 파이썬으로 짜서 돌리면 끝이다.. 더보기
[Lord Of SQL injection] golem → darkknight 소스코드를 보면 전 문제들과 똑같이 or 과 and가 안먹히니 논리 연산자로 때려야하는데 substr과 =을 예외처리해 버린다.일단 =은 'like' 로 우회한다고 본 기억이 맞는지 때려보았다.Hello guest가 뜬다.일단 substr 우회는 잠깐 던져두고 pw의 길이를 알아내자. 그 전 문제들 pw가 다 8자리길레 8부터 때려보았다.pw의 길이는 8자리이다.substr을 우회하기 위해선 어떻게 해야하나 바로 검색을 해보았다. http://itword.tistory.com/entry/blind-sql-injection-leftright-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9D%B8%EC%A0%9D%EC%85%98 여기에 substr을 우회하는 방법을 간략하고 이.. 더보기
[Lord Of SQL injection] skeleton → golem 쿼리문 마지막에 and 1=0이 붙는다.이런 식으로 항상 마지막에 붙는다. 그럼 주석처리를 하자ㅇㅅaㅇ ㅇㅅㅇr’ ~.php?pw=' or id='admin'%23풀렸다.and 1=0을 살려서 풀어보자~.php?pw=' or id='admin' or id='guest 더보기
[Lord Of SQL injection] vampire → skeleton LOS 문제 화면 볼 때마다 사진보고 쫄았던 뱀파이어다. str_replace함수가 사용된다. $_GET[id]에서 admin을 찾아 “”으로 바꿔준다.(admin을 없앰) 근데 어차피 대문자로 우회가 될 거 같다.대문자로 우회해서 풀자 더보기
[Lord Of SQL injection] troll → vampire 문제를 보면 admin을 예외처리 하는데 id값을 admin으로 맞추란다. 계속 보다가 든 생각이 그전 문제들을 푼다고 우회기법 찾아볼 때 대문자로 우회한다는 걸 자주 봤는데 볼 때마다 그냥 아아 그렇구나 하고 넘어갔는데 그게 이거인 거 같다.대문자로 때려보자! 더보기