보안 공부 79

SQL DB 정보 알아내는 구문 정리

1. DB 알아내는 법. select database() 2. table명 알아내는 법 SELECT table_name from INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'DB명' -table이 여러개일 때는 한 줄로 출력하기 위해 table_name 대신 group_concat(table_name)사용 -substr 3. column명 알아내는 법 SELECT column_name from INFORMATION_SCHEMA.COLUMNS WHERE table_name='테이블명' -column이 여러개일 때는 한 줄로 출력하기 위해 column_name 대신 group_concat(column_name)사용 ++ procedure analyse(); 사용 --..

webhacking.kr 29번 풀이

1. flag는 다른 테이블에 있다. 2. 현재 테이블에는 time, ip, file 컬럼이 존재한다. 이 문제는 sql의 문법을 이용해서 푼다. insert into 테이블명 values ('id1', 'pw1'),('id2', 'pw2') 같이 한번에 두 값이 들어갈 수 있다는 것을 알아야 한다. 먼저 파일 명을 file_name', 'time', 'ip주소')# 로 설정해서 보낸다. 1','123', 'ip_address')# 로 보내보았다. (ip는 자신의 것을 꼭 사용해야 함. ) 그러면 시간, ip주소, 파일 이름 순으로 정보가 정상적으로 나온다. 이를 통해 우리는 칼럼 순서가 시간, ip, 파일 이름이라는 것을 알 수 있다. 그럼 이제 2가지 정보를 보내보자. file_name1', 'tim..

webhacking.kr 59번 풀이

view-source 클릭 개발자 도구를 이용해서 살펴보니까 login할 때 쓰이는 아이디와 번호다 lid, lphone이네요! 소스코드를 정리해 봅시다. 1. lid와 lphone에 함수 addslashes를 적용한다. 2. lid와 lphone에에 해당하는 id와 lv를 선택한다. 3. id가 존재하면 lv를 출력한다. 4. 만약 lv==admin이면 문제해결 1. id와 phone에 함수 addslashes를 적용한다. 2. phone>=20이면 access denied 3. id에 admin(대소문자상관x)이 있으면 access denied 4. phone에 admin|0x|#|hex|char|ascii|ord|select(대소문자상관x)이 있으면 access denied 5. 테이블에 (id, ..

webhacking.kr 56번 풀이

BOARD에 admin과 guest에 대한 정보고 table 형식으로 있습니다. readme에 들어가면 access denied 라고 뜨고, hi~에 들어가면 hello~ 라고 뜹니다. 일단 소스코드와 쿠키에선 얻을 게 없었고, search칸에 이것저것 입력해 보았는데, hello값을 입력했을 때, guest에 대한 정보가 뜹니다. 그리고 h만 입력해도 guest에 대한 정보가 뜹니다. 아마도 search기능은 각 파일의 내용에서 해당하는 글자를 찾아주는것 같습니다. 그럼 당연히 admin에는 flag~가 있겠거니 싶어서 f를 검색해 보니까, 창에 admin이 떳습니다. 그리고 이것저것 시도해 보았습니다. 시도를 하면서 알게 된 것을 정리하자면, c언어의 strstr함수 아시나요?? 바로 문자열 속에서 ..

SQL injection(SQL 인젝션 공격)

SQL injection(SQL 인젝션 공격) SQL, 컴퓨터 보안, 해킹 기법, SQL 인젝션 공격이란 무엇일까요? 나무위키에 따르면, 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말합니다. 출처: https://namu.wiki/w/SQL%20injection 이렇게 말로 풀어 쓰니 어려워 보입니다. 예를 하나 들어서 설명해 보죠!! (생각보다 쉬우니 따라와 보세요!!) 흔하디 흔한 SQL 구문을 하나 가져왔습니다. select data from table1 where id='id입력값' and pw='pw입력값' 자 이렇게 table1이 있고, table1과 연결되있는 웹사이트가 하나 있다고 해봅시다. 웹사이트에 ID와 PW를 입력하면 d..

webhacking.kr 55번 풀이

문제에 입장하자마자 요 귀여운 아이가 나타납니다!! 마우스를 움직이면 마우스를 따라 움직이는 게 너무 귀엽네요 ㅎ(눈도 깜빡깜빡 거려요!) 그리고 저 슬라임?이 움직임에 따라 스코어 점수도 변합니다. score 밑에 보면 rank라는 링크가 있네요! 들어가 봅시다. 랭크 순위와, 아이디, 스코어가 순서대로 쭉 나열되어 있습니다. 그런데 보시면 스코어가 2147483647로 다 똑같습니다. (이러면 순위가 상관 없잖아요?) 어쨌든 저는 첫번째 2147483647를 클릭해 보았습니다. 그러면 위에 id : jusb3 // 2147483647 가 나타나고, URL도 https://webhacking.kr/challenge/web-31/rank.php?score=2147483647 로 바뀐걸 볼 수 있습니다. ..

webhacking.kr 51번 풀이(PHP md5함수 취약점)

wrong이라고 뜨네요 아마도 PW가 틀렸을 거라 생각됩니다. 오른쪽 밑을 보면 소스를 볼 수 있습니다. 소스를 한번 볼까요? 1. 먼저 post 방식으로 id와 pw를 입력받습니다. 2. id에 addslashes 함수를 적용하여 특수문자 앞에 역슬래시'/'를 붙여줍니다. 3. pw를 md5로 암호화합니다. 4. id='input_id', pw='md5('pw',true')'인 값이 테이블에 있으면 문제는 풀리게 됩니다. 일단 눈에 띄는게 있네요 바로 md5($_POST['pw'],true); 부분의 true 입니다. 이게 뭔가 싶어 검색을 해 봤더니 취약점이 검색어 자동 완성으로 바로 뜨네요 ㅋㅋㅋㅋ md5를 true와 같이 쓰면 취약점이 있나 봅니다. 자 그럼 취약점을 자세히 알아볼까요? md5 의..

webhacking.kr 53번 풀이

일단 소스를 살펴봅시당 먼저 소스코드를 해석해 보면, 1. tablename.php 파일을 불러온다. 2. 만약 answer변수가 hidden_table 변수값과 같다면 문제 해결 3. val변수값의 select, by를 필터링함(대소문자 상관 X) 4. a=val변수값에 해당하는 hidden_table 값을 가져온다. 먼저 val 값이 1, 2, 3, 4일 떄를 각각 입력해 봤더니 각각 1, 2, 3, 4를 내놓는다. 아마도 val값 입력할 때를 이용해 table이름을 알아야 할 거 같다. table 이름을 알아내는 가장 일반적인 방법은 SELECT table_name FROM information_schema.tables; 을 사용하는 것이다. 현재 사용하는 테이블의 이름만 알고 싶다면 WHERE t..

webhacking.kr 41번 풀이(마지막 부분 오류 해결 방법)

view-source를 통해 소스를 살펴보자. 짧아서 좋다 ㅎㅎ 일단 php부분만 따로 살펴보자. $_FILES의 속성을 밑 여는 글에 정리해 놓았습니다 참고하세요!! 더보기 $_FILES['userfile']['tmp_name'] - 웹 서버에 임시로 저장된 파일의 위치. $_FILES['userfile']['name'] - 사용자 시스템에 있을 때의 파일 이름. $_FILES['userfile']['size'] - 파일의 바이트 크기. $_FILES['userfile']['type'] - 파일의 MIME 타입을 가리킴. 예를 들어, text/plain이나 image/gif. $_FILES['userfile']['error'] - 파일 업로드할 때 일어난 오류 코드를 알려주는..

webhacking.kr 36번 풀이

영어를 해석해 보면 index.php를 vi 편집기로 수정하다가 날려먹었다는 것 같은데, index.php 파일을 수정중이던 swap파일인 .index.php.swp 을 다운 받아 줍시다. vi 편집기: 리눅스 편집기 리눅스 파일 편집 중에 갑자기 종료되면 swap 파일이 생성되는 경우가 있습니다. swap 파일의 자세한 이야기 --> https://dang-dang12.tistory.com/8 vi 에디터 비정상 종료되었을 때 파일을 수정하기 위해 vi 에디터를 사용하다가 비정상적으로 종료했을 때 발생되는 문제와 해결법을 알아본다. 먼저 test.txt 파일을 vi 에디터를 통해 수정해 보았다. 위의 내용이 원래 test.txt파일 dang-dang12.tistory.com 자 그러면 https://w..