文章

CTFShow Web9

没事打打CTF 也是一种乐趣,这里记录一下一些Web方向的题目,以及解题思路。

=======

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


<?php
        $flag="";
		$password=$_POST['password'];
		if(strlen($password)>10){
			die("password error");
		}
		$sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
		$result=mysqli_query($con,$sql);
			if(mysqli_num_rows($result)>0){
					while($row=mysqli_fetch_assoc($result)){
						 echo "登陆成功<br>";
						 echo $flag;
					 }
			}
    ?>

对于函数md5(string,raw) 第二个参数有以下可选项: TRUE - 原始 16 字符二进制格式 FALSE - 默认。32 字符十六进制数 所以只要md5加密后的16进制转化为二进制时有 ‘or’xxxx,即可构成闭合语句: username =’admin’ and password =‘ ’or ‘xxxxx’ 成功登陆 这里给出两个符合的字符串 ffifdyop 129581926211651571912466741651878684928 但题目有长度限制,所以输入ffifdyop即可获取flag

本文由作者按照 CC BY 4.0 进行授权