20th-day

 · 2019-8-19 · 次阅读


46.php大法(http://ctf5.shiyanbar.com/DUTCTF/index.php)
  这道题进入页面后正好是那次什么鬼那道题串题了,打开它的提示index.php.txt发现如下代码:
php
if(eregi(“hackerDJ”,$_GET[id])) {
echo(“

not allowed!

“);
exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == “hackerDJ”)
{
echo “

Access granted!

“;
echo “

flag: *****}

“;
}
按代码意思如果id与hackerDJ相同就输出Not allowed让get得到的Id等于Url解码的Id,这时候如果Id=hackerDJ就给出flag.这道题将hackerDJ进行两次Url编码,再payload:index.php?id=hackerDJ的两次编码即可拿下flag.
  summary:这道题之前做过一遍了,为什么要两次编码是因为url本身要解码一次这样也让其不至于直接等于hackerDJ绕过判断,由于代码本身解码了一次,因而编码两次正好满足条件得到flag.
47.FALSE(http://ctf5.shiyanbar.com/web/false.php)
  这道题在进入页面前还有提示:PHP代码审计
hint:sha1函数你有认真了解过吗?听说也有人用md5碰撞o(╯□╰)o
进入页面后会看到一个登陆框,然后可以看它的源代码,先查看源代码吧。
if (isset($_GET[‘name’]) and isset($_GET[‘password’])) {
if ($_GET[‘name’] == $_GET[‘password’])
echo ‘

Your password can not be your name!

‘;
else if (sha1($_GET[‘name’]) === sha1($_GET[‘password’]))
die(‘Flag: ‘.$flag);
else
echo ‘

Invalid password.

‘;
}
else{
echo ‘

Login first!

‘;
阅读代码意思就是输入两个sha1相同的用户名和密码就能登陆并且给我们flag.上次做bugku就记录了一些sha1之后等于0e的现在可以试试,不过先尝试一下数组。直接得到了flag.这里用0e的值失败了,给出的是不合法的password上次是md5的等于0e因而这道题要找sha1等于0e的就不继续尝试了,因为数组都等于false因而直接相等得到flag.
  这道题之前也做过类似的,因而难度不大,关键点就是要知道sha1与md5函数在加解密数组时都会变成false因而直接通过判断。
48.拐弯抹角(http://ctf5.shiyanbar.com/indirection/)
  这道题好长的代码,就不复制了。这道题的大致意思是满足他要求的7个条件这样$stop变量会在循环中增长到从而得到flag.那么它需要满足哪7个条件呢:
第一个要求就是不得出现 ./
第二个要求就是不得出现 ../
第三个要求对可以用的字符做了限制,a-z / 和 .
第四个要求是不得出现 //
第五个要求就是必须包含/index.php,并且以此结尾
第六个要求我们禁止p后面出现.这个符号
第七个要求你的$URL必须与/indirection/index.php有所不同
这道题我瞎整index.php/index.php就出来了flag,但具体原因我还为得知,因而去看看大佬们的WP。
题目的意思就是通过改变URL地址栏访问index.php,但是限制了条件不能使用 ./ ../ \ 而且只能使用小写字母,不可以在php后加点。
这里我们可以利用伪静态技术,使用http://ctf5.shiyanbar.com/indirection/index.php/index.php,index.php后的index.php会被当做参数处理,所以服务器只会解析第一个index.php,满足条件成功绕过。
什么是伪静态技术:
URL伪静态就是通过对动态网页进行URL处理(重写),从而实现看起来像是静态URL页面(而实际网页目录或路径中没有该页面)的方法,表现形式主要是去掉动态网页QUERY参数,还有可以让URL看起来更加有序条理。
例如:http://www.example.com/test.php?cate=soft&page=2
就可以变成http://www.example.com/test/soft/index/2.html
  这里关于这个伪静态技术我又掌握了一点,它是有利弊的由于其采用正则判断因而很容易导致CPU超负,不用伪静态技术的服务器可以承受更多的访问。SEO-搜索引擎优化。
49.Forms(http://ctf5.shiyanbar.com/10/main.php)
  进入页面就是一个PIN的输入框,先百度一下这是个什么东西。PIN码(PIN1),全称Personal Identification Number.就是SIM卡的个人识别密码。如果启用了开机PIN码,开机后就要输入4到8位数PIN码.直接破解肯定是不行了这道题既然叫forms表单那么应该从表单入手,F12打开工作台,在查看器中发现了这里的value的值为null我改成1之后提交表单框试试。发现给出如下代码:
$a = $_POST[“PIN”];
if ($a == -19827747736161128312837161661727773716166727272616149001823847) {
echo “Congratulations! The flag is $flag”;
} else {
echo “User with provided PIN not found.”;
}
因而直接把-19827747736161128312837161661727773716166727272616149001823847粘贴进表单框就得到了flag.
  这道题主要是对表单框的一个掌握,这里的shousource这里就是一个隐藏的可以看源码的一个表单input项,当把值设置成1时再提交表单框这个隐藏的就会显示出来。
html中value的作用:
按钮中用的value 指的是按钮上要显示的文本,比如‘确定,删除 等等字样‘
复选框用的value指的是,这个复选框的值
单选框用的value和复选框的作用一样
下拉菜单用的value是列表中每个子项的值
隐藏域用的value是框里面显示的内容