- 博客(84)
- 收藏
- 关注
原创 初学phar反序列化
两个功能点,一个任意文件读取(file_get_contents),一个文件上传(上传格式为白名单图片,内容不含__HALT_COMPILER();来识别这个文件是Phar文件,对于其他是无限制的,这个时候也就意味着我们即使对文件后缀和文件名进行更改,其实质仍然是Phar文件。来识别Phar文件,那么出于安全考虑,即为了防止Phar反序列化的出现,可能就会对这个进行过滤,示例代码如下。我们利用Phar反序列化的第一步就是需要上传Phar文件到服务器,而如果服务端存在防护,比如这种。
2023-09-20 21:32:25
762
2
原创 bthclsbthclsbthcls
select concat(name,'-',chinese,'-',math,'-',english) as 姓名语数外 from score;insert into score values (2,2,'张飞',70,75,70);insert into score values (3,2,'赵云',90,65,95);insert into score values (5,1,'曹操',88,90,80);insert into score values (8,2,'貂蝉',90,75,80);
2023-06-09 23:49:38
970
原创 2022长安杯赛后复现
powershell取证 查看历史命令记录文件Windows Powershell相关(历史命令、命令)_shu天的博客-优快云博客_powershell历史命令搜索ConsoleHost_history.txt。
2022-11-01 17:08:41
1411
原创 骑士CMS01 74cms v4.2.111 后台getshell漏洞复现
先进入网站后台/index.php?然后访问/Application/Home/Conf/config.php。猜测账号就是admin了,貌似这里登录会验证,试试能不能爆破密码。输入账号aaa回显管理员账号不存在,试试admin。进入后台找到工具=>风格模板=>可用模板,抓包。302跳转登录成功密码就是admin。拉到最下面查看网站cms版本。修改tpl_dir的值为。蚁剑连接找到flag。
2022-09-25 18:43:59
3566
原创 [0CTF 2016]piapiapia
这里因为s:31:"";s:10:"config.php",要取31位会把config.php当做值,所以我们要在前面加上31个where使其被过滤替换成hacker多一个字符以满足这31个字符。但是正常情况下是不能让photo的值是config.php的,所以我们利用nickname去构造一个config.php出来,但是因为nickname只要匹配到a-zA-Z0-9_就会die,所以这里需要用数组绕过。}s:5:"好像没有和最前方的"对齐,经最终测试,是不影响的。
2022-09-25 18:08:42
1099
原创 PHP/8.1.0-dev 后门命令执行漏洞复现
题目描述:题目利用了PHP某一开发版本的重大后门,可以利用某写东西进行代码执行。一开始这里我有个空格在:后面,所以执行不成功,去掉空格就成功了。没有发现什么点,目录扫描也没有结果,打开bp抓包。搜索PHP/8.1.0-dev。
2022-09-25 13:40:28
1884
原创 [BJDCTF2020]EasySearch shtml基于SSI注入
sql注入没有结果,目录扫描发现.swp备份文件泄露。意思是只要密码的md5值前六位为6d0bc1就能登录。有注入点,shtml基于SSI技术,可以注入。最后在../目录下找到flag文件。
2022-09-24 17:53:59
240
原创 [SWPU2019]Web1
information_schema被过滤了换用innodb_index_stats和innodb_table_stats绕过查看。在第一行第二列是flag,那么不难猜测到flag就在第一行第三列。因为上表不含列的数据,换用无列名查询的方法绕过。我们还能得到用户admin的密码,md5解密。直接注册登录进去,注入点在发布广告的标题处。union select看回显点。说明users表有5行。
2022-09-24 14:13:38
155
原创 [MRCTF2020]PYWebsite
意思是他自己和购买者的ip进入网站就可以看见flag,我们不知道购买者的ip,但是我们可以知道他的ip肯定是本地127.0.0.1,所以构造xff伪造本地ip查看flag.php。意思是我们输入的授权码md5加密后如果和0cd4.....比较弱相等则可以得到flag。暂时没思路去看下flag.php。得到hint,查看源代码。
2022-09-24 12:15:30
503
1
原创 [CISCN 2019 初赛]Love Math
这里思路是利用最下面的eval去执行读取flag的命令,但是payload长度不能超过80,且只能用白名单内的函数,不能使用黑名单内的字符。即$_GET['test']&test=system('ls /'),又因为[]和引号被过滤了所以用两个变量构造。base_convert(37907361743,10,36)相当于hex2bin,可以将16进制转换为字符串。读取flag,我们要system('ls /'),正常是无法构造的,所以需要借用变量构造。GET我们用白名单内的base_convert绕过。
2022-09-24 11:58:50
196
原创 [MRCTF2020]Ezpop
_wakeup() 使用unserialize时触发,在反序列化之前。__toString 当一个对象被当作一个字符串被调用。__invoke() 当脚本尝试将对象调用为函数时触发。__get() 用于从不可访问的属性读取数据。
2022-09-23 21:12:35
154
原创 [安洵杯 2019]easy_serialize_php
然后利用变量覆盖得到SESSION[img],中间会给我们制造一个SESSION[img]但是不是我们要的,需要去绕过它。unserialize会把多余的字符串当垃圾处理,在花括号内的就是正确的,花括号后面的就都被扔掉。所以利用filter函数去过滤字符使得前面的既有我们想要的,又成立,可以绕过后面的img。在变量覆盖的后面,所以我们不能直接去读,这里利用反序列化字符串逃逸绕过。这样我们前面的刚好满足反序列化,后面的就可以绕过了。首先我们构造一个序列化的img。值绕过,原理是相似的。
2022-09-23 19:47:44
551
原创 [WUSTCTF2020]朴实无华
绕过cat和空格命令执行,cat 用tac more nl 等等,空格用${IFS},$IFS$1 //$1改成$加其他数字貌似都行,
2022-09-18 12:47:06
358
原创 记录第一次用docker复现题目 [安洵杯 2019]easy_web
所以我们可以知道这题可以通过cmd执行命令,但是要绕过不相等的两个字符MD5值强相等。有个IMG参数两次base解码后再用16进制转换字符串得到555.png。cmd命令被过滤,dir,/,没被过滤,cat用反斜杠绕过即c\at。那我们可以试试读取index.php的源码。base64解码得到index.php源码。ubuntu20.04搭建ctfd。
2022-09-18 11:52:59
302
原创 [BJDCTF2020]Mark loves cat
进入环境一个啥也没用的网页dirsearch扫描发现git泄露githack下载下来有一个flag.php,一个index.php。
2022-09-16 16:25:12
314
原创 [第五空间2019 决赛]PWN5
表中允许进行插入、删除操作的一端称为栈顶。栈顶的当前位置是动态的,对栈顶当前位置的标记称为栈顶指针。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。numbwritten=0, 已经由printf写入的字节数。offset(=None), 第一个格式化程序的偏移量。padlen(=0), payload之前填充的字节数。numbwritten(=0), 已写入的字节数。offset, 第一个格式化程序的偏移量。pwntools – FmtStr类。,是一种只允许在表的一端进行。
2022-09-13 19:31:46
448
原创 buu pwn1_sctf_2016
但当我们输入I的时候,I会被替换成you,所以我们依然可以溢出。s的输入被限制为32,但是溢出需要输入60个字符。字符串替换,输入限制。
2022-09-11 18:54:13
223
原创 buu ciscn_2019_n_1
当v2为11.28125时执行cat /flag,所以我们令v1覆盖v2的地址使其为11.28125。11.28125的十六进制为0x41348000。溢出距离为0x30-0x4。
2022-09-11 18:16:52
153
原创 ctfhub pwn
被ida演了一波,gets不给参数,**********************给了system('/bin/sh')位置是0x4007B8。后来重新打开一遍就有了。
2022-09-09 22:41:27
343
原创 [BJDCTF2020]ZJCTF,不过如此
每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。preg_replace 函数在匹配到符号正则的字符串时,会将替换字符串(preg_replace 函数的第二个参数)当做代码来执行。所以我们换一个符号,经测试\C,D,E,S,H,N,V,X*都行。即我们构造一个缓冲区,就是一号缓冲区\1了。\\1=>\1,这里\1的意思。
2022-09-08 18:57:30
151
原创 [GXYCTF2019]禁止套娃
参考wp进入题目环境源代码也啥也没有dirsearch扫网站目录git泄露用GitHack下载源文件下来得到index.php的源码可以看见过滤了data://,fileter://,phar://,php://,和et,na,info,dec,bin,hex,oct,pi,log中间的if代表匹配字母和下划线和括号比如a(b()),b_bb(c_cc())括号可以有无数个也可以没有(?R)是引用当前表达式,(?R)?这里多一个?表示可以有引用,也可以没有。
2022-09-04 11:18:16
620
原创 [网鼎杯 2020 朱雀组]phpweb
这里利用find / -name flag*去查找所有名字匹配flag*的文件,*是通配符。查看一下源代码,func=file_get_contents,p=index.php。每隔一段时间就会回显出当前时间,我们抓包可以看见有两个参数意思应该是回显时间的作用。第二种方法是利用源代码里的Test类构造反序列化,绕过过滤函数。那我们可以试试利用system去执行命令,但是被过滤了。这里有两种方法绕过,第一种利用反斜杠绕过。fuzz发现是有三个函数可以利用。查看根目录也没有发现flag文件。
2022-09-02 17:33:20
179
原创 [网鼎杯 2020 青龙组]AreUSerialz
在is_valid中监测输入的字符ASCII码必须是32到125位内的不可见字符是0。public属性序列化不会出现不可见字符,然后读取flag.php。protected属性在序列化后会出现不可见字符\00*\00。所以我们需要用public绕过。这题有个protected。
2022-09-02 15:46:48
109
原创 ctfshow web入门 命令执行 web29-web77 (未完成)
因为过滤了数字36所以我们利用shell中各种括号()、(())、[]、[[]]、{}的作用。这里取反运算,取反表示的是0,1,2,3,4取反表示-1,-2,-3,-4,-5。所以对0取反得-1再运算相加得-37,再取反得36。提示flag在36.php。:代表上一次命令执行的结果。.........
2022-08-27 09:49:58
294
原创 2018第四届美亚杯中国电子数据取证大赛个人赛复现
根据下一题Magnet RAM capture.exe是用来制作内存镜像的。jar程序用javaw.exe运行。减去八小时就是师姐协调时间。1提取内存,应为dmp文件。2是victor的电脑。
2022-08-24 22:43:24
876
原创 buuuuu流量分析刷题
下载附件,用wireshark打开分析是个usb流量先用UsbKeyboardDataHacker解出来去掉“CAP、DEL”,得到autokey密文注意DEL前面的字符也要删除后面就用breakauto脚本解。
2022-08-22 22:23:36
617
原创 利用SSLsplit+arpspoof 实现ARP欺骗劫持流量
即在中间监听获取网络数据以便获取的有价值的信息实现攻击破坏的目的,即client-mid man-server,此处介绍的sslsplit可以作为mid man监听ssl信息及HTTP信息。http不做介绍仅仅实现代理功能,ssl实现代理的同时要与服务器建立连接,同时伪造证书与客户端建立连接,即双连接,依据获取的client信息再与服务器通信,从而实现明文数据监听。开启路由转发,我们才能把劫持到的目标机的流量请求发送给网关,使目标机能上网,不开启的话目标机无法上网,可以达到断网的目的。...
2022-08-17 08:59:00
858
原创 ms08_067
一台windows xp sp2,ip:192.168.33.131。先关闭xp的防火墙和禁用使用空白密码只允许控制台登录。一台kali,ip:192.168.33.129。设置目标ip,系统,本机ip。利用ms08_067。获取目标系统账号密码。
2022-08-17 03:17:38
185
原创 永恒之蓝漏洞复现
首先准备一台 win7(192.168.33.130),一台kali(192.168.33.129)我这里使用的是windows_7_ultimate_with_sp1_x64,kali2022.1先把win7防火墙关闭然后保证两台机器能够互相ping通win7的kali的。
2022-08-16 03:27:46
1051
原创 Bugku sql注入
过滤了length,like,information,and,union,select,order,where等等。得到数据库后面因为fuzz后发现过滤了太多字符,所以这里根据。用括号绕过空格,我们发现能用的字符有,or,'得到数据表admin和字段名password后。先万能密码试试看,是不等于的意思。是用字典跑出数据表和字段,这里先跳过。提示这题布尔盲注,先fuzz一波。可以确定这里有布尔盲注。去登录账号是admin。最后利用脚本爆出数据库。得到密码bugctf。进入环境是个登录页面。...
2022-07-26 18:06:57
1334
原创 Bugku login1
注册用户名admin,密码随便。开始一顿试,目录爆破,万能密码,弱口令,sql注入都没用。注册admin用户提示admin已存在,则利用约束攻击。随便注册一个用户登陆回显不是管理员不能看flag。那意思就是让我们登录管理员就能看flag了。直接登录admin,用上面注册的密码登录。进入环境是一个web管理系统。...
2022-07-24 00:48:54
336
原创 Bugku login2
输入127.0.0.1|sleep5有延迟说明命令执行了,但是输出可能被过滤了。进入后是一个进程监控系统根据题目提示这里应该就是要命令执行了。这里利用unionselect插入密码的md5值绕过。进来先试了一遍万能密码,弱口令,目录爆破都没结果。在响应头里有tip提示,base64解码得到源码。显示如果密码等于它的md5值则应该能登陆成功。127.0.0.1|ls/没有回显。我们利用>将输出结果保存到文件中查看。进入环境是一个登录页面。...
2022-07-24 00:35:02
573
原创 [RCTF2015]EasySQL
反过来就是89-9b7f-46d3-acd4-732afd1243b7}显示没有这个字段,应该是前面没有把字段名字显示完全,用正则匹配。也不行,可能是二次注入,去重新注册一下。爆real_flag_1s_her字段。随便点一个发现url可能存在注入。使用reverse函数翻转字符串。进入环境,有一个注册和登录功能。假flag去users表看看。flag应该在后面用正则匹配。有报错了,我们使用报错注入。去登录注册看看能不能注入。发现在改密码的地方会报错。改密码123为1234。...
2022-07-22 23:42:39
887
原创 [BJDCTF2020]Easy MD5
即password='xxx'or数字就行。password与之前的输入框参数对应。a[]=1&&b[]=2。这里可以绕过md5函数使其为恒真。这里也差不多换成post传参。抓包发现响应头有hint。查看源代码没有hint。ffifdyop绕过。
2022-07-22 22:55:57
643
原创 [GXYCTF2019]BabySQli
进来是一个简单的登录框这题不是一个正常的sql注入题目,而是要考察mysql联合查询的特性联合查询的特性,参考wp 所以尝试输1' union select 'admin',1,2#123通过回显wrong user!找到user的位置是在中间1' union select 1,'admin',3#123回显wrong pass!,最后一步因为我们登录的密码是123,所以这里传入的必须是123的md5值...
2022-06-12 11:32:54
598
原创 [GYCTF2020]Blacklist
这题的堆叠注入又学到一些新手法,记下来先进入环境输入单引号测试,发现是单引号字符型这里本来是打算用报错注入,但是过滤了很多东西,没有过滤show,就使用堆叠注入0';show databases;#0';show tables;#0';show columns from `FlagHere`;# 因为不能使用select,这里需要用到新知识...
2022-06-12 00:34:47
161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人