본문 바로가기

분류 전체보기

(160)
[Lord of SQL Injection] 2번 cobolt 1번 문제와 같다. id값이 admin이면 문제가 풀린다. //(pw부분이 md5라 md5를 이용하는줄 알았다) 똑같은 방법으로 조작된 쿼리를 입력해준다 ?payload = ?id=admin%27%23
[Lord of SQL Injection] 1번 gremlin los 1번문제이다. php코드 끝문장에 if result가 id면 solve가 된다고 나와있다. id값만 있으면 되니까 id값에 admin을 넣어주고 쿼리문을 작은따옴표(')로 닫아주고 나머지 뒷부분을 주석처리 해주자. mysql이니 주석처리는 #으로 가능하다 여기서 #은 url인코딩해서 넣어주도록 하자 payload = ?id=admin%27%23
데이터 저장소 공격 (SQL Injection) 거의 모든 애플리케이션은 애플리케이션 내에서 처리되는 데이터를 관리하기 위해 데이터 저장소에 의존한다. 흔히 사용하는 데이터 저장소는 SQL 데이터베이스, XML 기반 저장소, LDAP 디렉터리이다. 인터프리터 언어 안에 공격 코드 삽입 인터프리터 언어로 개발된 것들은 사용자가 입력한 데이터를 받은 후 변조하고 실행함 -> 인터프리터에 의해 처리되는 코드는 사용자가 제공하는 데이터와 프로그래머가 작성한 명령과 뒤섞이게 된다. 어떤경우 공격자의 입력값이 인터프리터 문법으로 인해 데이터를 망가뜨리거나 입력값이 마치 정상적으로 입력되는 것이라고 생각한다. 로그인 우회 SELECT * FROM users WHERE username = 'hoon' and pw = '1' 이 쿼리는 username 칼럼 값이 ho..
파이썬 정규식 (RegEx) Python에는 re정규식 작업에 사용할 수있는 이라는 내장 패키지가 있다 import re 이렇게 가져다가 쓰면되는데 re안에 문자열을 검색 할 수 있는 함수세트가 있다. findall, search, match , split, sub findall : 일치하는 모든 것을 리스트 형태로 반환한다. search : 주어진 문자열중 일치하는지 확인한다. match : 주어진 문자열이 처음부터 일치하는지 확인한다. split : 일치 할 때마다 문자열이 분할 된 목록을 반환한다. sub : 하나 이상의 일치 항목을 문자열로 바꾼다. 메타문자 [] : 문자클래스 , 아무거나 집어넣기 가능 ex) [1-9] 1~9까지를 의미함 . : 하나의 문자를 의미 ex) ab.d -> abcd, abdd, abed, ab..
Data Base 기초정리 빠르게 가장 기초적인 DB에 대해 정리한다. 리눅스는 우분투를 사용했으며 DB는 mysql을 사용할것이다. 설치 방법 $ sudo apt update $ sudo apt install mysql-server $ sudo mysql_secure_installation 우선 DB중 가장 기초인 테이블 구조부터 알아보자 튜플(Tuple), 레코드(Record), 행(Row) : 테이블에서 행을 의미한다. 튜플은 릴레이션에서 같은 값을 가질 수 없습니다. 열(column), 속성(Attribute), 필드(field) : 테이블에서 열을 의미한다. 테이블을 사용하기전 어떤 데이터베이스에서 테이블을 사용할지 설정해줘야 한다. 이제 테이블을 생성해보자 테이블을 만들었으니 이제 테이블안에 데이터를 넣어볼 것이다 in..
enumerate와 list comprehension 공부는 했지만 잘 사용하지 못하는 것에 대한 함수다. enumerate 열거하다 라는 뜻이다. 대게 for문에 사용되는데 range -> 정수 집합을 순회하는 루프를 실행할때 유용하고 enumerate는 리스트를 순회하거나 리스트의 인덱스를 같이 알아야 하는 경우 쓰기 유용하다. food =['buger', 'pizza', 'kimchi', 'chicken'] print(list(enumerate(food))) 여기서 인덱스를 따로 설정해주지 않으면 0으로 자동설정되는데 인덱스를 따로 설정해 줄 수 도있다. food =['buger', 'pizza', 'kimchi', 'chicken'] print(list(enumerate(food, start=2))) for과 같이 써보면 today_diner =['..
선택정렬 (Selection sort) 선택정렬 (Selection sort)은 데이터 전체에서 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환하는 방식으로 정렬한다. 버블정렬은 인덱스를 이동하면서 교환이 필요하면 즉시 교환했다. 하지만 선택정렬은 두항을 비교하고 작은 값이 저장된 요소값이 아닌 그 배열의 인덱스를 따로 저장한다. 그리고 단계가 끝마칠때 단 한번만 교환한다. 5,1,3,4,2 선택정렬 (오름차순)으로 정렬하기! 1단계 5 [0] 1 [1] 3 [2] 4 [3] 2 [4] 선택된 항 = 0번째 인덱스 (현재 기준점 [0] ) 0번째 1번째항 비교, 값은 그대로 두고 기준점만 변경 현재 기준점이 ( [1] )로 변경됨 이후 기준점 [1] 을 기준으로 나머지 2,3,4번째 항을 비교함 이후 마지막으로 최초 기준인덱스였던 0번째 인..
버블 정렬 (Bubble Sort) 버블 정렬(Bubble Sort)은 서로 연접한 두 항으 계속해 비교하는 방식이다. n번째 항이 있다고 가정할때 0번째 항과 1번째 항 비교, 1번 항 2번 항 비교, 2번 항 3번 항 비교해서 마지막 두항 n-1번 항 n 번항을 비교후 마지막 항의 정보가 결정된다. 오름차순으로 정렬할 경우 가장 큰값을 먼저 결정하는 특징이 있다. `3, 4 ,1 ,5 ,2` 를 버블정렬 해보겠다. 1단계 0번항 1번항 비교 (유지) 3 4 1 5 2 1번항과 2번항 비교 (교환) 3 1 4 5 2 2번항과 3번항 비교(유지) 3 1 4 5 2 3번항과 4번항 비교(교환) 3 1 4 2 5 1단계 완료 2단계 다시 0번항 1번항 비교 (교환) 3 1 4 2 5 1번항과 2번항 비교 (유지) 1 3 4 2 5 2번항과 3..