[EVI$ION] CTF 3문제 챌린지 2

beanii·2023년 5월 3일
0

CTF

목록 보기
3/7
post-thumbnail

💫[Dreamhack] login filtering

https://dreamhack.io/wargame/challenges/336/

<우리의 목표>
: 가지고 있는 계정으로 필터링을 우회해서 로그인하기!

일단 문제 파일에는 아무것도 없는 걸 확인

문제 페이지에 접속하면 로그인할 수 있는 화면이 뜨고,
get source을 누르면 아래와 같은 코드를 보여준다

if($id=='guest' || $id=='blueh4g')을 만족시키지 않을 때 FLAG를 주는 것을 확인

주석을 보면 이 사람은 지금 2개의 계정을 가지고 있다
guest / guest
blueh4g / blueh4g1234ps

먼저 guest/guest로 로그인 -> your account is blocked

여기서 중요한 것은 ✨MySQL은 대소문자 구분을 안한다!✨

Guest/guest로 로그인 -> flag!!!

🔑 DH{2e0d4c7cf3439496098216db17c52b2c922a2124}



💫[Dreamhack] simple_sqli_chatgpt

https://dreamhack.io/wargame/challenges/769/

나도 드디어 chatGPT 문제!!
(그러나 chatGPT를 사용하진 않았다...)

문제 페이지에는 userlevel로 로그인하는 기능밖에 없다

문제 코드를 보면

guestadmin 계정이 있다

insert into users(userid, userpassword, userlevel) values ("guest", "guest", 0), ("admin", "{binascii.hexlify(os.urandom(16)).decode("utf8")}", 0);

그리고 아래 쿼리문으로 로그인 정보를 확인한다

select * from users where userlevel='{userlevel}'

따라서 userlevel 입력 칸에
0' and userid = 'admin을 입력하면

flag get~

🔑 DH{chatGPT_told_me_a_lullaby}



💫[Dreamhack] strcmp

https://dreamhack.io/wargame/challenges/328/

strcmp (문자열 비교 함수)를 우회하라는 문제이다

먼저 strcmp에 대해 알아보면

strcmp(string1, string2)

의미
0보다 작음string1이 string2보다 작음
0string1이 string2와 같음
0보다 큼string1이 string2보다 큼

문제 페이지를 보면 password를 입력하게 되어있다

view-source를 클릭하면 아래 코드를 보여준다

if(strcmp($_POST['password'], $password) == 0)
	echo "Congratulations! Flag is <b>" . $FLAG . "</b>";

이 부분을 보면 입력한 password와 실제 password를 비교해서 같으면 flag를 출력한다

✨하지만 php의 strcmp함수는 문자열과 배열을 비교하면 같지 않더라도 0이 출력되는 취약점이 있다고 한다!!✨


⭕ 풀이방법1 - 개발자도구 이용하기

password 부분을 password[]로 바꾸고 chk를 다시 누르면

flag를 얻을 수 있다!


⭕ 풀이방법2 - Burp suite 이용하기

아래 사진은 0000을 입력했을 때 모습이다

0000[]로 바꿔주고 forward하면 마찬가지로 flag가 출력된다!

🔑 DH{aede9e7fa4ccb8225f12040a16bdfd37c0c5d2f0}


0개의 댓글

관련 채용 정보