[LOS] Level18: xavis 포스팅 썸네일 이미지

War Games/Lord of SQLInjection

[LOS] Level18: xavis

Lord Of SQLInjection: lv.18 xavis xavis입니다. pw로 prob | _ | . | () | regex | like 사용을 못하게 하였고, pw를 찾아야하네요. 이 문제는 regex와 like를 못쓰게 하였는데, 우리는 원래 substr을 사용하므로 상관없습니다. import httplib headers= {'Content-Type':'application/x-www-form-urlencoded', 'Cookie':'PHPSESSID=bqm5el8gbhaa4o89h7h458i5sd'} conn= httplib.HTTPSConnection('los.rubiya.kr', 443) pw='' for i in range(1, 10): for j in range(32, 128): co..

2020.01.16 게시됨

[LOS] Level17: nightmare 포스팅 썸네일 이미지

War Games/Lord of SQLInjection

[LOS] Level17: nightmare

Lord Of SQLInjection: lv.17 nightmare nightmare입니다. 보면 prob | _ | . | () | # | - | 를 막아놓았네요. 즉 주석문 #을 못쓰는건데, sql에는 다양한 방법의 주석문이있습니다. # | -- | ;%00 정도가 있는데, #와 --는 막혔으니, ;%00을 통해 풀어줍시다. 아, 한가지 더 봐줄 게 있는데, pw=('') 부분입니다. 일단 저 구문 자체는 0일것입니다. (당연히 pw는 어떤값이든 있을테니) 따라서 저 구문이 0이라고 해주면 전체 쿼리는 참이 되겠죠. 이를 이용해서 풀어줍시다. https://los.rubiya.kr/chall/nightmare_be1285a95aa20e8fa154cb977c37fee5.php?pw=%27)=0;%00 굳

2020.01.15 게시됨

[LOS] Level16: zombie_assassin 포스팅 썸네일 이미지

War Games/Lord of SQLInjection

[LOS] Level16: zombie_assassin

Lord Of SQLInjection: lv.16 zombie_assassin zombie_assassin입니다. preg_match로는 prob | _ | . | () | 를 거르네요. 근데 못보던게 생겼네요. strrev(addslashes($_GET['id']))부분인데, strrev는 딱봐도 string reverse함수같이 보이고, addslashes는 뭔가 \를 덧붙일 것 같은 함수네요. strrev함수는 asdf을 입력하면 fdsa로 문자열을 바꾸고, addslashes는 특수문자앞에 \를 붙여 문자열이 특수문자로 쓰이는 걸 방지하는 함수입니다. 쉽게말해서 싱글쿼리와 더불어 특수문자들을 악용할 수 없는 것이죠. 따라서 succubus를 푼 방식과 비슷하게 풀어주면 됩니다. addslashes..

2020.01.14 게시됨

[LOS] Level15: succubus 포스팅 썸네일 이미지

War Games/Lord of SQLInjection

[LOS] Level15: succubus

Lord Of SQLInjection: lv.15 succubus succubus입니다. 이 문제는 둘다 싱글쿼리를 막고있고, id의 값만 있으면 풀립니다. 평소같이 sql injection을 하면 되겠지만, 싱글쿼리를 어떻게 해결해주면 좋을까요? preg_match문을 주의깊게 봅시다. if(preg_match('/\'/',$_GET[id])) exit("HeHe"); 보면 싱글쿼리 앞에 \가 붙어있죠? (코드블럭 안에 들어있어서 / 좌우돌림한것처럼 보이네요) \는 많은 언어 안에서 "문자열 자체"로 인식되게끔 합니다. 그냥 싱글쿼리를 넣으면 이게 문자열 작은따옴표로 쓰고싶었는지, 쿼리를 나눠주는 싱글쿼리인지 구분하지 못하기 때문에 \를 앞에 입력하면 뒤에 있는 싱글쿼리를 문자열로 인식합니다. 이를 이..

2020.01.13 게시됨

[LOS] Level14: assassin 포스팅 썸네일 이미지

War Games/Lord of SQLInjection

[LOS] Level14: assassin

Lord Of SQLInjection: lv.14 assassin assassin입니다. 보면 싱글쿼리가 걸러지고 있네요. 이걸보고 싱글쿼리를 우회할 방법을 찾고 있었는데, 결국 찾지 못했습니다... 그래서 = 대신 쓰인 like를 보았습니다. 보아하니 like의 옵션 중 %와 _가 있더라구요(정확하게는 와일드카드라고 합니다) %는 해당하는 문자열이 포함된 모든 db중 첫 번째 db를 출력해주고, (linux의 *과 느낌 비슷함) _는 해당하는 문자열이 정확히 포함된 db를 출력해줍니다. 글로는 알기 힘드니 예시로 봅시다. A% : 'A'로 시작하는 모든 문자열 %A% : 'A'가 포함된 모든 문자열 _A% : 두 번째 문자가 'A'인 모든 문자열 참고로 와일드카드중에 [](범위 정해주는거)도 있던데 왠..

2020.01.12 게시됨

[LOS] Level11: darkknight 포스팅 썸네일 이미지

War Games/Lord of SQLInjection

[LOS] Level11: darkknight

Lord Of SQLInjection: lv.11 darkknight darkknight입니다. no변수에는 싱글쿼리, substr, ascii, =를 못쓰고 pw에는 싱글쿼리만 못쓰네요. 그리고 문제 풀이조건은 pw를 찾아내야하네요. pw를 찾을 때 substr >> mid ascii >> ord = >> in 함수들을 각각 이용해주면 되겠습니다. 일단 Hello admin까지는 성공했네요. 이제 pw를 알아내야 하는데, 이건 우리가 해왔던대로 쭉 하면 됩니다. 이렇게 하니 문제없이 blind sql을 할 수 있네요. 대신 python코드를 짤때는 in('+str(j)+') 이런식으로 해야겠죠? import httplib headers= {'Content-Type':'application/x-www-f..

2020.01.09 게시됨

[LOS] Level10: golem 포스팅 썸네일 이미지

War Games/Lord of SQLInjection

[LOS] Level10: golem

Lord Of SQLInjection: lv.10 golem golem입니다. or, and, substr, =을 사용하지 않고 pw를 알아내야하네요. 일단 or와 and는 앞의 문제에서도 그랬듯이 || 와 &&를 이용하면 되고(&&는 %26%26으로 입력해주는것 잊지맙시다.) substr은 ascii와 mid함수를 이용합시다. ascii함수는 문자를 ascii코드로 바꾸어주고, mid함수는 mid("편집할 텍스트", 추출을 시작할 위치(1부터시작), 추출할 텍스트 수) 와 같이 이용합니다. 마지막으로 =은 in함수를 이용하면 됩니다. 예를들어, id='admin'대신 id in ('admin')으로 이용해주시면 됩니다. 일단 hello admin까지는 출력시켰네요. 이걸가지고 python코드도 만들어보..

2020.01.08 게시됨

[LOS] Level7: troll 포스팅 썸네일 이미지

War Games/Lord of SQLInjection

[LOS] Level7: troll

Lord Of SQLInjection: lv.6 troll 단순히 DB에 대한 문제입니다. 보면 admin이라는 문자열을 못쓰게 만들어놓았는데, 이걸 검사하는 언어체계는 sql입니다. 반면에 id와 말 그대로 database를 끌고오는게 DB인데, 이 DB상에서는 대문자와 소문자를 구분하지 못합니다. 따라서 admin에서 어떤 글자든 대문자로 바꾸어 입력해주면 문제를 풀 수 있습니다. https://los.rubiya.kr/chall/troll_05b5eb65d94daf81c42dd44136cb0063.php?id=AdMiN too EZ

2020.01.05 게시됨