这一题应该是入门级题目吧
链接:http://oj.xctf.org.cn/problems/253
--------------------------------------------------------------------------------
首先点击打开题目的超链接就显示了一句话,一般都先看一下源码吧
源码有个注释,说源代码在index.phps里,那就在地址栏输入者个文件看看咯,输入就提示下载了,下载了就更好
用编辑器打开就看到代码如下:
<?
if(eregi("admin",$_GET[id])) {
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx </p>";
}
?>
<br><br>
Can you authenticate to this website?
<!-- source: index.phps -->
首先第一个if里的eregi函数可以说匹配函数吧,只要含有admin无论大小写都返回true
所以我们肯定不能直接输入admin这个单词的,这就为下面作了铺垫了
下面将$_GET['id']进行了UrlDecode解码,然后再跟admin进行比较,如果相等就输出key,想想都有点击小激动啊(以下献丑了,其实每次成功都经历了不少,很多时候那些成功人士都没有告诉你们,一方面可能能让你们产生崇拜感,另一方面,人对于痛苦,不爽的事情都是天性地去忘掉的)
先去百度一下在线UrlEncode编码吧(想着一编码,绕过第一个if,再解码,进入第二个if,输出key,多好,但是理想总是很遥远)
看到这我的内心是崩溃的
*
*
*
*
*
*
*
其实中间还犯了一点小错误,毫无目的的去搜寻地址栏支持什么编码什么的(现在看来:跟源代码的原意违背了,源代码就很明确的都用了urldecode了,就肯定是要我们输入urlencode后的值啊)
接下里就直接搜了w3c的url编码表
ASCII Value | URL-encode | ASCII Value | URL-encode | ASCII Value | URL-encode |
---|---|---|---|---|---|
æ | %00 | 0 | %30 | ` | %60 |
%01 | 1 | %31 | a | %61 | |
%02 | 2 | %32 | b | %62 | |
%03 | 3 | %33 | c | %63 | |
%04 | 4 | %34 | d | %64 | |
%05 | 5 | %35 | e | %65 | |
%06 | 6 | %36 | f | %66 | |
%07 | 7 | %37 | g | %67 | |
backspace | %08 | 8 | %38 | h | %68 |
tab | %09 | 9 | %39 | i | %69 |
linefeed | %0a | : | %3a | j | %6a |
%0b | ; | %3b | k | %6b | |
%0c | < | %3c | l | %6c | |
c return | %0d | = | %3d | m | %6d |
%0e | > | %3e | n | %6e | |
%0f | ? | %3f | o | %6f | |
%10 | @ | %40 | p | %70 | |
%11 | A | %41 | q | %71 | |
%12 | B | %42 | r | %72 | |
%13 | C | %43 | s | %73 | |
%14 | D | %44 | t | %74 | |
%15 | E | %45 | u | %75 | |
%16 | F | %46 | v | %76 | |
%17 | G | %47 | w | %77 | |
%18 | H | %48 | x | %78 | |
%19 | I | %49 | y | %79 | |
%1a | J | %4a | z | %7a | |
%1b | K | %4b | { | %7b | |
%1c | L | %4c | | | %7c | |
%1d | M | %4d | } | %7d | |
%1e | N | %4e | ~ | %7e | |
%1f | O | %4f | %7f | ||
space | %20 | P | %50 | € | %80 |
! | %21 | Q | %51 | %81 | |
" | %22 | R | %52 | ‚ | %82 |
# | %23 | S | %53 | ƒ | %83 |
$ | %24 | T | %54 | „ | %84 |
% | %25 | U | %55 | … | %85 |
& | %26 | V | %56 | † | %86 |
' | %27 | W | %57 | ‡ | %87 |
( | %28 | X | %58 | ˆ | %88 |
) | %29 | Y | %59 | ‰ | %89 |
* | %2a | Z | %5a | Š | %8a |
+ | %2b | [ | %5b | ‹ | %8b |
, | %2c | %5c | Œ | %8c | |
- | %2d | ] | %5d | %8d | |
. | %2e | ^ | %5e | Ž | %8e |
/ | %2f | _ | %5f | %8f |
因为a的编码是%61嘛,我就在地址栏输入啊,结果一按回车.......,就变成a了
我再看一下编码表,发现.....
原来%号都用编码啊,那%2561不就是表示%61吗,马上测试一下
那这题应该结束了吧
哈哈得到key了,去拿那85分吧