【CTF web入门第九篇】web入门

  • A+
所属分类:逆向工程

bugku-ctf 第一题: 你从哪里来

此题考点在抓包工具的使用以及对数据包的了解,referer的了解。

【CTF web入门第九篇】web入门

打开链接

【CTF web入门第九篇】web入门

修改http referer头即可

打开抓包工具Burpsuite

【CTF web入门第九篇】web入门

【CTF web入门第九篇】web入门

得到:flag{bug-ku_ai_admin}

 

关于Http请求header之Referer讲解:

Referer是HTTP请求Header的一部分,当浏览器向Web服务器发送请求的时候,请求头信息一般需要包含Referer。该Referer会告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

【CTF web入门第九篇】web入门

Referer作用是什么?

1)防盗链

比如办事通服务器只允许网站访问自己的静态资源,那服务器每次都需要判断Referer的值是否是zwfw.yn.gov.cn,如果是就继续访问,不是就拦截。

 

2)防止恶意请求

比如静态请求是.html结尾的,动态请求是.shtml,那么所有的*.shtml请求,必须 Referer为我自己的网站才可以访问,这就是Referer的作用。

 

空Referer是怎么回事?

空Referer是指Referer头部的内容为空,或者,一个HTTP 请求头中根本不包含Referer,那么什么时候HTTP请求会不包含Referer字段呢?

根据Referer的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。

 

比如,直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer字段的,因为这是一个“凭空产生”的HTTP请求,并不是从一个地方链接过去的。

 

在防盗链设置中,允许空Referer和不允许空Referer有什么区别?

允许Referer为空,意味着你允许比如浏览器直接访问,就是空。



bugku-ctf 第二题: 程序员本地网站

【CTF web入门第九篇】web入门

Tip:请求本地访问

这道题要求从本地访问,打开burpsuite抓包,加上:X-Forwarded-For:127.0.0.1 就好了

【CTF web入门第九篇】web入门

【CTF web入门第九篇】web入门

得到flag

flag{loc-al-h-o-st1}

 

关于了解HTTP 请求头中的 X-Forwarded-For,可以百度。



bugku-ctf 第三题: md5 collision(NUPT_CTF)

【CTF web入门第九篇】web入门

http://123.206.87.240:9009/md5.php

根据MD5的特性,有两点漏洞

1.两个开头为0的md5值相同。

2.md5不能处理数组。

3、==用法,0 == 字符串是成立的,从而可以绕过MD5检查。

根据特性,我们可以传一个md5是oe开头的值,从而绕过。

 

常用的md5

QNKCDZO

0e830400451993494058024219903391

 

s878926199a

0e545993274517709034328855841020

 

s155964671a

0e342768416822451524974117254469

 

s214587387a

0e848240448830537924465865611904

 

s214587387a

0e848240448830537924465865611904

 

s878926199a

0e545993274517709034328855841020

 

s1091221200a

0e940624217856561557816327384675

 

s1885207154a

0e509367213418206700842008763514

 

s1502113478a

0e861580163291561247404381396064

 

s1885207154a

0e509367213418206700842008763514

 

0e861580163291561247404381396064

 

s1885207154a

0e509367213418206700842008763514

 

s1836677006a

0e481036490867661113260034900752

 

s155964671a

0e342768416822451524974117254469

 

s1184209335a

0e072485820392773389523109082030

 

s1665632922a

0e731198061491163073197128363787

 

s1502113478a

0e861580163291561247404381396064

 

s1836677006a

0e481036490867661113260034900752

 

s1091221200a

0e940624217856561557816327384675

 

s155964671a

0e342768416822451524974117254469

 

s1502113478a

0e861580163291561247404381396064

 

s155964671a

0e342768416822451524974117254469

 

s1665632922a

0e731198061491163073197128363787

 

s155964671a

0e342768416822451524974117254469

 

s1091221200a

0e940624217856561557816327384675

 

s1836677006a

0e481036490867661113260034900752

 

s1885207154a

0e509367213418206700842008763514

 

s532378020a

0e220463095855511507588041205815

 

s878926199a

0e545993274517709034328855841020

 

s1091221200a

0e940624217856561557816327384675

 

s214587387a

0e848240448830537924465865611904

 

s1502113478a

0e861580163291561247404381396064

 

s1091221200a

0e940624217856561557816327384675

 

s1665632922a

0e731198061491163073197128363787

 

s1885207154a

0e509367213418206700842008763514

 

s1836677006a

0e481036490867661113260034900752

 

s1665632922a

0e731198061491163073197128363787

 

s878926199a

0e545993274517709034328855841020


【CTF web入门第九篇】web入门

flag{md5_collision_is_easy}


bugku-ctf 第四题: Trim的日记本

本题要点:目录扫描

【CTF web入门第九篇】web入门

打开

http://123.206.87.240:9002/

【CTF web入门第九篇】web入门

试着注册一下~

【CTF web入门第九篇】web入门

【CTF web入门第九篇】web入门

点击ok

【CTF web入门第九篇】web入门

emmmm.....

 

直接登录呢?试试

【CTF web入门第九篇】web入门

仍旧没有用.........

 

扫描一下目录吧~

有点发现~

打开御剑

【CTF web入门第九篇】web入门

有点发现

【CTF web入门第九篇】web入门

试了一下,还真的是flag.......被假flag骗多了,都不太相信这么轻易就拿到了,真真假假,假假真真,哈哈哈哈~

flag1:{0/m9o9PDtcSyu7Tt}

提交,完成!


bugku-ctf 第五题: flag.php

【CTF web入门第九篇】web入门

【CTF web入门第九篇】web入门

一开始找不到突破口,看了别人的wp把hint当作参数

提示中也有hint

【CTF web入门第九篇】web入门

我以为只要把ISecer:www.isecer.com序列化一下,然后bp提交cookie就行了呢!

 

后来才发现,验证cookie的时候$KEY根本没有定义,所以我们提交的cookie的值应该为空!

 

又从这段验证代码:

 

elseif (unserialize($cookie) === "$KEY")

还需要类型相同,因为是“$KEY”所以我们提交的cookie要是一个空字符串

所以payload:

【CTF web入门第九篇】web入门

flag{unserialize_by_virink}


bugku-ctf 第六题: PHP_encrypt_1(ISCCCTF)

【CTF web入门第九篇】web入门

下载压缩包

下载后是一个php文件

【CTF web入门第九篇】web入门

我们要提交的flag作为一个字符串,赋值给$data传入这个脚本之后,得到了上面给出的字符串:fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=

 

我们要做的就是逆向找出这个flag

密码学还没学、、md5的加密和解密还不会,只能照抄大佬的wp了、、、

https://blog.csdn.net/qq_19861715/article/details/79385075

<?php

function decrypt($str) {

    $mkey ="729623334f0aa2784a1599fd374c120d";

    $klen = strlen($mkey);

    $tmp = $str;

    $tmp =base64_decode($tmp);  // 对 base64 后的字符串 decode

    $md_len = strlen($tmp); //获取字符串长度

    $x = 0;

    $char = "";

    for($i=0;$i <$md_len;$i++) {  //  取二次加密用 key;

        if ($x == $klen)  // 数据长度是否超过 key 长度检测

            $x = 0;

        $char .= $mkey[$x];  // 从 key 中取二次加密用 key

        $x+=1;

    }

    $md_data = array();

    for($i=0;$i<$md_len;$i++){ // 取偏移后密文数据

        array_push($md_data,ord($tmp[$i]));

    }

    $md_data_source = array();

    $data1 = "";

    $data2 = "";

    foreach ($md_data as $key=> $value) { // 对偏移后的密文数据进行还原

        $i = $key;

        if($i >=strlen($mkey)) {$i = $i - strlen($mkey);}

        $dd = $value;

        $od = ord($mkey[$i]);

       array_push($md_data_source,$dd);

        $data1 .= chr(($dd+128)-$od);  // 第一种可能, 余数+128-key为回归数

        $data2 .=chr($dd-$od);  // 第二种可能, 余数直接-key 为回归数

    }

    print "data1 =>".$data1."<br>n";

    print "data2 =>".$data2."<br>n";

}

$str ="fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=";

decrypt($str);

?>

【CTF web入门第九篇】web入门

经过修改代码得到两段代码合并即可

 

//lag{asdqwdfasfdawfefqwdqwdadwqadawd}//29行代码+128

//F���:��������������������������������� //29行代码不加128

////Flag:{asdqwdfasfdawfefqwdqwdadwqadawd}  合并后flag

这个题涉及到密码学~不懂密码学~


本文始发于微信公众号(LemonSec):【CTF web入门第九篇】web入门

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: