본문 바로가기

Wargame/Lord of SQL injection

(4)
Lord of SQL injection 07 https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php los.rubiya.kr 아직 05, 06을 깨지 못했기 때문에 위 링크를 통해 접속하면 된다. 저기 preg_match가 들어있는 두 줄을 보자. preg_match($pattern, $subject, [, $matches])는 문자열 안에서 특정한 정규식 패턴의 존재 여부를 찾는데 유용한 함수이다. $pattern : 문자열로 검색할 패턴 $subject : 입력 문자열 [$matches] : 사용 시 패턴에 매치되는 내용을 배열에 담아둔다. 따라서 pw..
Lord of SQL injection 04 4번 orc 여태까지와는 다르게 id는 admin으로 고정되어 있고 admin의 pw를 무조건 맞춰야 풀리는 것 같다. 냅다 들여봐도 모르겠어서 구글링을 했는데 Blind SQL Injection을 사용해야 한다고 한다. Blind SQL Injection이 무엇인지에 대해서는 과제 3에서 후술할 예정이다. preg match 부분이 필터링 함수라는데 prob 와 _ . , 를 필터링하고 i를 통해 대소문자를 구별하지 않는다고 한다. 비밀번호의 크기를 먼저 찾을 수 있으면 찾는 것이 중요한데 코드를 보면 참인 값이 주어졌을 때 Hello admin을 출력하는 것을 확인할 수 있다. 따라서 참일 때까지 비밀번호의 크기를 입력하여 찾아야한다. 비밀번호의 크기를 찾기 위해서 사용할 문법은 문자열의 크기를 나타..
Lord of SQL injection 03 3번 goblin 1, 2 번처럼 했더니 저렇게 떴다. 우선 no= 값을 구해보자. ?no=0 ?no=1 guest의 no 값은 1이다. 그런데 문제를 clear하려면 id에 guest가 아닌 admin이 필요하기에 no 값은 0를 사용하겠다. 그럼 입력해야할 값은 ?no=0 or id='admin' 엥? 쿼리문의 No Quotes ~_~ 부분을 잘 살펴보니 ' 과 '' 를 쓰면 안된다고 한다. 그렇다고 ?no=0 or id=admin 를 입력하면... 문자열 admin을 인식하지 못한다. 그럼 admin 을 16진수 (hex) 로 바꾸어서 넣는 수밖에 없다. 아래 사이트는 문자열을 16진수로 바꾸어주는 사이트이다. swiss converter tool | percederberg.net swiss con..
Lord of SQL injection 01, 02 Lord of SQL injection https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr 해당 사이트에서 실습을 진행한다. 초록색 [enter to the dungeon] 누르고 가입 후 로그인하면 끝! 이제 이 사이트에서 뭘 해야하냐면... id admin / pw password 로 로그인 시 wrong 문구가 출력되고 id guest / pw guest 로 로그인 시 hello guest 가 출력되는데 이는 admin 계정의 암호는 dict 형태로 16진수 난수 형태로 생성되기 때문이다. 파이썬 코드에는 db.execute(finsert into users(userid, userpassword) values ("guest", "guest"), (..