2024. 5. 4. 10:10ㆍhacking : p_study/Dreamhack
📌 CTF 문제 풀이
두번째 문제를 풀겠다.
문제 설명을 보니 로그인 시 계정의 정보가 출력되는 웹 서비스이고, sql injection취약점을 통해 플래그를 획등하는 것이다.
sql injection에 대해 공부하긴 했었는데, 다까먹어서 공부를 추가로 해야할 것 같다.
일단은 문제파일 다운로드 받고, 웹서버를 생성했다.
이렇게 생겼다.
query보니까 sql 인젝션이 생각이 조금씩 나는 것 같기도하고 일단 아무거나 대입해봤다.
아무런 변화가 없었고, 코드를 살펴보았다.
위 정보를 통해 admin, apple을 입력했을 때 아래와 같이 뜨는데, db에 이렇게 쌓이는 건가보다.
문제 설명에서 주어졌던 , 문제에서 주어진init.sql파일의 테이블명과 컬럼명은 실제 이름과 다릅니다.
라는 부분이 마음에 걸린다..
진짜 이름이 flag is , DH{sam , ple, flag 인건가요...?
일단 여기까지 해보고 더이상 진전이 없어서 찾아봤다.
admin' or '1'='1를 uid에 넣고 upw에는 아무 값을 넣고 제출하면 아래 처럼 나오므로 sql인젝션이 가능한 사이트 라는 것을 알 수 있다한다.
그렇기때문에 union구문과 information_schema 함수를 사용하여 플래그가 저장된 테이블과 컬럼명을 알아 낼 수 있을 것 같다고 하는데, union구문이 뭘까?
uid에 **admin' union select table_name,null,null,null from information_schema.tables where table_schema = 'secret_db'-- -**를 넣으면 secret_db에 있는 테이블이 출력되는데,
위 코드에서 null이 들어가는 이유는 union 구문은 컬럼 개수가 일치해야하기 때문이라고 한다.
위에서 출력된 테이블 중 플래그가 있는 테이블은 ‘onlyflag’ 라는 테이블이란 것을 알 수 있는데,
코드를 살짝 바꾸어 ‘onlyflag’ 테이블의 컬럼을 출력하는 코드를 작성할 수도 있다.
**admin' union select column_name,null,null,null from information_schema.columns where table_name = 'onlyflag'-- -**이를 uid에 넣고 제출하게 되면 아래와 같이 출력된다.
근데 난 왜 admin이 없지 .. 무튼 이렇게 나오게 된다.
우선, 위를 통해 ‘onlyflag’에 플래그가 있다는 사실을 알았고, ‘onlyflag’테이블에 있는 칼럼은 idx, sname, svalue, sflag, sclose 인것을 알 수 있다.
정보를 종합해보면, ‘onlyflag’ 테이블에 있는 컬럼을 출력하면 플래그를 얻을 수 있겠구나 라는 생각에 이르러야한다.
→ gruop_contact 함수를 사용하여 모든 각 컬럼에 저장된 플래그 조각을 출력할 수 있다고한다.
admin' union select sname,group_concat(svalue,sflag,sclose),null,null from onlyflag-- -
코드는 위와 같고 이 코드를 uid에 넣고 제출을 하게 되면 플래그 값이 나오게 된다고한다.
위에서 혼자 풀어나갈땐, 뭔가 생각보다는 수월한 것 같고, 잘 풀리는 듯 보였으나, sql인젝션과 관련된 내용을 다 까먹은 상태라 접근자체가 어려웠던 것 같다.
생각보다 되게 복잡하다는 걸 느꼈고,, 추가적인 공부가 필요할 것같다.
[ 참고한 학습 자료 ]
[LEVEL-1] baby-union — 쿼카가 코딩을 하면? (tistory.com)
SQL Injection 이란? (SQL 삽입 공격) — 보안과 개발을 다 하고싶은 욕심쟁이 (tistory.com)
'hacking : p_study > Dreamhack' 카테고리의 다른 글
5주차_CTF과제(Dreamhack : simple-web-request) (0) | 2024.05.10 |
---|---|
5주차_CTF과제(Dreamhack : pathtraversal) (0) | 2024.05.10 |
4주차_CTF과제(Dreamhack : phpreg) (0) | 2024.05.04 |
3주차_CTF과제(Dreamhack : Flying Chars) (0) | 2024.04.17 |
3주차_CTF과제(Dreamhack : php7cmp4re) (0) | 2024.04.17 |