정보보안 및 해킹/CTF(40)
-
[Normaltic's CTF] SQL Injection 4
내용만 봐서는 블라인드인지 에러베이스드인지 잘 모르겠네요.일단 부딫혀봐야겠습니다.로그인을 먼저 해봅니다.똑같이 302로 index.php로 로그인을 하고있네요.음.. 이 부분에서 잠시 망설였습니다.union으로도 접근할 수 있지 않을까 하는 생각이..생각만 하다가 응급실을 가는 바람에 아직 돌파구를 찾지 못해서, 만약에 찾게 된다면 추후에 추가하도록 하겠습니다.일단 에러베이스드를 먼저 테스트 해봅니다.닉네임 다음에 싱글 따옴표를 하나 더 붙여보겠습니다.에러베이스드입니다! 에러메세지가 잘 나오고 있습니다.첫 번째로 Database이름을 알아내겠습니다.Database이름은 sqli_2_1이네요.다음은 테이블 이름입니다.테이블 이름은 flag_table이네요.다음은 컬럼 이름입니다. 진도가 쭉쭉 나가네요.음...
2024.06.05 -
[Normaltic's CTF] SQL Injection 3
문제를 다 풀고 제 몸뚱아리도 에러가 났습니다. 응급실에...플래그를 찾아봅시다...우선 계정이 주어졌으니 로그인을 하면 어떻게 로그인이 이루어지는지 절차를 볼까요?음 302네요! 302를 통해서 index.php로 가는가봅니다.302가 아니면 로그인에 실패했다는 의미겠지요우선 닉네임 다음에 싱글 따옴표 하나를 더 붙여봅니다.에러 메세지가 뜨는지 확인하기 위함입니다.에러메세지가 뜨네요.Burp Suite으로 확인하지 않아도 뜨네요그럼 일단 사용하고 있는 DB는 Mysql이니, extractvalue()를 사용하도록 합니다.Database 이름부터 알아보도록 합시다.Database 이름은 sqli_2라고 합니다.다음은 테이블 이름을 알아볼까요?확실히 블라인드보다는 시간이 덜 들어서 좋습니다.....테이블 ..
2024.06.05 -
[Normaltic's CTF] SQL Injection Blind Practice
이상한 웃음플래그를 찾아봅시다. 블라인드입니다. 아무것도 보이지 않는 상태에서 참과 거짓만을 이용하여 판별해야 한다는 것이죠.우선 normaltic을 검색해보면, 쿼리문이 저렇게 되는군요.그럼 일부러 틀린 닉네임을 검색해볼까요?노말틱 여러명.. 분신술입니다. 복수형이 되었습니다.보시다시피 쿼리문이 참일 경우에는 존재하는 아이디입니다, 쿼리문이 틀린 경우에는 존재하지 않는아이디입니다. 라는 문구를 도출합니다.select문이 필터링 되는지 확인 여부와, 참인 조건을 넣었을 때 같은 결과가 나오는지 확인 절차를 거칩니다.필터링 되고있지도 않고, 참인 조건을 넣었을 때(select 'test') = 'test'제대로 쿼리문이 참 으로 읽혀지고 있습니다.그럼 본격적으로 Database부터 확인해보겠습니다우선 Da..
2024.06.05 -
[Normaltic's CTF] SQL Injection Error Based SQLi Basic
해당 게시물을 보기 전에 이 게시물을 보고 오십시오!본 포스팅에서는 데이터베이스, 테이블이름, 컬럼이름, 데이터추출 등 상세한 내용을 다루지 않을 것 입니다.두 잇 두 잇 츄우 두두두두잇 츄우플래그를 찾으세요! Error Based이니까 에러 메세지가 나오는 문제일겁니다!일단 아이디 란에 normaltic이 적혀있으니 검색해봅니다.친절하게 아래쪽에 쿼리문이 출력됩니다.싱글 따옴표로 감싸져 있다는 것을 알았으니, 싱글 따옴표를 하나 더 넣으면 에러메세지를 띄웁니다.원래는 500에러메세지를 띄워야 할 것을, 백엔드쪽 개발자 분들이 개발 및 유지보수에 용이하도록 넣은 try / catch 코드가 지나치게 상세한 오류메세지를 도출할 경우 저렇게 상세한 내용을 나타내게 됩니다.그럼 프로세스대로 공격을 진행해봅니다..
2024.06.05 -
[Normaltic's CTF] SQL Injection Practice 2
연습문제 입니다. doldol의 정보만 도출시키는 것이 목적입니다.마이페이지 같은 곳인가봅니다.내 정보를 검색하는 곳입니다.일단 비밀번호는 1234이니까, 입력해줍니다.닉네임은 normaltic이었네요. 관리자였네요?그럼.. 전체 데이터를 한 번 추출해보기 위해서1234' or '1'='1을 입력합니다.select * from member where id = 'normaltic' and pass = '1234' or '1'='1'id='normaltic'과 pass='1234'가 먼저 계산되어 참이 되고,뒤의 '1'='1'과 or문이 계산되어도 또 참이 되어서결과적으로는 맞는 쿼리문이 되어서, 전체 데이터가 도출됩니다.다 털렸당이 중 doldol의 정보만 도출하기 위해 앞의 정보는 일부러 틀린 정보로 빼..
2024.05.29 -
[Normaltic's CTF] SQL Injection Practice 1
연습문제입니다.게임 검색 사이트인 것 같습니다.게임을 잘 안해서... 검색을 해도... 뭔지 모릅니다...일단 그래도 Overwatch는 알기때문에...검색해봅니다.저 score는 뭘까요?그런데 over로만 검색해도overwatch가 나옵니다.여기서 Like 구문을 사용한다는 것을 알 수 있습니다.그럼 바로 SQL Injection이 통하는지 확인하기 위해 %' and '1%' = '1을 사용합니다.왜 사용하는지 모르신다구요?그러면 이 게시물을 보고 오시면 훨씬 이해가 쉬우실겁니다.이렇게 검색을 해도 검색이 되는 것을 확인할 수 있습니다.그러면 공격이 통한다는 얘기가 되네요그럼 바로 union공격을 위해 컬럼 갯수를 세러 갑니다.3줄까지는 잘 도출이 되고.. 4줄까지도 도출이 잘 되는 것을 확인할 수 있..
2024.05.29