WarGame/Lord of SQL Injection
[LOSI] Lord of SQL Injection 일시정지
Lord of SQL Injection 포스팅을 이번 주까지 마무리하려 그랬는데, 남은 3개의 문제가 비 관계형 데이터베이스 문제이다. 필자가 이걸 할 줄 몰라서 배우고 오려면 시간이 조금 걸릴 거 같다. CEH시험 바우처가 얼마 안 남아서 5월에 시험을 계획하고 있는데, 이후에 남은 문제들을 정리하려고 한다.
[LOSI] Lord of SQL Injection Level 45 - Kraken
으으 문어다. 필자는 연체동물을 먹지 못한다. 몸이 거부반응을 일으킨다. 토한 게 한두 번이 아니다. 빨리 코드를 보고 무찌르자 코드 코드에 따르면 mssql기반의 문제이다. GET파라미터로 전달될 id와 pw에 대해서 master와 information을 필터링하고 있다. 그 후 table인 member에서 id를 query 해서 결과를 echo 하고, pw로 전달된 값이 $krakenFlag로 나오면 된다. * 주석으로 flag는 member테이블이 아닌 'flag_{$hash}'의 테이블에 있다고한다. 메타 테이블에 접근을 해야 되겠다. 해결방법 Answer Url : los.rubiya.kr/chall/XXXX.php?pw=FLAG if($result ['id'])라는 조건이기에, id가 있기만 ..
[LOSI] Lord of SQL Injection Level 44 - Mummy
이번에는 미라다. 수많은 용들과 전설 속의 네스호의 괴물까지 무찌르고 만난 것이 고작 미라라는 게 조금 김 빠지는 이야기이다. 코드를 만나보자 코드 mssql 기반의 문제이다. query로 받아오는 파라미터에 대해서 master, sys, information등 메타 테이블의 접근을 필터링하고 있다. 그 후 가져온 query를 길이에 맞게 반복 순회를 하면서 query에서 ord값이 32 이하인 문자가 발견되면 exit을 사용한다. 그 후 파라미터로 날아온 query에 대해서 직접 $result를 받아와서 결과적으로는 정확한 pw를 요구하고 있다. 해결방법 Answer Url : los.rubiya.kr/chall/XXXX.php?pw=0c3cc245 해결해야할 문제는 자명하다. 공백으로 인식할 수 있는..
[LOSI] Lord of SQL Injection Level 43 - Yeti
이번 문제는 예티이다. Yeti라고 했을 때 아래 예티가 가장 먼저 떠올랐다면 우리는 훌륭한 공익이다. 코드 저번 레버넌트와 같은 mssql문제이다. id와 pw에 대해 master, sys, information 등 메타 테이블 접근을 차단한 것이 눈에 띈다. admin의 정확한 pw를 알아야 하는 걸 봐서 blind sql injection을 시행하거나, 새로운 방법을 시도해야 될 거 같다. 해결방법 Answer Url : los.rubiya.kr/chall/XXXX.php?pw=6425b725 전형적인 Time based sql injection으로 해결이 가능하다. 참고로 이야기를 하자면, mssql은 sleep함수가 없다. waitfor라는 키워드가 sleep처럼 사용되며, 아래와 같은 사용법을..
[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(..