NOT4DOG
방명록 RSS 태그 글쓰기 관리자
 
[CTF] CodeEngn Malware L04 문제 Write-up
CTF Write-up 2022-02-07 17:28:14

반응형

문제) APM(Apache, PHP, MySQL) 환경의 사이트를 운영중인 L씨는 현재 SQL Injection 악성코드의 공격을 받고 있다
          PHP 설정파일에서 어떤 옵션을 설정해야 안전한가?

 

이 문제는 단순히 PHP 설정파일에서 SQL Injection을 조금이나마 미연에 방지하기 위한 옵션을 묻고있다.

 

우선 SQL lnjection이란?

SQL 인젝션은 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스

공격할 수 있는 공격방식을 말한다. 주로 사용자가 입력한 데이터를 제대로 필터링 하지 못했을 경우에 발생한다.

공격의 쉬운 난이도에 비해 파괴력이 어마어마하기 때문에 시큐어 코딩을 하는 개발자라면

가장 먼저 배우게 되는 내용이다. 이러한 injection 계열의 취약점들은 테스트를 통해 발견하기는 힘들지만

스캐닝툴이나 코드 검증절차를 거치면 보통 쉽게 발견되기 때문에 탐지하기는 쉬운 편이다.

 

쉽게 설명하자면 어느 홈페이지에 이름 입력칸 하나가 존재한다고 가정하자.

그 홈페이지의 서버에는 SQL 언어로 이루어진 학생정보 DB가 존재한다.

 

  INSERT INTO students (이름) VALUES ('학생 이름');

 

그 입력창에 이름 Field 라는 표시가 되어있더라도 필터링 식에 대한 Secure Coding이 되어있지 않은경우,

입력칸에 입력한 정보는 서버로 전송된다.

이를테면 보통 사람들은 확인을 위해 이름 입력칸에 본인의 이름만을 입력할 것이다.

하지만 악의적인 목적을 지닌 사용자의 경우 Secure Coding이 되어 있지 않은 홈페이지를 스캔하여

입력칸에 이름이 아닌 SQL 질의문을 삽입하여 서버로 전송 할 경우,

 

  INSERT INTO students (이름) VALUES ('not4dog'); DROP TABLE students;--');

 

이름 값 뒤에 DROP TABLE students;--'); 이라는 주석처리 구문으로 인해

students 테이블, 즉 모든 학생정보가 삭제되고 테이블의 구조 또한 같이 삭제된다.

 

이 같은 상황을 조금이라도 방지하고자 PHP에는 addslashesmagic_quotes_gpc 이라는 옵션이 있다.

 

magic_quotes_gpc란? php.ini 파일에 작성되어 있는 설정값으로 기본값은 on이며,

자동적으로 모든 GET, POST, COOKIE Data에 addslashes()처리를 한다.

이 설정을 통해 SQL Injection에서 사용자의 데이터 입력값에 쿼리를 조작하기 위한 ' 등이 있을 경우,

이를 \ 처리해주므로 공격을 방지할 수 있다.

 

addslash란? 데이터베이스 Query에서 Field값으로 저장하기 전에 사용되는 함수이다.

만일 문자열에 작은따옴표('), 큰따옴표("), 백슬래시(\), NULL 문자가 포함되어 있다면,

이 문자들 앞에 백슬래시(\)를 붙여 특수 문자가 순수한 하나의 문자로 인식되도록 해준다.

 

  I'm a boy  →  I\'m a boy

 

만약 데이터베이스에 저장하기 전에 addslahses를 사용하지 않는다면,

데이터베이스의 필드값에 저장되는 문자열 가운데 특수 문자가 포함될 경우,

그 문자가 하나의 일반적인 문자가 아닌 특수 문자로 인식되어 오류를 일으키거나 잘못된 결과를 초래할 수 있다.

 

문제에서 함수가 아닌 php.ini에서 설정할 수 있는 옵션을 물어보았으므로,

정답은 magic_quotes_gpc 가 된다.

반응형


[CTF] CTF-D 누군가 부정행위를 했다는... 문제 Write-up
CTF Write-up 2022-02-03 16:23:33

반응형

문제) 누군가 부정행위를 했다는 증거가 있는 ZIP파일을 찾았습니다.

          하지만 왠지 모르게 모든 게 망가졌습니다. 무슨 일인지 알아봐주시겠습니까?

 

문제와 함께 evidence.zip 파일을 제공한다.

evidence.zip 압축 해제 실패

하지만 문제에서 말한대로 압축이 해제되지 않는 망가진 zip 파일로 보인다.

 

HxD를 사용 해 .zip 파일의 구조를 살펴보기로 하였다.

evidence.zip Hxd 확인

파일 시그니처(50 4B 03 04)에는 문제가 없어 보인다.

하지만 HxD의 탐색 기능을 사용해 각종 시그니처 코드를 탐색한 결과,

 

50 4B 01 02로 시작하는 다수의 파일들을 발견할 수 있었다.

이 파일들이 evidence.zip 파일 내부에 있던 손상된 파일임을 짐작할 수 있었다.

손상된 evidence.zip 내부의 파일

 

해당 부분을 유심히 보던 도중 'galf' 라는 문자열을 발견했다.

문자열을 뒤집어 읽으면 flag라는 문자열이 되고, 나는 손상된 파일들의 각 문자열들을

이어 적으면 FLAG를 획득할 수 있다고 생각했다.

FLAG의 조각들

 

사진에 나오지 않은 부분까지 이어 적으면 FLAG를 획득할 수 있다.

flag{th3_vi11i4n_w3_n33d_#freeleffen}

반응형


[CTF] CTF-D DefCoN#21 #2 문제 Write-up
CTF Write-up 2022-01-28 12:21:40

반응형

문제) Betty는 Gregory와 함께 만남으로써 그녀의 행적을 감추려고 한다.

          Round 2 패킷을 사용해서 다음의 질문에 답하시오.
          그들은 어느 도시에서 만납니까?

 

문제와 함께 round2.pcap을 제공한다.

우선 NetworkMiner 툴로 확인해보았다.

 

살펴보던 중, Betty와 Gregory가 나눈 이메일 메세지를 확인할 수 있었다.

이메일 본문 확인

확인해보면 어디서 만나는지 확인하기 위해 패스워드(S3cr3tVV34p0n)이 필요한것으로 보인다.

 

계속 메세지를 살펴보다가 이런 메세지를 확인할 수 있었다.

DCC SEND r3nd3zv0us 2887582001 1024 819200

IRC의 하위 프로토콜(DCC)로 Data를 교환한 것으로 보인다.

 

IRC란? 인터넷 릴레이 챗(Internet Relay Chat)은 실시간 채팅 프로토콜이다.

채널이라 불리는 토론 포럼에서 그룹 대화를 하기 위해 설계되었으나 

개인 메시지를 통한 1:1 소통, 그리고 파일 공유를 포함한 채팅 및 대화 전송도 가능하다.

 

DCC로 주고받은 파일을 찾기위해 와이어샤크를 사용했다.

앞서 NetworkMiner에서 확인한 파일크기(819200), 포트번호(1024)가 동일한 파일을 찾을 수 있었다.

 

해당 파일을 Raw Data로 확인해보자.

주고받은 파일의 Raw Data

이 Raw Data를 Hex Code로 변환시켜 파일로 만들어 주었다.

HxD 사용

다만, 앞서 나눈 이메일을 확인해보았을때 이 파일은 암호화가 되어있어 확인이 불가능하다.

이메일을 확인하는 과정에서 발견한 패스워드(S3cr3tVV34p0n)로 복호화를 해주기 위해

많이들 사용하는 VeraCrypt를 이용했다.

VeraCrypt 사용
복호화 성공 및 마운트

 

복호화에 성공해 A:에 마운트해 주었다. 이제 A:에 접근해보자.

A: 내부 파일
LV.jpg 

A: 내부에 있는 LV.jpg 파일을 확인해보면, Betty와 Gregory가 만나는 장소(FLAG)는

LAS VEGAS임을 확인할 수 있다.

반응형


[CTF] CTF-D hash 문제 Write-up
CTF Write-up 2022-01-27 15:19:01

반응형

문제) Hash

          Password : B4JAkL4uT1bUk0t4J4kaRT4

 

문제와 함께 패스워드가 설정된 clue.zip 파일과 wallpaper.jpg 파일을 준다.

우선 wallpaper.jpg 부터 살펴보자.

 

wallpaper.jpg

첫번째로 스테가노그래피 등의 기법을 의심해볼 수 있다.

하지만 각종 툴과 Hex Code 확인 결과 이상한 점은 발견되지 않았고, 

그림파일의 EXIF 정보를 확인해보았다.

 

EXIF 정보란? 디지털 카메라 등에서 사용되는 이미지 파일 메타데이터 포맷으로,

카메라가 촬영한 사진, 녹음파일에 시간 등의 각종 정보를 담기 위해 개발되었다. 

즉, JPEGTIFF 6.0과 RIFFWAV 포맷에 이미지나 소리에 대한 정보를 추가로 기록할 수 있다.

 

각종 사진관련 CTF 문제에서 EXIF 정보가 실마리가 될 수 있다. 

EXIF 정보 확인

EXIF 정보를 확인한 결과 XP Comment 부분에 문자열이 적혀있는것을 확인했고,

Base64 Incoding 문자열로 짐작할 수 있다.

 

Base64란? 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는

공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.

 

온라인 Base64 Decoder로 확인한 결과는 다음과 같다.

Base64 Decoder 결과

9b1a81fe0c720c0de21d815e435d291d

이 문제의 제목은 hash 이다. 즉, 이 복호화된 문자열은 hash 함수 중 하나의 값일 확률이 높다.

우선 제일 많이 쓰이는 md5 hash 값으로 조회해 보았다.

md5 hash Decrypt

다행히 값을 찾을 수 있었다. 다만 이 값이 FLAG가 아니라,

앞서 패스워드가 설정되어있던 clue.zip 파일의 암호임을 짐작할 수 있다.

 

clue.zip 내부 파일

clue.zip 내부에는 또 다른 패스워드가 설정되어있는 jokerBrangkas.zip 파일과 확인 가능한 history.txt 파일이 있었다.

 

The joker adalah seorang Psiko-kriminal y4ng penuh dengan kekerasan.dalam kisah batman versi apapun, the Joker selalu 4da dan menyebabKan berbagai macam tragedi, 
bahkan dalam kehidupAn Pribadi batman.identitas jokeR yang asl1 tidak pernah jelas,13ahkan namanya tidak pernah terUngkap.joker sendiri sering kebingungan Mengenai apa yang sebetulnya terjadi pada dirinya. 

dalam detective comics, joker dikatakan adalah seorang kriminal yang dikenal sebagai red hood.di kisah ini, 
dia adalah seorang ilmuwan yang mencoba mencuri dari perusahaan tempat dia bekerja.k3jar-kejaran dengan Batman, 
joker jatuh ke dalam 9enangan sampah kimIa yang mengelupas kulitnya, 
merusak rah4ng dan mengaCaukan pikirannya.

the killing joke mengungkap bahwa joker sesungguhnya adalah seorang teknisi di sebuah perusahaan kimia yang meninggalkan pekerjaannya untuk menjadi pelawak, 
impiannya yang sesungguhnya. namun dia gagal dan jatuh melarat. untuk menyuport istrinya yang sedang hamil, 
dia terpaksa mau diajak kerjasama oleh dua orang kriminal yang berencana merampok perusahaan tempat joker dulu pernah bekerja. saat membantu dua kriminal itu, 
istri joker di rumah mengalami kecelakaan yang menewaskannya bersama bayi yang sedang di kandungnya tersebut.

joker dan dua kriminal segera tertangkap oleh petugas keamanan, lalu bekejar-kejaran dengan batman yang segera tiba di tempat. 
joker jatuh ke dalam genangan sampah kimia yang merusak tubuhnya. tidak tahan dengan segala yang terjadi, joker akhirnya kehilangan kewarasannya.

kisah lain menyebutkan bahwa joker adalah seorang anggota gangster yang sadis yang bekerja pada sekelompok mafia di kota gotham. 
pada suatu hari, disiksa lalu kabur dan tanpa sengaja, tersiram cairan kimia yang merusak tubuhnya.

history.txt 파일의 내용이며, 번역기를 사용해보았더니, 인도네시아 언어로 확인된다.

jokerBrangkas.zip 파일의 패스워드를 찾던 도중 이상한 점을 발견할 수 있었다.

 

대부분 소문자 알파벳으로 이루어진데 반해,

문장 사이사이 위치가 적절치 않은 대문자 알파벳과 숫자들이 있었고,

대문자와 숫자만 따로 적어보기로 했다.

TP4J4KAPR113UM3B9I4C

 

그 결과 TP4J4KAPR113UM3B9I4C 라는 문자열이 나왔고, 이를 패스워드가 설정되어있는

jokerBrangkas.zip 파일의 패스워드로 사용해 보았다.

jokerBrangkas.zip 내부 파일

 

PL49!.txt 파일에 접근이 가능했고, FLAG를 얻을 수 있었다.

FLAG 획득

반응형