您的位置:首页 > 编程语言 > PHP开发

PICO CTF 2013 PHP 2: 85

2015-09-09 22:44 543 查看
这一题应该是入门级题目吧

链接: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 ValueURL-encodeASCII ValueURL-encodeASCII ValueURL-encode
æ%000%30`%60
%011%31a%61
%022%32b%62
%033%33c%63
%044%34d%64
%055%35e%65
%066%36f%66
%077%37g%67
backspace%088%38h%68
tab%099%39i%69
linefeed%0a:%3aj%6a
%0b;%3bk%6b
%0c<%3cl%6c
c return%0d=%3dm%6d
%0e>%3en%6e
%0f?%3fo%6f
%10@%40p%70
%11A%41q%71
%12B%42r%72
%13C%43s%73
%14D%44t%74
%15E%45u%75
%16F%46v%76
%17G%47w%77
%18H%48x%78
%19I%49y%79
%1aJ%4az%7a
%1bK%4b{%7b
%1cL%4c|%7c
%1dM%4d}%7d
%1eN%4e~%7e
%1fO%4f%7f
space%20P%50%80
!%21Q%51%81
"%22R%52%82
#%23S%53ƒ%83
$%24T%54%84
%%25U%55%85
&%26V%56%86
'%27W%57%87
(%28X%58ˆ%88
)%29Y%59%89
*%2aZ%5aŠ%8a
+%2b[%5b%8b
,%2c\%5cŒ%8c
-%2d]%5d%8d
.%2e^%5eŽ%8e
/%2f_%5f%8f
为了方便测试,我就在本地写了个文件测试,代码如下:



因为a的编码是%61嘛,我就在地址栏输入啊,结果一按回车.......,就变成a了





我再看一下编码表,发现.....



原来%号都用编码啊,那%2561不就是表示%61吗,马上测试一下



那这题应该结束了吧





哈哈得到key了,去拿那85分吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: