Web
Compare
100
php의 느슨한 비교 취약점
넘기는 값을 배열로 넘겨주면 된다.
직접 html코드에서 name을 password[] 로 바꿔주고 보내면 된다.
Simple SQL
150
sql injection
소스:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
include "./conn.php";
$id = $_GET['id'];
$pw = $_GET['pw'];
if(preg_match('/[a-zA-Z0-9]/i', $id) || preg_match('/[a-zA-Z0-9]/i', $pw)) exit("빼애애ㅐ애애ㅐㅐ액!!!!");
if(preg_match('/\||&| |0x|\t|admin|-|\'/i', $id) || preg_match('/\||&| |0x|\t|admin|-|\'/i', $pw)) exit("빼애애ㅐ애애ㅐㅐ액!!!!");
$query = "select * from simple_sql where id='${id}' and pw='${pw}'";
echo "<hr><b>Query : {$query}</b><hr><br>";
$result = mysqli_fetch_array(mysqli_query($conn,$query));
if($result){
echo $flag;
exit;
}
echo "<hr><br>";
highlight_file(__FILE__);
?>
|
cs |
소문자, 대문자, 숫자 모두 필터링에 몇몇개의 문자열들도 필터링한다.
\은 필터링하지 않기 때문에 \을 넣어서 id='\'로 만들면 뒤 '은 문자열 취급되어 pw=' 에 있는 ' 까지 문자열이 된다.
id='\' and pw='=""# 로 만들어줬더니 풀렸다.
http://noob.kr/Simple_SQL.php?id=\&pw==%22%22%23
원래는 false가 떠야하지만 php처럼 sql에서도 타입 저글링이 가능하여 true가 된다.
Simple md(5-1)
170
소스:
1
2
3
4
5
6
7
8
9
|
<?php
if($_GET['md4'] == hash("md4", $_GET['md4'])){
echo "<hr><b>".$flag."</b><hr><br>";
}else{
echo "<hr><b>False...</b><hr><br>";
}
highlight_file(__FILE__);
?>
|
cs |
입력값과 md4 hash 값이 같아야 한다.
느슨한 비교 == 을 사용했기 때문에 매직해쉬를 사용하면 된다.
아래 글에 직접 값을 찾으신 분이 계시다.
https://medium.com/@sbasu7241/hsctf-6-ctf-writeups-a807f0b25ae4
0e251288019 을 넣어주면 된다고 한다.
'WAR GAME > N00bCTF' 카테고리의 다른 글
N00bCTF Multimedia Forensic 카테고리 문제 풀이 (0) | 2019.11.07 |
---|---|
N00bCTF Misc 카테고리 문제 풀이 (0) | 2019.11.07 |
N00bCTF Reversing 카테고리 문제 풀이 (0) | 2019.11.07 |
N00bCTF Crypto 카테고리 문제 풀이 (0) | 2019.11.07 |
N00bCTF Pwnable 카테고리 문제 풀이 (0) | 2019.11.07 |