WarGame
[LOSI] Lord of SQL Injection Level 42 - Revenant
레버넌트이다. 영화로도 나왔던 거 같은데; 기억이 잘 안나네... 코드를 확인하자 코드 일단 nessie와 비슷한 형태이다. 사실 거의 똑같다. 메타정보와 waitfor 등이 막혀있고, 2가지 쿼리를 쓰지 못하게 세미콜론(;)이 막혀있다. 주석으로는 5번째 칼럼을 pwn 해야 한다고 한다. 해결방법 Answer Url : los.rubiya.kr/chall/XXXX.php?pw=aa68a4b3fb327dee07f868450f7e1183 일단 어째 $result['4']라는걸보니 칼럼명이 0,1,2,3,4 일거 같은 직감이 든다.(아닌가? 조건절은 또 id니까 아닐 수도 있겠네) 저번처럼 에러 메시지는 웹페이지에 그대로 노출이 된다. 따라서 칼럼명을 확인할 수 있는 에러를 발생시키면 좋을 거 같은데, 가장..
[LOSI] Lord of SQL Injection Level 41 - Nessie
4시이다. 글을 쓰고 있는 지금은 오후 11시이다...... 잡소리 그만하고 NESSIE의 코드를 만나보자 코드 DB가 바뀌었다. 지난 시간까지는 sqlite였는데, mssql이 되었다. query는 2개가 시행이 되는데, 첫 번째 쿼리만 exploit 대상이 되는 거 같고, 두 번째 query는 정확한 pw를 전달해서 문제를 해결하는 문고리 문제인 거 같다. master, sys, information, prob, wiatfor 등이 막힌것을 보니, 메타데이터의 접근과 time based sql injection을 방지하려고 한 거 같다. 해결방법 Answer Url : los.rubiya.kr/chall/XXXX.php?pw=uawe0f9ji34fjkl 코드를 잘 보면 exit(mssql_error(..
[LOSI] Lord of SQL Injection Level 40 - Poltergeist
폴터가이스트 현상이다.(이것도 몬스터가 맞나?) 예전에 국내에서 개봉한 곤지암이라는 영화를 봤는데, 와; 무섭더라. 마지막 장면에 침대에 묶여서 어둠으로 끌려가는 장면이 생각난다. 코드 주석이 길다. 써있는 글은 flag_{$hash} 테이블에 정보가 있다고 한다. 아마 특정한 다이제스트가 $hash에 들어갈 거 같다.(설마 $hash라는 문자열일까) 해결방법 Answer Url : https://los.rubiya.kr/chall/XXXX.php?pw=FLAG{ea5d3bbdcc4aec9abe4a6a9f66eaaa13} 첫번째 코드이다. Blind SQL Injection을 위해서 우선 flag_%뭐 시기로 시작하는 테이블 명을 가져와 봤다. MySQL의 Information_Schema와 같은 메타 ..
[LOSI] Lord of SQL Injection Level 39 - Benshee
벤시다. 벤시는 아일랜드 전설에 등장하는 요정으로 우리나라에서는 적대적인 몬스터로 알려져 있다.(아마 WOW가 한몫하지 않았을까 우리 족장님...) 사실은 그리 적대적인 몬스터가 아니다. 요정이니까, 코드를 만나보도록 하자 코드 오호 익숙한 코드이다. sqllite에서의 blind sql injection은 어떻지 조금 생각을 해보고 코드로 이동하자 해결방법 Answer Url : los.rubiya.kr/chall/XXXX.php?pw=0313091b import string from requests import get if __name__=="__main__" : url = "### BENSHEE의 URL ###" cookie = dict(PHPSESSID ="### 자신의 PHPSESSID ###"..
[LOSI] Lord of SQL Injection Level 38 - Manticore
이집트 신화에 나오는 만티코어다. 무섭게 생겼지만, sqllite를 이용한 문제가 시작된 지 얼마 되지 않았으므로 간단한 문제로 예상된다. 코드를 확인하자 코드 sqllite db에서 id와 pw파라미터의 addslashed처리를한다. 해결방법 Answer Url : los.rubiya.kr/chall/XXXX.php?id=1%27%20or%20id=char(97,100,109,105,110)--%20 간단하게 해결되었다. 신기한점이 하나가 있는데 sqllite는 문자열에 들어간 \가 이스케이프 문자로 취급되지 않는다는 점이다. 그래서 addslash를 통해서 \가 추가돼도 이게 문자열로 인식이 된다. 이번 몬스터도 어렵지 않게 잡을 수 있었다. 다음 문제에서 여러분들을 기다리겠다.
[LOSI] Lord of SQL Injection Level 37 - Chupacabra
추파카브라? 뭐하는 몬스터인지 모르는데 사진을 보니까 친절하진 않을 거 같다.(literally 'goat-sucker'?) 코드를 살펴보자 코드 와우! 일단 WAF가 없다.(URL보고 판단했다.) 또한 코드길이가 그리 길지 않으니 뭔가 어려울 거 같다는 생각이 든다. 바로 해결방법을 생각해 보자 해결방법 Answer Url : los.rubiya.kr/chall/XXXX.php?id=admin%27--%20 2-SY! 왜 이렇게 쉬워졌나 했더니 이번부터는 새로운 DB인 SQLLITE가 사용되었다고 한다. 자세히 보면 % db연결 부분이 mysql_이었던 지난 문제들과 달리 sqllite_open()을 사용하는걸 알 수 있다. 이번 문제는 그에 따른 입문 문제로 생각해 주면 되겠다. 하나 참고로 주면 혹..