- 博客(60)
- 收藏
- 关注
原创 DTMF2str集成工具
注:工具根据现有的一些题型进行编写的,如果有无法解出的题型可以提issus后续进行完善。工具功能: 1、从wav文件中提取DTMF编码 2、将DTMF编码转成str字符。用于CTF中misc DTMF题中,方便ctfer解题。
2024-09-18 11:51:04 250
原创 hugo博客解决自定义域名自动部署后变回github.io
在hugo博客的根目录下的static文件夹下创建一个CNAME文件,无后缀。经过尝试后面自动化部署不会变更自定义域名。内容写写上你的自定义域名即可。
2024-09-15 10:35:45 153
原创 (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
审核源码发现加载check.php,审计发现使用了mt_rand()函数,这个函数生成的值是伪随机的。cd进去输入make后编译出的文件先chmod +x一下。然后先用脚本将所给字符串处理成工具需要的数据形式。利用原计算函数算出完整字符串。按我这个格式输入计算出种子。kali里面输入下载工具。
2024-09-04 21:05:32 491
原创 [CSCCTF 2019 Qual]FlaskLight (jinja2模版注入)
这种有参数的我先直接丢fengjing扫了一下,结果还真搞出来,这工具还是挺牛的,就是没参数的时候搞不了。输入{{7*‘7’}},返回7777777表示是 Jinjia2 模块。进入web界面输入前三个参数,表单输入就是刚才的search参数。输入{{config}}查看配置发现提示flag就在当前目录下。分析完后右边会提示你输入可以输入命令自动生成payload。或者中间加个+号也可以['__glo'+'bals__']输入{{7*‘7’}},返回49表示是 Twig 模块。下面是判断模版注入的方法。
2024-08-07 15:27:34 548
原创 [MRCTF2020]套娃 php字符串解析绕过,jsfuck编码
if($ip === '127.0.0.1' && file_get_contents($_GET['2333']) === 'todat is a happy day' )老办法伪造ip,然后利用data伪协议写入数据传给2333即可。b%20u%20p%20t=23333%0A //%20为空格url编码,%0A为回车url编码。乘以2的结果,再将得到的新的ASCII码转换回字符,并将其拼接到一个结果字符串。b%2eu%2ep%2et=23333%0A //%2e为.第二种去这个网站解析。
2024-08-07 12:07:44 686
原创 APP抓包之 Burpsuite+MuMu模拟器12抓包
写在前面高版本的安卓不能直接安装证书了,比较麻烦。步骤如下。前置工作安装adb安装openssladb配置环境变量,openssl下载好后取消捐款,配置环境变量点击这个搜索环境变量就能看到。
2024-08-01 13:01:08 1333 8
转载 PHP利用PCRE回溯次数限制绕过某些安全限制
由于NFA的执行过程存在回溯,所以其性能会劣于DFA,但它支持更多功能。我们通过发送超长字符串的方式,使正则执行失败,最后绕过目标对PHP语言的限制。“有限状态自动机”,其拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。那么,假设我们的回溯次数超过了100万,会出现什么现象呢?大意是判断一下用户输入的内容有没有PHP代码,如果没有,则写入文件。,这个结果满足正则表达式的要求,于是不再回溯。在NFA中,如果我输入。可以匹配任何字符,所以最终匹配到了输入串的结尾,也就是。
2024-07-31 19:28:03 68
原创 [FBCTF2019]RCEService (PCRE回溯绕过和%a0换行绕过)
json格式输入ls出现index.php这道题原本是给了源码的,BUUCTF没给可用bash命令有: cat tac nl more wget grep tail flag less head sed cut awk strings od curl scp rm xxd mv cp pwd ls echo sed sort可以发现过滤了相当多的字符,但是可以注意到正则匹配表达式采用了^xxx$的格式,同时也采用了.*这样的贪婪匹配,所以有两个方案来绕过正则——回溯次数超限和利用%0a。
2024-07-31 19:26:04 797
原创 [WUSTCTF2020]颜值成绩查询(布尔型盲注)
输入4之后的数字全是这个报错,几乎确定是盲注了,而且有回显只能是布尔型盲注。这道题一个查询框只能查1-4,扫没有发现其他功能,多半注入题。掏出我82年的脚本来,注入题还是得脚本快。flag在flag表的value里面。
2024-07-31 16:27:11 183
原创 [GYCTF2020]FlaskApp (pin码,jinja2绕过注入)
对于非docker机每一个机器都会有自已唯一的id,linux的id一般存放在/etc/machine-id或/proc/sys/kernel/random/boot_i,有的系统没有这两个文件,windows的id获取跟linux也不同。PIN 机制在 [Flask debug 模式 PIN 码生成机制安全性研究笔记](https://www.cnblogs.com/HacTF/p/8160076.html) 一文中有详细的研究。我是在/etc/machine-id下找到的,也就是第三个payload。
2024-07-31 11:47:44 1268
原创 [SUCTF 2019]Pythonginx (unicode转IDNA域名分割漏洞)
代码我看到这两个就感觉有问题了,第一个转编码这个搜了一下是unicode转idna的问题,第二个urlopen是Python标准库中模块中的一个函数,用于向指定的URL发送HTTP请求并获取响应这个网站搜U+2106即可看到。
2024-07-31 09:50:39 411
原创 [BJDCTF2020]EasySearch (SSI注入漏洞)
使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或者叫"服务器端包含",是一种类似于ASP的基于服务器的网页制作技术。这题ctrl+U发现往index.php提交数据,但是我目录,git泄露,sqlmap,爆破admin密码都没有作用,数据包页面也没有什么重置密码注册的功能。接下来,使用uniqid()函数生成一个唯一的字符串,并将其与$random拼接在一起,形成最终的字符串$content。
2024-07-30 19:51:08 1059
原创 [CISCN 2019 初赛]Love Math(利用函数和进制转换构造hen2bin函数)
又因为限制长度80,我们把base_convert(37907361743,10,36)(dechex(156217328980))赋值给一个变量$sin,即$sin=base_convert(37907361743,10,36)(dechex(156217328980))构造payload:?($$pi){pi}(($$pi){cos})&pi=exec&cos=ls /:这个函数执行外部程序并返回最后一行输出的字符串。($_GET['a'])($_GET['b'])就等于$a$b即exec(ls /)
2024-07-28 19:18:59 747
原创 网络安全入门必读书籍
图文结合的方式,阅读起来比较轻松,新手也可以通读,可以提高实战技能。和《Web安全攻防》一样,偏向于实战,不同的是这本书主要讲解的是Web攻击的各种经典手段、方案、核心技术等,此外还介绍了一些检测方式,可以学习参考一下。从攻击者的角度来审视网络框架,包含了大量实例、源码、渗透测试工具、方法和实践,第2版还在第1版的基础上,增加了一些内容,更全面,技术参考性更强。这本书共499页,4大篇,18章,是阿里最年轻的高级技术专家吴翰清的著作,在全球各地都有发行,安全从业必读书籍,很多业内人士也都强烈推荐。
2024-07-28 16:46:57 507
原创 [SWPU2019]Web1 二次注入+无列名注入
构造payload:-1'/**/union/**/select/**/1,(select/**/group_concat(c)/**/from/**/(select/**/1/**/as/**/a,2/**/as/**/b,3/**/as/**/c/**/union/**/select/**/*/**/from/**/users)/**/as/**/d),database(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'
2024-07-27 19:33:33 735 1
原创 [CISCN2019 华东南赛区]Web11
进来先做信息收集,右上角显示当前ip,然后有api的调用地址和请求包的格式以及最重要的是最下面的smarty模版,一看到这个就得想到smarty模版注入测试了一下两个api都无法访问直接切到数据包看看能不能通过XFF来修改右上角ip成功修改!结合给的信息smarty模版来看这道题应该是在XFF这里进行模版注入。
2024-07-27 16:10:20 755
原创 [网鼎杯 2020 朱雀组]Nmap(详细解读版)
这道题考察nmap的一些用法,以及escapeshellarg和escapeshellcmd两个函数的绕过,可以看这里两种解题方法:第一种通过nmap的-iL参数读取扫描一个文件到指定文件中第二种是利用nmap的参数写入webshell-oN 标准保存-oX XML保存-oG保存-oA 保存到所有格式。
2024-07-27 13:59:36 1318
原创 [ASIS 2019]Unicorn shop
搜索1000,国外网站用英文,然后找一个字符串拿去放到price里面买马即可。这道题买马,但是限定输入一个字符,我们输入10后会报错。这道题考的就是Unicode码下的单字符转换后大于一千。直接上这个网站搜索就行。
2024-07-26 19:30:49 312
原创 BUUCTF [安洵杯 2019]easy_serialize_php
然而因为filter函数的过滤,将php和flag过滤掉,因为指定的键名长度为10,产生了字符串逃逸,我们在后面随便添加几个垃圾字符让它往后读取形成一个新的键名,形成一个键值对,如下所示是payload过滤加上字符串逃逸后形成的序列化数据。php反序列化的过程中必须严格按照序列化规则才能成功实现反序列化,如果出现这种情况s:10:"flag",键名长度为4,但规定长度为10,就会造成字符串逃逸向后读取,这里是我们解题的关键。s:3:"img";后面代码中先进行序列化操作,原本的序列化数据应该为。
2024-07-25 18:42:49 1099
原创 BUUCTF [MRCTF2020]Ezpop
b->source->str = $c中$b->source已经成为一个新的Show实例对象,通过该对象访问str,为其赋值为$c(Test类的对象),又因为Test类中访问不到source资源从而触发get方法。$b->source = new Show()因为通过$b这个对象进行访问的,所以需要source赋值一个新的Show对象,用来触发__toString方法。$c->p = $a将Test中的p赋值为一个Modify对象,用来触发invoke方法。得到一串base64。
2024-07-24 20:37:47 778
原创 SSTI 攻防世界 Confusion1
具体来说,__class__是一个内置属性,表示一个对象所属的类。即""[request.args.__class__]和"".__class__效果是一样的,但是因为在语句中过滤了基础类,我们可以采取变量赋值的方式绕过限制。解析:"".__class__.__mro__[2].__subclasses__()方法返回的是可用类(classes),而不是对象(objects)。综上所述,"".__class__.__mro__[2].__subclasses__()方法返回的是可用类(classes)。
2024-07-24 11:52:50 879
原创 攻防世界 wife_wife
大概原理就是类那里属性值也被修改,已经提前知道了,打个比方:你妈生下来了你自然知道你是她儿子,你就不用再证明你是她儿子了!会被认为是一个真正的“键名”,如果修改实例化对象的__proto__属性的值也会将类的prototype值进行修改,结合这道题实现越权以管理员身份登录。这道题两个功能点,登录和注册,注册选择是否管理员,选择是要输入邀请码,不然就是普通用户,进去里面给了个假flag调戏我!还有个妮露图片(我不是原皮!我是大致明白了,实例化的对象会继承类的prototype属性,JSON 解析的情况下,
2024-07-23 19:45:59 296
原创 BUUCTF [安洵杯 2019]easy_web
结合刚才ctrl+U发现输出base64编码的文件内容,index.php里面多半有源码,我们需要按照上面这个相反方式把index.php 字符转16进制ascii,记得去掉空格,空格会影响编码结果,我就是吃了这个的亏!这个东西看着就像base64编码,解码两次得到一串数字,可能还是什么东西我又解了一次,发现是十六进制转字符。burp修改请求方式,cmd传参dir列出当前目录文件(因为我试了ls不行哈哈哈),但是没有flag。输入到img参数中,把这串base64编码解码得到源码,正席开始!
2024-07-22 19:58:19 480
原创 BUUCTF [BJDCTF2020]Cookie is so stable
这道题先点了一下没发现什么get参数,dirsearch和githack都扫了一下没啥收获,后面在hint源码中发现一行注释让我们仔细看cookie又回去在flag页面随便输个名字(只有这里有操作的地方),看到发了两个数据包,post方式包里面带两个请求体参数,不过cookie没有什么异常get型数据包里面发现多了一个参数usercookie一般存在什么问题,伪造身份,注入?这里伪造身份肯定不存在,那就只能注入了,但是有个问题是我们输入的数据被当做数据打印出来了,那就没法sql注入。
2024-07-22 17:19:45 394
原创 BUUCTF [WUSTCTF2020]朴实无华
第一块就是intval函数的绕过,逻辑上是不存在小于2020又大于2021的数,但是php低版本好像是7点多和以下该函数对不同类型的数据处理有偏差,第二处则是md5函数绕过,
2024-07-22 16:42:40 713
原创 unseping
将我们的base64编码并且序列化的数据经过post请求发送到PHP文件处理,代码首先接受数据然后base64解码反序列化,又因为wakeup这个魔术方法在反序列化前会被优先调用,所以执行wakeup方法:遍历关联数组args,将每个键对应的值用waf方法进行正则匹配,如果匹配通过后返回原字符串,否则打印hack,由此可以看出args存放的是系统命令这些。"、空格字符、斜杠字符"/",以及字符串"cat"、"flag"、"tac"、"php"、"ls"。okk,到这里差不多读懂代码了,
2024-07-15 16:12:05 688
原创 攻防世界 level3
利用栈溢出漏洞通过main里的write函数打印出write函数在got表的地址,再与libc库中的write函数地址相减计算出elf中函数和libc中函数之间偏移量(无论地址怎么变化,elf中函数与在libc库中函数的偏移量总是相等的),再通过偏移量计算出内存中的system,/bin/sh的地址,再一次利用栈溢出漏洞即可。果然,buf只能装136,read可以读0x100,200多应该,超出范围,存在栈溢出漏洞。可以写脚本了,建议先打通本地后再远程,以后实战也是这样,注释写脚本里面了,有问题丢评论。
2024-07-14 09:25:52 229
原创 攻防世界easyphp
array_search函数又是弱类型比较,所以我们在c["n"]嵌套的数组再加一个0即可绕过,不让他终止程序,c["n"]数组中没有这个字符串循环里面不可能终止程序,然后得到$key2=2。先从第一部分开始,要让a取整的值大于六百万而且长度不能大于3,我们可以使用科学计数法,比如7e6,结果七百万而且长度刚好为3。最终payload:?a=7e6&b=53724&c={"m":"2023a","n":[[],0]}得出53724符合这个条件,所以?a=7e6&b=53724即可让$key1=1。
2024-07-13 10:42:02 365
原创 攻防世界lottery
burp抓包放七个true在数组里边就行了,因为前面循环是a[i]所以把双引号去掉丢数组里面即可,多玩几次就可以凑够钱。这是一个大乐透网站,猜七位数和开奖的七位数相等就可以拿到最高奖项,多玩几次筹够钱直接去买flag即可。这道题我看了很久附件最后发现没啥用,就是一个弱类型比较。Claim your prize这里直接买flag!进来首先点击去玩创个号,输个名字。审计代码,在api.php里面。
2024-07-12 16:25:29 450
原创 攻防世界 string
运行程序手动调试输入AAAA-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p来查找输入数据在格式化字符串中的参数位置为7(从0开始的的)国际惯例file,checksec一下,发现是64位的elf文件,不可修改got表,栈溢出保护开启,nx不可执行,没开地址随机化。第三个函数内容主要是让主程序给的两个数相等,它们原本不相等,但我们可以利用上面的格式化字符串漏洞修改使其中一个数等于另外一个。上面east后的内容是下面这个函数的。
2024-07-12 11:02:36 634
原创 攻防世界 cgpwn2
看到这fgets读取我们的输入到name中,因为程序没留shell,我们可以直接传入/bin/sh这个系统的默认shell,又因为下面使用gets从s中读取,我们可以使用让s溢出返回我们在name里面传入的默认/bin/sh。下面这个是利用plt查找system在got表中的地址,以后程序开启地址随机化的话函数的地址是变化的,就需要这么来找。s的内存空间+0处start到s需0x26字符,r是偏移指针到start处需0x4字符。system函数的地址我们刚才已经找到了,可以直接写脚本了。
2024-07-12 10:31:01 1073
原创 攻防世界(PHP过滤器过滤)file_include
该过滤器不支持参数,但可使用输入/输出的编码名称,组成过滤器名称,比如 convert.iconv.. 或 convert.iconv./ (两种写法的语义都相同)。转换过滤器官方文档:https://www.php.net/manual/zh/filters.convert.php#filters.convert.iconv。burp爆破用这个字典。
2024-07-11 11:26:18 506
原创 攻防世界 ics-05
将这串base64码解码后找到PHP重要内容为,preg_replace($pattern, $replacement, $subject)函数的作用是在$subject中搜索符合$pattern的部分,并用$replacement替换找到的部分。在preg_replace($pattern, $replacement, $subject)中将前面拼接一个/e,$replacement传值为要执行的命令即可。发现路径,是刚才那个文件夹下的,可以直接列出那个文件夹下的文件,比find快。
2024-07-10 11:04:27 263
原创 攻防世界 (Django @宽字节注入)Cat
POST方式说明这里数据提交的逻辑是:客户端将get数据提交给PHP,php使用post方式给Djanjo写的api,在报错页面中可以看到应该是/api/ping。带着上面的疑问不知道该怎么办,看了一一篇别人的wp才发现脑子瓦特了,直接全复制html代码找个在线运行html网站跑一下发现是Django的报错页面,这么看就方便多了,看数据大多是刚才那个表单提交的。表单提交的地址我搜了一下发现还能访问但是不知道是干嘛的,ai搜了一下原来是个协作写代码的平台。这html代码太多了,我找到个表单发现了很多东西。
2024-07-09 11:10:23 745
空空如也
咨询一下hugo博客自定义域名问题
2024-09-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人