Blind SQL Injection

Web Hacking Advanced

[dreamhack] blind sql injection advanced

문제분석 & 풀이@app.route('/', methods=['GET'])def index(): uid = request.args.get('uid', '') nrows = 0 if uid: cur = mysql.connection.cursor() nrows = cur.execute(f"SELECT * FROM users WHERE uid='{uid}';") return render_template_string(template, uid=uid, nrows=nrows)uid를 이용해서 select 쿼리를 실행하는 구성이다. uid 파라미터에 대한 검증과 prepare statement와 같은 시큐어 함수가 적용되지않았다. 따라서 uid를 이용해 SQL injec..

webhacking.kr

[webhacking.kr] old-40 (sqli -> blind)

문제에 접속하니 소스가 따로 주어져있지는 않고 로그인창만 뜬다. 이미 guest라는 계정으로 모든 값이 다 적혀있어서 그대로 로그인을 해봤다.  no,id,pw 파라미터를 통해 값이 전송되며 guest 로 로그인이 성공했다는 표시가 뜨고 이후 몇 초 뒤에 자동으로 로그아웃이 됐다. 로그인창을 다시 봐보니 pw가 5자리가 적혀있고 아마도 guest의 pw는 guest이지 않을까 싶어서 값을 지우고 guest로 입력하여 로그인을 다시해봤다. 로그인이 성공했고 guest의 pw가 guest라는 사실이 확정됐다. DB에 no=1, id='guest' , pw='guest' 라는 데이터가 저장되어있을 것이고 아마 이번 문제는 blind sqli를 통해 admin의 계정으로 로그인하는 문제인 것 같다. select..

webhacking.kr

[webhacking.kr] old-21 (sqli → blind)

문제분석 & 풀이로그인창이 보인다. blind sql injection 문제인 것 같다. guest / guest 로 로그인을 시도하면 "login success" 라는 메세지가 뜬다. 뜬금없이 성공한게 이상해서 id / pw 를 아무 값이나 넣어보니 이번에는 "login fail" 이라고 뜬다. 아마도 guest / guest 는 우연히 맞은 것 같다. select * from [table] where id=$id and pw=$pw 로그인 쿼리를 위처럼 예측해볼 수 있다. 이를 토대로 인젝션을 시도해보자.  select * from [table] where id='guest' and pw='1'or'1'='1' 간단한 인젝션 쿼리를 만들 수 있다. where 문에서 or 기준으로 앞은 참이 아니더라도..

webhacking.kr

[webhacking.kr] old-13 (sqli → blind)

문제분석 & 풀이sql injection 문제라고 언급하고있다. FLAG{something}이라고 써있는 곳에 옳바른 flag를 입력하는 것이 목표다. 첫번째 폼에 1을 넣어 제출해보니 result 속성에 1이라는 값이 담긴 테이블을 연상하시키는 정보가 나왔다.url을 보면 우리가 폼에 넣어 전송한 값이 no 파라미터로 전송되고있다는 것을 알 수 있다. 다른 값들도 넣어보았는데 2 이상의 값들을 넣었을 경우에는 위와 같은 결과가 나온다. 처음에 sqli 문제라고 언급을 했기 때문에, no 파라미터를 통해 sqli를 수행하면된다. 위에서 결과에 대한 출력값의 차이가 2가지로 존재했으므로 이를 이용하여 blind sqli를 시도하면 될 것이다. 목표는 위에서 언급한 것처럼 flag를 가져오는 것이다. 처음에..

keyme
'Blind SQL Injection' 태그의 글 목록