/ 50
로봇 이미지가 있다.
로봇...로봇...로봇...robots.txt?!
robots.txt의 내용
역시나..
해당 페이지로 이동하면 플래그가 나온다.
FLAG : HackCTF{w3lcome_to_s1mple_web_h3cking!}
Hidden 50
5번 파일에 플래그가 있다고 한다.
페이지에는 1번부터 4번까지의 버튼이 있다.
버튼을 클릭하면 http://ctf.j0n9hyun.xyz:2023/ ?id=1 로 이동하는 것을 알 수 있고, 여기서 id 값을 5로 입력해 주면 플래그가 나온다.
FLAG : HackCTF{idx_is_so_s1m3le_ctf}
Button 50
페이지 소스를 까서 submit의 value값을 button에서 flag로 변경해주고 버튼을 클릭하면 플래그가 출력된다.
FLAG : HackCTF{0k4y...php_c4nn0t_cr34t3_4_butt0n}
보물 100
page 값에 모든 정수값을 대입해봐야 하는 것 같다.
burp suite을 이용해서 1부터 10000 까지 시도하도록 했고, 중간에 길이가 다른 응답이 날라와서 확인해 보니 플래그가 있었다.
burp suite을 이용했다.
FLAG : HackCTF{0hhhhh_5o_g0od_try!}
Guess me 100
게싱문제는 아니다.
$filename의 값을 'secret.txt'로 선언한 뒤에 extract($_GET);을 이용해 값을 받고 있다.
따라서 우리는 $filename의 값을 바꿀 수 있고, $filename의 값을 아무 값으로 변경해 준다면, 해당 파일은 존재하지 않을 것이므로 -> guess에 아무 값도 입력해주지 않는다면 $guess === $secretcode 가 TRUE가 되어 플래그가 나올 것이다.
http://ctf.j0n9hyun.xyz:2030/?filename=1&guess=
성공이다.
FLAG : HackCTF{3xtr4c7_0v3rr1d3ds_pr3vi0u5_kn0wn_v4r1abl35}
Read File 100
http://ctf.j0n9hyun.xyz:2021/flag.php -> Access Denied
http://ctf.j0n9hyun.xyz:2021/?command=http://ctf.j0n9hyun.xyz:2021/flag.php -> X
http://ctf.j0n9hyun.xyz:2021/?command=http://ctf.j0n9hyun.xyz:2021/flflagag.php -> Access Denied
flag 문자열이 필터링 되고 있음을 확인. 권한을 얻기 위해 localhost로 바꿔준다.
http://ctf.j0n9hyun.xyz:2021/?command=http://127.0.0.1:2021/flflagag.php -> X
잉? 내가 알고 있는 문제랑은 조금 다른 것 같다.
http://ctf.j0n9hyun.xyz :2021/?command=flflagag.php -> 성공
flag is HackCTF{w3lcome_to_vu1n_web?}
Login 100
첫 페이지에 있는 view source를 클릭해서 php 소스를 보자.
sqli를 시도해보면 될 것 같다. 어떤 id를 사용해야 하는지는 안나와있지만, admin을 id로 사용하면 될 것 같은 느낌이다.
id = admin'-- '
pw = 1234
Flag is HackCTF{s1mple_sq1_1njecti0n_web_hack!!}
마법봉 100
일단 소스를 보자
바로 보고 매직 해시 문제임을 알아야 한다.
매직 해시 리스트에서 해당 값을 찾아서 어떤 값을 넣어야 할지 찾아내면 끝.
https://www.whitehatsec.com/blog/magic-hashes/
Magic Hashes | WhiteHat Security
For more than the last decade, PHP programmers have been wrestling with the equals-equals (==) operator. It’s caused a lot of issues. This has a particular implication for password hashes. Password hashes in PHP are base16 encoded and can come in the form
www.whitehatsec.com
FLAG : HackCTF{magic_makes_everything_possible}
Time 150
2달 하고도 1초 더 기다리면 플래그를 얻을 수 있다! 기다리기만 하면 되는 개꿀문제
사실 is_numeric함수에서 지수형태 5.184001e6를 이용해 통과하고
그 다음 조건문들은 5.184001e6의 계산값 5184001으로 통과되며, sleep함수에서 int형으로 변환 될 때 5.184001e6은 5로 변환되어 5초만 기다리면 플래그를 얻을 수 있다.
flag is HackCTF{1_w4nt_t0_sp3nd_m0r3_t1m3
Input Check 150
페이지 소스를 보면 힌트가 있다.
그래서 변수를 배열로 줬더니 플래그가 나왔다.
http://ctf.j0n9hyun.xyz:2033/?text[]=flag
HackCTF{y0u_are_catch_f1ag!!}
Home 200
문제 페이지를 보면, 내 ip가 나오고, 힌트로 머리말을 생각하라고 한다. 머리말 == header
header에 x-forward-for을 추가해 주면 된다.
curl --header "X-Forwarded-For: 127.0.0.1" http://ctf.j0n9hyun.xyz:2034
curl은 윈도우 cmd에서도 잘 된다.
flag is HackCTF{U5u4lly_127.0.0.1_4ll0w5_y0u_t0_p4ss}
가위바위보 200
가위바위보 게임을 이용해서 플래그를 구하는건가 싶어, 소스를 뒤져보았지만 플래그랑은 관련이 없는 것을 알 수 있었다.
그다음 루트는 프로필 이미지를 변경할 때 파일업로드 취약점쪽이다.
프로필이미지 파일명이 저기 이름으로 등록되는데
이 이름이 .php로도 변경이된다.
파일에 php파일을 넣으면 a.php로 이동해서 php 실행이 가능하다.
이미지 검증은 이미지 시그니쳐를 삽입함으로써 우회한다.
Cookie 300
cookie라는 쿠키의 값을 base64로 3번 디코딩하면 아래 문자열이 나온다.
{"id":"2","type":"guest"}
일단 id를 1로, type을 admin으로 바꿔주고 base64로 3번 인코딩해보았다.
PassAdmin검증은 php strcmp 배열 취약점을 사용하여 우회하면 된다.
LOL
300
로컬로 flag.php에 접속해야하나 보다.
ssrf와 local ip 우회를 사용하자
url@realurl
Authenticate
350
로그인인가
뭔가 있다.
id 9자리 cresponse 넣고
eval 대신에 alert 돌리니까
흠
여기서 9자리 string을 뽑는다.
dumbh4ck5
이걸 username으로 넣고 돌리니 코드가 나왔다.
XorIsNotSooS3cur3 패스워드 겟
Wise Saying
350
음 또 로그인?
뭘로 로그인하든 로그인이 된다.
lfi인가
근데 say로 안끝나면 욕한다.
phpinfo를 주네
/tmp/sess_[value]
세션쿠키값뒤에 say 붙여서 로그인하고 lfi
index.php?page=../../../../../tmp/sess_2b86721cb6a9e6334eb6d1b97a5dd3basay
된다.
이제 아이디에 php코드를 삽입하자.