m0nst3r's blog

Hello, Bugs

0%

DAPP

dApp在私有测试区块链环境下的部署过程,过程中使用了他人的智能合约及前端程序。

环境准备

GO环境

访问Golang官网并下载:https://golang.org/doc/install

1
2
3
https://golang.org/dl/go1.15.7.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.15.7.linux-amd64.tar.gz # sudo if needed
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc

GO <1.13无法从源码安装go-ethereum

安装geth

  1. 下载go-ethereum:
    1
    2
    3
    4
    git clone https://github.com/ethereum/go-ethereum.git
    cd go-ethereum
    make geth # make all
    echo 'export PATH=$PATH:<PWD>/build/bin' >> ~/.bashrc

创世

Read more »

GOT Hijack

GOT表劫持。

GOT和PLT

个人理解
GOT, global offset table,全局偏移表;PLTprocedure linkage table,函数链接表。
GOT和PLT是重定向的一种实现方式。在程序编译时(动态编译),在程序中会留下一些变量和函数的“坑”,这些坑只记录了程序用到的变量和符号,但并没有真正实现的代码,而程序运行时,会由解释器或动态链接器ld在这些坑中填上真正变量或函数的地址,比如我们使用到puts函数,在二进制文件中并不会把puts函数代码编译进去,而是在GOT表中留下了puts函数的一个地址,这个地址指向plt表,而plt表会通过dl_runtime_resolve来把这个函数地址解释出来,再将这个地址填回GOT表中的坑,这时GOT表的puts函数就不会再次指向plt表,而是直接指向内存中真正puts函数的地址,这种机制叫做延迟绑定
GOT 位于 .got.plt section 中,而 PLT 位于 .plt section中

GOT劫持

GOT劫持就是通过程序的漏洞或功能,将GOT表中的函数地址修改为我们想要执行的函数或代码地址,当程序再次调用该函数时,就会跳转到我们的目标地址处开始执行,进而劫持程序执行流程。

练习

源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// gcc gothijack.c -no-pie -z execstack -o gothijack
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

char name[0x40];

void win(){
system("sh\n");
return;
}

int main()
{
int unsigned long long addr;
setvbuf(stdin, 0, 2, 0);
setvbuf(stdout, 0, 2, 0);
printf("What's you name?\n");
read(0, name, 0x40);
printf("Where do you want to write?\n");
scanf("%llu", &addr); // <------- 在这里输入我们想要写数据的地址,我们改为GOT表中PUTS项的地址
printf("Data: ");
read(0, (char *)addr, 8); // <-------------- 在这里输入我们想要写入的数据,改为win函数的地址
puts("Done!"); // <------------------ 当程序再次调用puts函数时,由于我们劫持了GOT表中puts函数的地址,会执行我们的win函数
printf("Thank you %s!\n", name);
return 0;
}

思路:

Read more »

涉及工具

  • JEB
  • DDMS
  • frida
  • frida-dexdump
  • burpy

过程

又是喜闻乐见的加密流量!搞它。

APP是加壳的,先上frida-dexdump脱壳。

这么多有encrypt关键字的,不好找,我们上DDMS

通过profilling,我们很容易就能定位到加密函数:

JEB,打开我们已经脱掉的dex文件:

Read more »

高效处理H5站点流量加解密

做项目时,如果遇到上面的流量,是不是觉得有点无从下手?

今儿就看下如何使用Burpy来高效处理流量加解密。

Burpy

先来地址:Github: https://github.com/mr-m0nst3r/Burpy

直接在Release下载下来,加载到BurpSuite

它本身的功能很简单,就是执行我们指定的python脚本,而python脚本能用来干啥,你可以百度一下(你能想到的,基本都能做到)。

大概的实现是这样的:

  • 启动一个RPC服务器,作为Java和Python之间的数据交换桥梁
  • 解析python脚本,并新建Burpy类的一个实例
  • 将脚本中的一些函数加载到BurpSuite右键菜单
  • 当点击Burpy菜单项时,整个HTTP数据包通过RPC传给python脚本的对应函数进行处理,返回处理后的HTTP数据包,并更新BurpSuite
Read more »

转发自安全客,https://www.anquanke.com/post/id/206430

Burpy是一款能够打通BurpSuite和Python之间任督二脉的插件,从此之后,你可以用你的python任意处理Http包了!

Burpy

首先,BurpSuite插件已经那么多了,真的缺这一个?
面对这个To be, or not to be的灵魂之问,咱们先回答一下下面的问题:

  • 你的BurpSuite中有多少插件?
  • 你有没有这样的情况:有些工作我用大python写的,测试的时候需要burpsuite,所以干活的时候是不断地在命令行、Burpsuite、浏览器三个之间来回切换。

我就遇到一个RSA加密的流量,没有这个插件,我干活的状态应该是这样的:

  • 编写一个RSA加密脚本
  • 打开一个命令行,执行命令把我的payload加密
  • 右键复制
  • 切换到BurpSuite,粘贴加密之后的payload
  • 发送请求,分析返回结果
  • 切换到命令行,更换payload,执行python脚本加密
  • 再复制
  • 再粘贴
  • 再发送请求
    ….

上面过程我才测试了两个payload,如果你有50个payload,你是不是想把电脑摔了?或者问候一下某人先人?

有朋友可能会说了,我有插件呀!
对,RSA可以弄个插件。那下一个活,不是RSA了,加了签名怎么办?
答:再写个插件!
对,如果下一个活,加密/签名算法不一样,比如有些加了时间戳,取url中后6位与时间戳合并,算32位的md5之后,把md5从中间劈开,前16位做key/后16位做iv,做了AES呢?
答:再写个插件!
….

那结果可能是,你的BurpSuite中装满了各式各样的插件!

Read more »

无线安全检查

准备

  1. 工具: 一块8187无线网卡

  2. 安装aircrack-ng: sudo pacman -S aircrack-ng

  3. 安装pyrit: sudo pacman -S pyrit

抓包

  1. 开启网上监听模式:
    sudo airmon-ng start <interface>

  1. 确定目标:
    sudo airodump-ng <mon-interface>

就来测试一下ES-120727这个无线的安全。

Read more »

[TOC]

Android 9上已经不支持Xposed了,所以需要安抚Magisk Taichi。功能与Xposed基本相同。

下面的安装步骤是基于谷歌新儿子-Pixel 一代的。其他手机请在第一步的时候,也就是安装TWRP的时候选择自己的机型。

安装twrp

https://twrp.me/google/googlepixel.html

1
2
3
4
# 安装twrp
adb push twrp-pixel-installer-sailfish-3.3.0-0.zip /sdcard/
adb reboot-bootloader
fastboot boot path/to/twrp.img

在twrp里面把上面push进去的zip安装了。重启。

安装Magisk

https://github.com/topjohnwu/Magisk/releases

1
2
adb push Magisk-vxxxx.zip /sdcard
adb reboot-bootloader
Read more »

原因

自己在VPS上也可以弄,这个博客上有设置方法,还能够自动更新HTTPS证书。可自行查找。

但作为一个记录、分享型的博客,没必要用后端数据库,直接静态页面就行。

而静态页面最好就是用Markdown写作了。

那自然想到Hexo,但Hexo如果放在VPS上,还需要配置nginx或者hexo-admin插件,才能像常规CMS一样更新内容。总感觉有些不方便。

于是就有了这次的折腾。

结果

折腾完之后,工作流是这样的:

  1. 本地hex new \[文章名字\]
  2. 本地 vscode,编写markdown
  3. 写完之后,hexo g && hexo d 自动上传到gitee和github。是的,两个同时传。
  4. gitee无法绑定个人域名,github可以。所以两个都传。都免费的,不用白不用,万一其中一个不能用了,另一个顶上。

配置

Read more »

angr_ctf

一个练习angr用法的题目,里面有说明指导。https://github.com/jakespringer/angr_ctf/

因为国内相关资料太少了,所以做成了视频,更新在B站。

刚开始接触相关内容,视频只能算抛砖引砖,表达能力与水平比较低,轻喷

BiliBili 播放列表,还在持续更新
https://space.bilibili.com/386563875/channel/detail?cid=109932

QQ群:951587491
群内还是有大神的。

Read more »

Touchpad control on Linux running on Alienware is not supported by Fn+f11, so you may need this small script.

new to shell script, you might want improve it

1
2
3
4
5
6
7
8
9
#!/bin/bash

if [ "$1" == "on" ]; then
/usr/bin/xinput enable "`xinput list | grep -i touchpad | awk '{print $3" "$4" "$5}'`"
elif [ "$1" == "off" ]; then
/usr/bin/xinput disable "`xinput list | grep -i touchpad | awk '{print $3" "$4" "$5}'`"
else
echo " Usage: touchpad on/off"
fi

You might wannt to change awk '{print $3" "$4" "$5}' part so to get your whole touchpad name. Check before you run

chmod +x this.sh && ls -s this.sh .bin/touchpad is recommended.

Read more »