web write

emmmm
好几天了,终于开始写了。

1、php大法

叫我去index.php.txt,那我就去看看咯

<?php
if(eregi("hackerDJ",$_GET[id])) {
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
echo "<p>Access granted!</p>";
echo "<p>flag: *****************} </p>";
}
?>
<br><br>
Can you authenticate to this website?

然后就看到了这样子的php代码

看看代码,emmmm
原来是把hackerDJ把它给ENCODE两次
服务器会对其urldecode一次,代码中又有一次,所以我就反向来两次,哈哈

打开神器Burp Suite ->Decoder
把hackerDJ复制进去,ENCODE两次
便得到了

然后
http://ctf5.shiyanbar.com/DUTCTF/index.php?id=%2568%2561%2563%256b%2565%2572%2544%254a

得到了FLAG->flag: DUTCTF{PHP_is_the_best_program_language}
emmm,
或许php
就是最好的语言吧
2、

http://chinalover.sinaapp.com/web19/

在题目中看到php代码

<?php
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo "nctf{*}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
?>

可以看到题目
要求$a!=’QNKCDZO’,
但是要求$a的MD5等于’QNKCDZO’的MD5,所以
QNKCDZO经过MD5加密之后为0e830400451993494058024219903391
在php中==号为弱比较,’0e’开头剩下的全为数字不管数字是多少==恒成立
因为’0e*‘==0
所以就百度一个开头为 ‘0e’ 的MD5字符串

随便选择一个
s214587387a
0e848240448830537924465865611904

然后在地址栏输入http://chinalover.sinaapp.com/web19/?a=s214587387a

就成功得到了FLAG,撒花撒花
nctf{md5_collision_is_easy}
3、
http://teamxlc.sinaapp.com/web1/02298884f0724c04293b4d8c0178615e/index.php
这里写图片描述

然后就发现了这个咯,叫我输入zhimakaimen

那我就输入咯,发现输到后面输入不了,肯定是长度受到了限制,
直接在页面中查看元素

把长度给改掉,就get到了flag
flag is:nctf{follow_me_to_exploit}
4、checkpass

<?php
[email protected]$_POST['pass'];
$pass1=*;//被隐藏起来的密码
if(isset($pass))
{
if(@!strcmp($pass,$pass1)){
echo "flag:nctf{*}";
}else{
echo "the pass is wrong!";
}
}else{
echo "please input pass!";
}
?>

观察一波php
源码,惊奇的发现了关键在于strcmp函数,所以
就得找
出他的小秘密,秘密怎么找呢,那就百度咯。
strcmp() 函数比较两个字符串。
相同就返回0,但是呢,如果给pass
为一个数组,
那么strcmp()函数就会返回null
,而null 和 0在判断中是等价的。
所以我们用hackbar工具post进去一个数组就好咯

get到了flag
flag:nctf{strcmp_is_n0t_3afe}