bugku-ctf 第一题: 你从哪里来
此题考点在抓包工具的使用以及对数据包的了解,referer的了解。
打开链接
修改http referer头即可
打开抓包工具Burpsuite
得到:flag{bug-ku_ai_admin}
关于Http请求header之Referer讲解:
Referer是HTTP请求Header的一部分,当浏览器向Web服务器发送请求的时候,请求头信息一般需要包含Referer。该Referer会告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。
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 第二题: 程序员本地网站
Tip:请求本地访问
这道题要求从本地访问,打开burpsuite抓包,加上:X-Forwarded-For:127.0.0.1 就好了
得到flag
flag{loc-al-h-o-st1}
关于了解HTTP 请求头中的 X-Forwarded-For,可以百度。
bugku-ctf 第三题: md5 collision(NUPT_CTF)
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
flag{md5_collision_is_easy}
bugku-ctf 第四题: Trim的日记本
本题要点:目录扫描
打开
http://123.206.87.240:9002/
试着注册一下~
点击ok
emmmm.....
直接登录呢?试试
仍旧没有用.........
扫描一下目录吧~
有点发现~
打开御剑
有点发现
试了一下,还真的是flag.......被假flag骗多了,都不太相信这么轻易就拿到了,真真假假,假假真真,哈哈哈哈~
flag1:{0/m9o9PDtcSyu7Tt}
提交,完成!
bugku-ctf 第五题: flag.php
一开始找不到突破口,看了别人的wp把hint当作参数
提示中也有hint
我以为只要把ISecer:www.isecer.com序列化一下,然后bp提交cookie就行了呢!
后来才发现,验证cookie的时候$KEY根本没有定义,所以我们提交的cookie的值应该为空!
又从这段验证代码:
elseif (unserialize($cookie) === "$KEY")
还需要类型相同,因为是“$KEY”所以我们提交的cookie要是一个空字符串
所以payload:
flag{unserialize_by_virink}
bugku-ctf 第六题: PHP_encrypt_1(ISCCCTF)
下载压缩包
下载后是一个php文件
我们要提交的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);
?>
经过修改代码得到两段代码合并即可
//�lag�{asdqwdfasfdawfefqwdqwdadwqadawd}//29行代码+128
//F���:��������������������������������� //29行代码不加128
////Flag:{asdqwdfasfdawfefqwdqwdadwqadawd} 合并后flag
这个题涉及到密码学~不懂密码学~
本文始发于微信公众号(LemonSec):【CTF web入门第九篇】web入门
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论