Web Hacking

app.py import os from flask import Flask, request, render_template_string from flask_mysqldb import MySQL app = Flask(__name__) app.config['MYSQL_HOST'] = os.environ.get('MYSQL_HOST', 'localhost') app.config['MYSQL_USER'] = os.environ.get('MYSQL_USER', 'user') app.config['MYSQL_PASSWORD'] = os.environ.get('MYSQL_PASSWORD', 'pass') app.config['MYSQL_DB'] = os.environ.get('MYSQL_DB', 'user_db') my..
보통 sql injection을 사용할 때 '--' 주석을 많이들 사용한다. 예를들어 SELECT * FROM users WHERE uid='{uid}' 이런 sql 구문이 있다 그러면 uid에 ' or 1=1 -- 등을 입력 하면은 injection이 되겠지만 필자가 처음 저렇게 했을 때 오류가 나서 많이 당황했었다. 답은 띄어쓰기에 있다 ' or 1=1--이렇게 사용하면 오류가 나지만 ' or 1=1-- 이렇게 -- 주석 뒤에 띄어쓰기를 한 칸 해주면 오류가 나지않는다. 결론 : --주석 뒤에 띄어쓰기 한칸을 해주자.
blind sql은 비밀번호를 하나하나씩 알아내어 완전한 비밀번호를 찾는 sql injection 기법이다. 예를 들어 admin의 계정이 다음과 같다고 하자. username : admin password : P@ssword 그러면 평범한 blind sql injection은 다음과 같이 할 수 있다. Select * from users where username="admin" and substr(password, 1, 1)="P"; admin계정의 비밀번호 첫자리가 P이니깐 admin계정 정보가 출력될것이다. 반대로 P가 아닌 다른 문자면은 출력이 안될것이다. 이걸 이용해서 첫자리부터 끝자리까지 대입해서 확인하면 full password를 확인할 수 있다. 하지만 이걸 다 대입하기엔 문자에 숫자에 너..
#!/usr/bin/env python3 from flask import Flask, request import os app = Flask(__name__) @app.route('/' , methods=['GET']) def index(): cmd = request.args.get('cmd', '') if not cmd: return "?cmd=[cmd]" if request.method == 'GET': '' else: os.system(cmd) return cmd app.run(host='0.0.0.0', port=8000) 일단 보니 저 os.system()함수에 cmd 커맨드만 알맞게 입력해주면 풀릴 것 같았다. app.route를 보면 GET메소드만 허용되는걸 볼 수 있다. 그리고 if문을 보면..
php에서 리눅스 언어 예를들어, ls나 cat같은 명령어를 사용하고 싶을 때가 있다. 이 때 php에서도 셸 스크립트 언어를 사용할 수 있는데 내가 알아본 방법은 두가지이다. 1. system 함수 사용 간단하게 system함수 안에 사용하고 싶은 셸 명령어를 따옴표로 묶어 입력하면 된다. 2. 웹 셸 코드 작성 아예 웹에다가 셸 명령어를 작성할 수 있는 입력칸을 만드는 것이다. 위의 1번 방법보단 복잡하지만 한번 만들기만 하면 계속 사용할 수 있는 용이성이 있다.
프레딕
'Web Hacking' 카테고리의 글 목록 (19 Page)