목록Wargame Writeups (64)
White Security
los.eagle-jump.org의 6번째 문제입니다.이번 문제는 or, and를 차단했다는 것이 특징인데요. ||, && 연산자로 그 역할을 완전히 대체할 수 있다는 것을생각해 보면, 거의 의미가 없는 일입니다. ( 뜻하지 않게 order by가 차단됩니다 ) or 대신에 || 연산자를 입력하여 작동을 확인하고 id를 admin으로 한정시켜주면 클리어됩니다.
los.eagle-jump.org의 4번째 문제입니다.이번 문제의 특징은 whitespace를 막고 있다는 점입니다. 사실 no whitespace 라고 되어있지만실제로 막혀 있는 것은 0x20 (Space) 뿐입니다. 따라서 탭 문자 등을 대신 사용하는 것으로문제를 해결할 수 있습니다. 주석문인 /**/ 을 사용해도 같은 효과를 얻을 수 있는데요.탭 문자 등 모든 공백문자들이 막혀 있을 경우 사용해도 좋겠습니다. id를 admin으로 지정하는 것으로 클리어가 가능합니다.
los.eagle-jump.org의 세번째 문제입니다. 이번 문제의 특징은 로그인에 성공해도 출력되는 것이 Hello admin 이라는 문자열로 고정되어 있다는 점입니다. 또한 1차로 로그인에 성공해도 2차로 addslashes를 적용한 쿼리 결과값과도 일치해야 하므로 결국은 첫번째 쿼리를 이용해 pw값을 찾아내어 두번째 쿼리를 통과해내는 문제라고 할 수 있겠습니다. pw 값을 변조하여 로그인에 성공해도 $result['id'] 값이 직접적으로 표시되지 않고 조건문 분기에만 사용되므로 Blind SQL Injection 기법을 사용하여야 합니다. from urllib import request, parse import math, sys def check_true(response): return (resp..
los.eagle-jump.org의 세번째 문제입니다.이번 문제의 특징은 쿼트를 막고 있다는 점입니다. 하지만 mysql 에서는 hex 형태로 문자열을 대체할 수 있기에쿼트가 붙지 않은 hex 값을 계산해 사용하면클리어가 가능합니다.
los.eagle-jump.org의 두번째 문제입니다.이전 문제와 비슷하지만 pw를 해시화해서 저장하고 있군요. 하지만 id 값을 이용해 pw 비교부분을 주석화시키면해결될 것으로 보입니다. 로그인에 성공했지만 admin 계정이어야만 한다는군요.이럴때는 limit 문을 이용해 다음 행을 확인해 보아도 되고id 값을 예측할 수 있다면, id='admin' 등을 통해 찾아낼 수도 있습니다. id='admin'인 줄을 찾아 가져오고 뒷 부분을 주석화 시키는 것으로 해결했습니다.
`los.eagle-jump.org의 첫번째 문제입니다.소스를 간략화해서학습에 도움이 될 수 있도록 한 부분이 마음에 드네요. '/prob|_|\.|\(\)|/i' 부분이 눈에 띄는데information_schema를 통해타 테이블 접근을 방지하는 용도로 쓰여진 것으로 보입니다. 문제 자체에는 아무것도 적용된 기법이 없기에id 파라미터에 or 1을 넣어항상 true를 반환하도록 하고뒷 부분을 주석처리 해 주는 것으로 가뿐하게 클리어가 가능합니다.
wargame.kr 사이트의 마지막 웹 문제입니다. SQL 인젝션 문제입니다 접속하자마자 소스가 표시되는데 pw, flags 값이 사전 계산된 값과 동일하면 플래그를 출력하고 그렇지 않은경우 id 컬럼만 표시하고 있네요. id 컬럼 출력 부분을 활용해서 정보를 가져올 수 있을 것으로 보입니다. http://wargame.kr:8080/adm1nkyj/?id=admin&pw='+and+0+union+select+1,@@version,3,4,5--+- http://wargame.kr:8080/adm1nkyj/?id='+or+1+order+by+5--+- id 파라미터에 order by 절을 사용해 findflag_2 테이블의 컬럼이 5개라는 것을 알 수 있었습니다. http://wargame.kr:8080/..
wargame.kr 사이트의 30번째 문제입니다. Error based SQLi Challenge 링크에 접속하면 로그인 화면을 볼 수 있습니다.ID는 본인 아이피로 고정되어 있으며변경하여도 서버에서 검증하기에 의미가 없습니다. 모든 파라미터는mysql_real_escape_string 함수를 거쳐 사용되며유일하게 type 파라미터만이 쿼트가 없습니다. 따라서 type 뒤에 or으로 조건식을덧붙여주면 로그인이 가능합니다. 하지만 Flag를 얻으려면실제 ps 파라미터가 검증되어야 하므로우리는 ps 값을 알아낼 필요가 있습니다. extractvalue 함수를 사용해서error based sql injection을 시도해 보았지만t_user 는 임시테이블이기에 다중 접속이 불가하고all_user_account..