본문 바로가기

웹해킹

(116)
드림핵 sql injection bypass WAF 롸업 CREATE DATABASE IF NOT EXISTS `users`; GRANT ALL PRIVILEGES ON users.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpass'; USE `users`; CREATE TABLE user( idx int auto_increment primary key, uid varchar(128) not null, upw varchar(128) not null ); INSERT INTO user(uid, upw) values('abcde', '12345'); INSERT INTO user(uid, upw) values('admin', 'DH{**FLAG**}'); INSERT INTO user(uid, upw) values('guest',..
SQL Injection-2 SQL Injection으로 원하는 정보 계정과 비밀번호 등을 알아내기 위해서는 해당 정보가 포함된 테이블과 컬럼명을 알아내야 한다. 따라서 시스템 테이블을 조회하는 쿼리 등을 작성해야 한다. MYSQL은 초기 설치 시 information_schema와 mysql, performance_schema, 그리고 sys 데이터베이스가 있다. tables를 통해 정보를 조회할 수 있다. select TABLE_SCHEMA from information_schema.tables group by TABLE_SCHEMA; select TABLE_SCHEMA, TABLE_NAME from information_schema.TABLES; select TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME ..
드림핵 error based sql injection 롸업 CREATE DATABASE IF NOT EXISTS `users`; GRANT ALL PRIVILEGES ON users.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpass'; USE `users`; CREATE TABLE user( idx int auto_increment primary key, uid varchar(128) not null, upw varchar(128) not null ); INSERT INTO user(uid, upw) values('admin', 'DH{**FLAG**}'); INSERT INTO user(uid, upw) values('guest', 'guest'); INSERT INTO user(uid, upw) values('test', ..
드림핵 blind sql injection advanced 롸업 비밀번호가 아스키코드와 한글로 구성되어 있다고 나와있다. 한글의 조합 경우의 수가 너무 많기 때문에 모든 문자에 대한 브루트포싱은 비효율적이다. 비트 연산을 이용해서 비밀번호의 비트를 알아내는 방식으로 공격해야 한다. CREATE DATABASE user_db CHARACTER SET utf8; GRANT ALL PRIVILEGES ON user_db.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpass'; USE `user_db`; CREATE TABLE users ( idx int auto_increment primary key, uid varchar(128) not null, upw varchar(128) not null ); INSERT INTO users (uid..
SQL Injection-1 DML(Data Manipulation Language)는 데이터베이스에서 데이터를 조회, 추가, 삭제, 수정하는 구문이다. SELECT uid, title, boardcontent FROM board WHERE boardcontent like '%abc%' ORDER BY uid DESC LIMIT 5 SELECT 구문을 활용한 예시이다. INSERT INTO board (title, boardcontent) VALUES ('title 1', (select upw from users where uid='admin')); INSERT 구문을 활용한 예시이다. UPDATE board SET boardcontent = "update content 2" WHERE title = 'title 1'; UPDATE..
드림핵 DOM XSS 롸업 @app.route("/vuln") def vuln(): param = request.args.get("param", "") return render_template("vuln.html", nonce=nonce, param=param) @app.route("/flag", methods=["GET", "POST"]) def flag(): if request.method == "GET": return render_template("flag.html", nonce=nonce) elif request.method == "POST": param = request.form.get("param") name = request.form.get("name") if not check_xss(param, name, {"nam..
드림핵 XS-Search 롸업 @app.route('/search') def search(): query = request.args.get('query', None) if query == None: return render_template("search.html", query=None, result=None) for note, private in notes: if private == True and request.remote_addr != "127.0.0.1" and request.headers.get("HOST") != "127.0.0.1:8000": continue if query != "" and query in note: return render_template("search.html", query=query, result=n..
DOM & Javascript DOM은 브라우저가 HTML 문서를 관리하기 위해 사용되는 객체 모델이다. var elem = document.getElementById("name"); elem.innerText = "My name is dream"; var div_elem = document.createElement("div"); var text_node = document.createTextNode("Welcome to dreamhack"); div_elem.appendChild(text_node); DOM에 있는 element의 값을 수정하는 코드이다. DOM Clobbering은 id, name등 HTML의 식별자를 이용해 js에서 DOM 객체들의 속성과 메소드 등을 변조하는 기법이다. document.getElementById..