网络安全日报 2020年11月3日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、新的NAT /防火墙绕过攻击可以访问任何TCP / UDP服务
https://thehackernews.com/2020/11/new-natfirewall-bypass-attack-lets.html
2、Oracle发布WebLogic漏洞CVE-2020-14750紧急补丁
https://securityaffairs.co/wordpress/110329/hacking/cve-2020-14750-weblogic-server-flaw.html
3、Maze勒索软件运营商宣布正式停止运营
https://securityaffairs.co/wordpress/110318/cyber-crime/maze-ransomware-teminates-operations.html
4、APT团体Kimsuky被发现使用新的恶意软件
https://securityaffairs.co/wordpress/110306/apt/kimsuky-apt-new-malware.html
5、美国在线金银交易商JM Bullion遭遭Magecart攻击
https://securityaffairs.co/wordpress/110290/cyber-crime/jm-bullion-hacked.html
6、英国ICO对万豪酒店2018年数据泄露处以1840W英镑罚款
https://securityaffairs.co/wordpress/110297/data-breach/uk-ico-fines-marriott.html
7、 WeWork打印管理账号被曝使用了弱口令
https://techcrunch.com/2020/11/01/wework-employees-used-an-alarmingly-insecure-printer-password/
8、网络诈骗通过Google云端硬盘协作功能来发送恶意链接
https://threatpost.com/scammers-google-drive-malicious-links/160832/
9、研究人员展示了可以感染机器学习模型的“无触发”后门
https://portswigger.net/daily-swig/triggerless-backdoors-can-infect-machine-learning-models-without-leaving-a-trace-research
10、TrickBot死灰复燃
https://cyware.com/news/trickbot-rises-from-the-ashes-d02b0e92
细说php反序列化字符逃逸
相关实验推荐--https://www.yijinglab.com/expc.do?ec=ECID172.19.104.182016010714511600001&pk_campaign=heetian-wemedia (通过本次实验,大家将会明白什么是反序列化漏洞,反序列化漏洞的成因以及如何挖掘和预防此类漏洞。)
前言
php反序列化的字符逃逸算是比较难理解的一个知识点,在最近的好几场比赛中都出现了相关的题,于是下定决心彻底理解透彻这个知识点,于是便有了这篇文章。
基础知识理解
字符逃逸在理解之后就能够明白,这是一种闭合的思想,它类似SQL中的万能密码,理解这种原理之后会变得特别容易。
在SQL注入中,我们常用'、"来对注入点进行一些闭合或者一些试探,从而进行各种姿势的注入,反序列化时,序列化的值是以;作为字段的分隔,在结尾是以}结束,我们稍微了解一下,
<?php
class people{
public $name = 'Tom';
public $sex = 'boy';
public $age = '12';
}
$a = new people();
print_r(serialize($a));
O:6:"people":3:
{s:4:"name";s:3:"Tom";s:3:"sex";s:3:"boy";s:3:"age";s:2:"12";}
反序列化的过程就是碰到;}与最前面的{配对后,便停止反序列化。我们可以将上面的序列化的值稍作改变:
O:6:"people":3:
{s:4:"name";s:3:"Tom";s:3:"sex";s:3:"boy";s:3:"age";s:2:"12";}123123
可以看到,并没有报错,而且也顺利将这个对象反序列化出来了,恰好说明了我们以上所说的闭合的问题,与此同时,修改一些序列化出来的值可以反序列化出我们所知道的对象中里没有的值,在学习绕过__wakeup就能过知道了,这里可以自己去做一些尝试,去理解。
接下来就是要说到报错的时候了,当你的字符串长度与所描述的长度不一样时,便会报错,比如上图中s:3:"Tom"变成s:4:"Tom"或s:2:"Tom"便会报错,为的就是解决这种报错,所以在字符逃逸中分为两类:
1.字符变多
2.字符减少
关键字符增多
在题目中,往往对一些关键字会进行一些过滤,使用的手段通常替换关键字,使得一些关键字增多,简单认识一下,正常序列化查看结果
这里,我们对序列化后的字符串进行了替换,使得后来的反序列化报错,那我们就需要在Tom这里面的字符串做手脚,在username之后只有一个age,所以在双引号里面可以构造我需要的username之后参数的值,这里修改age的值,我们这里将Tom替换为Tom";s:3:"age";s:2:"35";}然后进行反序列化,这里指的是在对username传参的时候进行修改,也就是我们写链子的时候进行的操作
可以看到构造出来的序列化字符串长度为25,而在上面的反序列化过程中,他会将一个o变成两个,oo,那么得到的应该就是s:25:"Toom"我们要做的就是让这个双引号里面的字符串在过滤替换之后真的有描述的这么长,让他不要报错,再配合反序列化的特点,(反序列化的过程就是碰到;}与最前面的{配对后,便停止反序列化)闭合后忽略后面的age:13的字符串成功使得age被修改为35。
而age的修改需要前面的字符串username的值长度与描述的一样,这需要我们精确的计算,这里是将一个o变成两个,以下就只写o不写Tom,效果一致,我们需要知道我们除了双引号以内的,所构造的字符串长度为多少,即";s:3:"age";s:2:"35";}的长度22,那就需要22个o,
总的来说就是22个o加上后面的字符串长度22,总长度就为44,在被过滤替换后,光o就有44个,符合描述的字符串长度。下面就说明(为什么叫做逃逸)
这里特意写了"将一大串o进行与前面的"闭合了,如果直接反序列化,在序列化出来的值中就包含了";s:3:"age";s:2:"35";}。
反序列的过程中,所描述的字符串长度(这里为44),而后面双引号包裹的字符串长度(这里为22)不够所描述的长度,那么他将会向后吞噬,他会将后双引号吞噬,直至足够所描述的长度,在一切吞噬结束之后,序列化出来的字符串如果不满足反序列化的字符串的格式,就会报错。我们这里是他吞噬结束后,还满足这个格式,所以不报错。
在这个例子中,我们利用他对序列化后的值,进行增加字符串长度的过滤,让他填充双引号内的字符串达到所描述的44这么长,使得后面的s:3:"age";s:2:"35";不被吞噬,让这部分代码逃逸出吞噬,又让他提前遇到}忽略后面的一些不需要的字符串,结束反序列化。
可以看到,我们构造的payload是成功修改了age,这里是数组,在对对象操作时也是一样的。
刚刚说到吞噬,在增加字符串的题目中,我们是利用题中的增加操作,阻止他进行向后吞噬我们构造的代码,而在字符减少的过程中,我们也是利用这个操作。
关键字符减少
有了前面”吞噬“的一种解释,那么字符串减少就很好说了 ,同样的也是因为替换的问题,使得参数可以让我们构造payload
这里的错误是因为s:5:"zddo"长度不够,他向后吞噬了一个双引号,导致反序列化格式错误,从而报错,我们要做的就是让他往后去吞噬一些我们构造的一些代码。以下讲具体实施。
同样的,我们这里以修改age为例,不同的是与增加字符串传值的地方有些许不同,我们构造的值是有一部分让他吞噬的
先正常传递值序列化出我们需要修改的值,我们需要的是将age:13改为35
取出";s:3:"age";s:2:"35";}这就是我们需要构造的,接着继续将这部分内容重新传值,序列化出来,得到下面的结果
选中部分就是我们构造出来,他需要吞噬的代码,s:22:""这个双引号里面我们还有操作的空间,用来补齐字符串长度,接着就是计算我们自己所需要吃掉的字符串长度为18,根据过滤,他是将两个o变成一个,也就是每吃掉一个字符,就需要有一个oo,那我们需要吃掉的是18个长度,那么我们就需要18个oo,在吞噬结束之后我们的格式又恢复正确,使得真正的字符s:3:"age";s:2:"35";逃逸出来,成功加入反序列化
这就是我们最终的payload,可以看到下图成功修改了
例题
有了以上基础,就可以做题了,简单的开始入手
安恒四月(字符减少)
<?php
show_source("index.php");
function write($data) {
return str_replace(chr(0) . '*' . chr(0), '\0\0\0', $data);
}
function read($data) {
return str_replace('\0\0\0', chr(0) . '*' . chr(0), $data);
}
class A{
public $username;
public $password;
function __construct($a, $b){
$this->username = $a;
$this->password = $b;
}
}
class B{
public $b = 'gqy';
function __destruct(){
$c = 'a'.$this->b;
echo $c;
}
}
class C{
public $c;
function __toString(){
echo file_get_contents($this->c);
return 'nice';
}
}
$a = new A($_GET['a'],$_GET['b']);
//省略了存储序列化数据的过程,下面是取出来并反序列化的操作
$b = unserialize(read(write(serialize($a))));
看到上面的代码,很明显,我们需要利用file_get_contents();读取文件,将flag读取出来,但是他是个__toString()方法,我们就要让他触发这个方法,当反序列化出对象后,被当作字符串使用时,就可以触发,那我们就需要写一个链,与此同时我们也要知道字符串被删减了几个字符
function write($data) {
return str_replace(chr(0) . '*' . chr(0), '\0\0\0', $data);
}
function read($data) {
return str_replace('\0\0\0', chr(0) . '*' . chr(0), $data);
}
看这一部分即可了解到,如果发现不可见字符*不可见字符,字符串就会增多,接着又将\0\0\0的6个字符变成3个字符不可见字符*不可见字符,我们自己是不会去写入不可见字符的在这道题中,相反可以故意写入\0\0\0使得字符串减少,通过计算逃逸字符,读取flag文件
题目中序列化的是对象$a,里面有两个参数,username和password,我们要传入的也是这两个参数的值,所以我们构造的payload,应该是往password传我们构造好的字符,而在username传入的为计算好的\0\0\0个数,
按照流程来,先写一个链子,某些参数先随便写
";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:5:"/flag";}}}
选中部分就是我们需要重新传参的地方,我们传进password,再次序列化看看效果
我所选择的地方就是需要被吞噬的部分,然后才能使得后边的代码全部逃逸,长度为23,计算后发现需要8个\0\0\0,但8个这样的符号会吞噬24个字符,因此我们可以在s:70:""双引号里面可以随意补一个字符让它吞噬。
因此我们最终在password里面传参的应该是:
i";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:5:"/flag";}}}
而在username中传的就是8个\0\0\0:
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
最终payload:
?a=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&b=i";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:5:"/flag";}}}
0CTF piapiapia(字符增加)
扫描目录发现http://www.zip/,下载后开始,审计源码
我们根据他的网页一步步看源码,首先他要我们登陆,我们先注册一个账号进行登陆
看到上图的界面,这时我们看到update.php,都是一些对参数的白名单按要求写即可,图片也随便传一个符合大小的即可,但是注意nickname是我们要操作的地方,稍后讲解,然后有个序列化数组的过程
$user->update_profile($username, serialize($profile));
在上传成功后,他会到profile.php,我们看到profile.php,有这么一段东西
$profile = unserialize($profile);
$phone = $profile['phone'];
$email = $profile['email'];
$nickname = $profile['nickname'];
$photo = base64_encode(file_get_contents($profile['photo']));
这里告诉我们,他反序列化的是profile这个数组序列化后的值,读取的是键名为photo里面的文件名,而flag在config.php也就是说我们需要构造的就是数组中$profile['photo']='config.php'
那么怎样才能让他读这个config.php呢
我们看到class.php,看到父类mysql中:
public function filter($string) {
$escape = array('\'', '\\\\');
$escape = '/' . implode('|', $escape) . '/';
$string = preg_replace($escape, '_', $string);
$safe = array('select', 'insert', 'update', 'delete', 'where');
$safe = '/' . implode('|', $safe) . '/i';
return preg_replace($safe, 'hacker', $string);
}
发现序列化的值他会传递给user中的方法update_profile,接着update_profile又将这个值传递给了父类方法filter,显而易见,就是一种过滤,防止sql注入,但是可以发现,他是以替换的方式给返回值,在过滤的字符串中,只有where变成hacker,由5个字符变成6个,所以是字符增加的逃逸方式,接着开始构造
选择部分是需要传入的,在phone和email都是白名单,传入的格式受限制,只有nickname是黑名单,所以我们要绕过这个黑名单,bp抓包
他使用的是strlen()所以这里有个方式,这个函数如果参数是字符串,那么数出来的就是字符串个数,如果是数组,那么数出来的就是数组元素的个数
将nickname改成nickname[]然后传参
传的参数我们需要构造,需要计算,上面分析了我们需要构造的字符串";}s:5:"photo";s:10:"config.php";},但是他是字符增多,我们就需要知道需要逃逸的字符有多少个,计算了一下为34个,(这里因为改为了数组,而数组的序列化格式结束后是一个大括号,所以我们在一开始的”;后面增加了一个花括号)所以需要34个where帮助我们逃逸这部分代码,上传成功,根据这个修改放包即可
返回网页点击
之后可以看到一张显示不出来的图片,因为使用base64编码了,右击查看图片信息
解码即可看到flag
网络安全日报2020年11月2日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、安全专家已提取用于加密英特尔CPU微代码的密钥
https://arstechnica.com/gadgets/2020/10/in-a-first-researchers-extract-secret-key-used-to-encrypt-intel-cpu-code/
2、严重的OpenEMR漏洞使黑客可以远程访问健康记录
https://www.securityweek.com/critical-openemr-vulnerabilities-give-hackers-remote-access-health-records
3、黑客正在出售从17家公司窃取的3400万份用户记录
https://www.bleepingcomputer.com/news/security/hacker-is-selling-34-million-user-records-stolen-from-17-companies/
4、NVIDIA修补了影响多个主要供应商的AMI BMC漏洞
https://www.securityweek.com/nvidia-patches-ami-bmc-vulnerabilities-impacting-several-major-vendors
5、微软称超过10台在线计算机仍容易受到SMBGhost攻击
https://securityaffairs.co/wordpress/110247/hacking/smbghost-vulnerable-machines-dangers.html
6、REvil勒索软件入侵了游戏公司GPI
https://securityaffairs.co/wordpress/110237/cyber-crime/gaming-partners-international-revil-ransomware.html7、谷歌披露了正在被利用的Windows 0day漏洞
https://securityaffairs.co/wordpress/110193/hacking/google-discloses-windows-zero-day.html
8、WordPress发布新版修复了数十个安全漏洞
https://threatpost.com/wordpress-patches-rce-bug/160812/
9、攻击者正在劫持普渡大学等热门高校的电子邮件帐户
https://threatpost.com/university-email-hijacking-phishing-malwarephishing-malware/160735/
10、FreeBSD 修复 icmp6 的一个远程 UAF 漏洞
https://lists.freebsd.org/pipermail/freebsd-net/2020-October/057124.html
网络安全日报 2020年10月30日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、KashmirBlack僵尸网络劫持了数十万个主流CMS网站
https://thehackernews.com/2020/10/kashmirblack-botnet-hijacks-thousands.html
2、StackRox发布用于查找Kubernetes错误配置的开源工具
https://www.securityweek.com/stackrox-releases-open-source-tool-finding-kubernetes-misconfigurations
3、Hörmann制造的网关设备存在漏洞可远程打开车库门
https://www.securityweek.com/hackers-can-open-doors-exploiting-vulnerabilities-h%C3%B6rmann-device
4、FBI和CISA发布联合警报警告医疗保健部门即将面临勒索软件攻击
https://securityaffairs.co/wordpress/110147/cyber-crime/ransomware-attacks-healthcare-sector.html
5、Oracle WebLogic严重漏洞CVE-2020-14882已被在野利用
https://securityaffairs.co/wordpress/110137/hacking/weblogic-flaw-cve-2020-14882-attacks.html
6、安全厂商披露Turla APT攻击欧洲政府组织
https://securityaffairs.co/wordpress/110127/apt/turla-target-eu-gov-org.html
7、瑞典领先的安全公司Gunnebo AB遭勒索软件攻击后数据被泄露
https://www.hackread.com/mount-locker-ransomware-group-gunnebo-ab-data/
8、伊朗组织Phosphorous攻击潜在会议参与者
https://blogs.microsoft.com/on-the-issues/2020/10/28/cyberattacks-phosphorus-t20-munich-security-conference/
9、虚假COVID-19调查针对大学传播勒索软件
https://blog.malwarebytes.com/cybercrime/2020/10/fake-covid-19-survey-hides-ransomware-in-canadian-university-attack/
10、Maze勒索软件正打算关闭其业务
https://www.bleepingcomputer.com/news/security/maze-ransomware-is-shutting-down-its-cybercrime-operation/
网络安全日报 2020年10月29日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、 US-CERT披露朝鲜APT组织Kimsuky的TTP
https://us-cert.cisa.gov/ncas/alerts/aa20-301a
2、网络钓鱼活动针对公共和私营部门窃取凭据
https://www.recordedfuture.com/fiercephish-credential-harvesting-campaign/
3、家具巨头Steelcase遭到Ryuk勒索软件攻击
https://www.bleepingcomputer.com/news/security/steelcase-furniture-giant-hit-by-ryuk-ransomware-attack/
4、黑客入侵安全公司窃取瑞典当局和银行数据
https://ciso.economictimes.indiatimes.com/news/swedish-authorities-banks-hit-by-security-data-leak-report/78891782
5、研究人员发现PACS服务器超过2PB医疗数据可随意访问
https://www.securityweek.com/exclusive-medical-records-35-million-us-patients-can-be-accessed-and-manipulated-anyone
6、川普竞选网站遭黑客入侵被挂索要门罗币页面
https://www.securityweek.com/trump-campaign-website-broken-hackers
7、研究人员发现新的TrickBot Linux变体
https://securityaffairs.co/wordpress/110092/cyber-crime/trickbot-linux-variant.html
8、Enel Group今年遭受了第二次勒索软件攻击
https://securityaffairs.co/wordpress/110067/malware/enel-group-netwalker-ransomware.html
9、FBI称黑客通过SonarQube从美国政府机构和企业组织窃取数据
https://www.bleepingcomputer.com/news/security/fbi-hackers-stole-government-source-code-via-sonarqube-instances/
10、黑客利用"侵犯版权"通知钓鱼窃取Facebook凭证
https://nakedsecurity.sophos.com/2020/10/27/facebook-copyright-violation-tries-to-get-past-2fa-dont-fall-for-it/
网络安全日报 2020年10月28日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、Google从Play商店中删除了21个恶意Android应用
https://thehackernews.com/2020/10/google-android-malwar.html
2、研究人员发现Microsoft 365用户中有97%没有启用MFA
https://threatpost.com/microsoft-365-admins-mfa/160592/
3、Microsoft为Azure引入了新的密码喷涂攻击检测
https://www.securityweek.com/microsoft-introduces-new-password-spray-detection-azure
4、Enel Group今年遭受了第二次勒索软件攻击
https://securityaffairs.co/wordpress/110067/malware/enel-group-netwalker-ransomware.html
5、Fragomen律师事务所数据泄露暴露谷歌员工信息
https://techcrunch.com/2020/10/26/fragomen-data-breach-google-employees/
6、黑客在Harvest Finance盗窃2400万美元后被发现
https://securityaffairs.co/wordpress/110043/cyber-crime/harvest-finance-cyber-heist.html
7、研究人员发现100多个运行ICC PRO的智能灌溉系统可被攻击
https://securityaffairs.co/wordpress/110032/iot/irrigation-systems-exposed-online.html
8、研究人员发现Mirai的新变体-Katana
https://www.darkreading.com/iot/avira-researchers-discover-a-new-variant-of-mirai/d/d-id/1339277
9、Winston Privacy设备中存在漏洞可被远程攻击
https://www.securityweek.com/flaws-winston-privacy-devices-can-expose-networks-remote-attacks
10、亚马逊解雇了一名泄露客户信息的员工
https://threatpost.com/amazon-fires-employee-customer-data/160610/
HDCTF-2nd复盘
HDCTF_2nd, 海南大学校内赛。国庆打的,之前没时间复现。校外人水了个纪念品。感谢Gamous不舍赐教。感动的哭了。比赛的复盘。有些没做出来的阔以看官方wp。题附及官方wp已打包:
蓝奏:
https://wws.lanzous.com/i7HmLhmw18f
百度云:
链接:https://pan.baidu.com/s/1mKWDG-bftD-kPAeZwEUvGw
提取码:bcxv
Web
signin:
打开网页,源代码,base64解码
babysql(ACTF题):
这题。。一开始以为是纯注入,一个一个试'load_file','information_schema'。还过滤了挺多东西的
后来就直接绕过注入,直接select即可。看提示(划线划掉的)也是
查完字段是三个之后,直接查询flag即可
1' union select 1,2,flag from flag#
babyrce(ACTF题):
这题也没啥限制,就是最简单的rce,../ 就返回上级目录,flag就是flag文件。
easygit(ACTF题):
git泄露,github上找个工具,下了源码直接cat flag就好了
backup_file(ACTF题):
index.php.bak,备份文件,根据源码绕过就好了,构造?key=123即可
考点应该是php弱类型
参考别人总结的:https://www.cnblogs.com/Mrsm1th/p/6745532.html
intval函数直接将值转换成数字,即数字跟字符串比较。
传key=123即可绕过限制
easy_file_include(ACTF题):
伪协议直接包含http://8.129.15.153:20005/?file=php://filter/read=convert.base64-encode/resource=flag.php
点击页面的tips,文件包含php伪协议直接尝试即可
do_u_know_HTTP:
提交get参数Hainan_University,然后在post提交HnuSec即可。在根据最后一条,burpsuite抓包加上http头
没啥难的,就按要求提交各类参数就好了。就是post的时候我bp一直不行,用hackbar才可以
erciyuan
看源码,直接跟到最后。先第一步绕过正则即可,^符号取反。就把除了26个大小写字母和数字的其他替换成空
第二个过滤则把HnuSec替换成!。观察前面的hint我们要访问到!HDCTF!.php文件。就构造HnuSecHDCTFHnuSec.php的编码即可绕过
hash_hmac:
观察源码,直接绕过即可。post传x[]=QNKCDZO&y[]=aabg7XSs。给了个 fllllllllllllag.php,访问cat flag
md5弱类型,直接绕过吧
welcome:
猜测弱口令,admin/123456,密码错误左上角弹出密码。输入 cat flag
calculator_v1
flask的一题,下载给的python文件,没做任何过滤。直接cat flag即可
ezflask
给了个参考链接,模板注入。还什么都没过滤。就直接套了wp里的payload。https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A6%E4%BD%A0%E7%90%86%E8%A7%A3%E6%BC%8F%E6%B4%9E%E4%B9%8BSSTI%E6%BC%8F%E6%B4%9E/
{{config.__class__.__init__.__globals__['os'].popen('cat ./flag').read()}}
warmup
getshell
getshell。看过滤。过滤逗号和等号,而后用.来连接前后。
直接把连接前面的闭合掉,在用//注释符把后面注释掉
直接闭合后面也是可以cat flag的,看源码就拿到flag了
dudaima
get给pass传个值,然后反序列化他。就满足if里的条件即可
就可自己测试了。引用赋值和传值赋值参考:https://blog.csdn.net/m15712884682/article/details/77350027
剩下的web题就不咋会了。还有几道flask和反序列化,可以看看官方wp
misc:
签到题:
直接输flag,签到即可。。
一步之遥:
伪加密
改成00打开
你知道lsb是什么意思吗
就lsb低位隐写,存为7z即可
后来保存下来,看到文件较小,也猜到可能是crc32,找工具爆了确实也不是
在比赛中是没想到可能会是纯数字,后来就写个纯数字的爆破脚本即可(脚本来自官方wp)
girlfriend:
导出HTTP对象,选最大的是图片文件。打开看到flag
嘤语:
----- . ----. -... ..--- -... ...-- -.... . . ...-- ...-- -... .---- ...-- ..-. ..-. ----. .- --... ...-- -.. ..-. ....- ....- ----. -... --... --... . ..--- ..-.
http://www.zhongguosou.com/zonghe/moersicodeconverter.aspx
奇怪的字符:
leet,l33t。黑客语言。wiki上找一下。有对照表,也有在线的网站
http://www.englishcn.com/tools/Leet.htm
http://output.jsbin.com/IHoFuQE/1
https://www.dcode.fr/leet-speak-1337
http://www.toolsxx.com/code/1337.html
https://1337.me/
https://www.gamehouse.com/blog/leet-speak-cheat-sheet/
无字天书:
打开文件,文件只由空格,tab,换行组成。可能是white-space
找个在线的网站贴进去可以直接解,或者去gayhub上找个。
https://vii5ard.github.io/whitespace/
ook直接解密就可
https://www.splitbrain.org/services/ook
你真的了解dns吗?:
nslookup -type=txt hdctf.0x00.work,直接看到flag
dns的type表示dns的协议类型
nospace
零度字符隐写
解出来的就是password,密码admin:https://offdev.net/demos/zwsp-steg-js
雪花飘飘
零解一题,看了wp还没给我整懂,问了一下出题人。diff原页面和链接页面。发现换行,考虑网页隐写。使用stegsnow。snow=雪
用在线工具diff即可。
海南上一次下雨时间。
然后就保存题目链接的html文件。
花朵解密,https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=huaduo
海底捞帧预告片
这题感觉不难,就是头大,看了wp还能懂
找到了可以用FFmpeg删除重复帧的命令,和wp一毛一样
问了一下出题人,还给一个用脚本的思路,Hash比较每一帧来筛选。写不来,Ffmpeg天下第一。
删除重复帧之后,提出图片。
最后筛选到4张,但目前无ps就没继续做下去了,拼起来反色即可得到二维码。
专业团队:
分四阶段,主要就是要降噪处理(不知道能不能把抬棺那段分离出来)。还有能听出来DTMF编码。morse降噪完直接看就好了。DTMF不能的话,就手解。降噪完也是能看的,一个是频谱,然后第二个应该是morse,第三个是dtmf 第四个就是流派的flag。连起来就是最后的flag了。
调两个频段之后对着DTMF的表就可以看出来了。用工具解的话有几位是乱了的
瓦斯矿工
很新奇的一道题,虚拟货币相关。
metamask使用可参考:https://zhuanlan.zhihu.com/p/112285438?from_voters_page=true
直接foremost分离图片即可得到一个压缩包,拖进16进制文件里也可以看到有12个50 4B 03 04的PK头
观察到大小较小,直接爆破crc即可,以太坊钱包通过助记词登录。助记词可通过数字查询,这里就只爆破数字。
直接破即可,https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt#L350
以太坊钱包通过BIP-39生成私钥,数字查询助记词。
脚本
import binascii
import zipfile
import time
def crc32asii(v):
return (binascii.crc32(bytes(str(v), encoding='ascii')) & 0xffffffff)
for x in range(1, 10000):
f = zipfile.ZipFile("00000001.zip", "r")
for i in range(1, 13):
GetCrc = f.getinfo(str(i))
crc = GetCrc.CRC
a = ("0x%08x" % crc)
j = crc32asii(x)
if ("0x%08x" % j) == a:
print(i, x)
time.sleep(0.1)
使用助记词登录之后,复制地址,去查询最近的交易记录
详情里得到的直接转字符串得到flag
到点了,上号
出题肯定有故事doge
考点是mp3保留字隐写数据,wp里给了wiki链接https://en.wikipedia.org/wiki/MP3#File_structure
直接拿脚本就出了,未学习原理。
crypto
起源:
应该是凯撒直接解
围住世界:
这题疑惑了挺久的,以为是自己找的网站和软件不对。反反复复里里外外。试了好几个。后来翻看笔记的时候发现可能是w型栅栏密码
http://www.atoolbox.net/Tool.php?Id=777.com
有趣起来了:
就倒序,ctf特训营上有讲的。quiqui也可以做的,前面改成hdctf就好了。顺便把字母改一下即可。
官方wp上给的是用脚本
神秘字符:
一看时候只注意到mc。以为是什么mc的其他版本。就去疯狂google也没找到。后来就翻到mc的wiki。就mc附魔台上的字符,玩过mc的应该都知道,mc wiki上找张对比图,对比就好
https://minecraft-zh.gamepedia.com/Minecraft_Dungeons:%E7%AC%A6%E6%96%87茫茫人海:
base64隐写,跟[ACTF新生赛2020]base64隐写挺像的。反正也是套脚本就好了
奇怪的贝斯:
整不会了这题,抱歉。
具体思路应该就是构造一个码表。\x即是转义字符,方便表示
babyrsa:
https://www.anquanke.com/post/id/87105
这题还好,纯现代密码菜鸡,不过给了pqe。又给了个链接,先求欧拉,然后就n,d,m
#coding:utf-8
from binascii import a2b_hex, b2a_hex
import gmpy2
#flag = "*****************************"
p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551
e = 65533
n = p*q
phi = (p-1)*(q-1)
d = gmpy2.invert(e, phi)
c = 68405618655091231850901459679785989915772760467494039910176075122809565696913
m = pow(c, d, n)
print(m)
#a=(int(str(m),16))
a=191853633260784640753082658319123392799532077630882079100618224148262386737246462849
https://tool.lu/hexconvert/
https://www.bejson.com/convert/ox2str/
Re
sign_up
直接查看字符串就可看到flag
re1
这题比赛的时候看,以为是异或运算+base64换表然后解密,找了半天硬是没找全64个字符。然后就不了了之。Re也不咋会。之后的题可以看官方wp。
pwn
calculator
题目描述:
python2的input执行输入导致rce
先用__import__('os').system('/bin/sh')。直接rce
然后用python -c 'import pty;pty.spawn("/bin/bash");'。获得一个bash的shell
找到之后cat即可
自己写了一个。。发现py直接input就可了
warmup
abs函数是取绝对值的意思。所以不可能小于0。考虑abs负数溢出。就是2的31次方。直接写脚本传就可
backdoor
字符串查看到sh,跟入
继续跟
bash后门
查看buf到r的位置
编写脚本溢出即可
其他pwn题本菜不会,pwn题可以参考某大佬,应该是ak了pwn题的:https://www.cnblogs.com/z2yh/p/13771942.html
相关实验:CTF实验室 https://www.yijinglab.com/pages/CTFLaboratory.jsp
CTF现代密码
前言:
在CTF的密码题目中,RSA以其加密算法之多且应用之广泛,所以在比赛中是最常见的题目。学习密码学并不难,但首先得打好数学基础,并在攻破密码的学习之路上持之以恒。今天我们就来打开RSA加密世界的第一扇门<数论< span="">>。
数论基础:
1.素数
2.公约数与公倍数
3.欧拉函数
4.欧几里得算法
5.扩展欧几里得算法
6.同余
7.模运算
8.逆
9.中国剩余定理
10.逆元与同余式定理
1.素数:
定义:
一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数);否则称为合数。
如:
3×4 = 12,不是素数。
11除了等于11×1以外,不能表示为其它任何两个整数的乘积,所以11是一个素数。
关于素数有以下事实:
(1)如果p是素数,且p | ab(表示ab能被p整除),则p | a或 p | b ,即p 至少整除a与b中的一个。
(2)(算术基本定理)每个整数n ≥ 2 ,均可分解成素数幂之积:
(3)素数有无穷多个。
2.最大公约数与最小公倍数
3.欧拉函数
定义:
性质:
4.欧几里得(Euclid)算法
欧几里得算法又称为辗转相除法,用于求两个数的最大公约数。
原理:GCD(x,y) = GCD(y,x mod y) ,x>y
1.python代码实现
2.python第三方库:
1gmpy2.gcd(a,b) #求a,b的最大公约数
2Crypto.Util.number
5.扩展欧几里得算法
定义:
在已知x,y时,求解一组解a,b,使得ax+by = GCD(x,y)
算法输入:两个正整数x和y
算法输出:x和y的最大公因数gcd(x,y)及满足等式ax+by=gcd(x,y)的整数a和b
python代码实现:
gmpy2库函数gcdext()
6.同余
定义:
设a,b是整数,n≠0,如果n|(a-b),则称a和b模n同余,记为a≡b(mod n),整数n称为模数。
由于n|(a-b) 等价于 -n|(a-b),所以a≡b(mod n) 与 a≡b(mod (-n))等价。因此,一般我们总假定模数n≥1。
同余的性质
性质1:
(1)自反性:a ≡ a (mod m)
(2)对称性:a ≡ b (mod m),↔ b ≡ c (mod m) ↔ a ≡ c (mod m)
性质2:
7.模运算
定义:
a模n的运算给出了a对模n的余数,这种运算称为模运算。注意:模运算的结果是从0到n-1的一个整数。
模运算就像普通的运算一样,它是可交换、可结合、可分配的。而且,对每一个中间结果进行模m运算后再进行模m运算,其作用与先进行全部运算,然后再进行模m运算所得到的结果是一样的。例如:
(a+b)mod m=((a mod m)+(b mod m)) mod m
(a-b)mod m=((a mod m)-(b mod m)) mod m
(a×b)mod m=((a mod m) ×(b mod m)) mod m
(a×(b+c))mod m=((a×b) mod m+(a×c) mod m) mod m
这些性质对于密码学中的数学计算非常的重要,模运算可以将所有中间结果和最后结果限制在一个范围内。对于一个k位的模数n,任何、加、减、乘的中间结果将不会超过2k位长,这样避免了巨大的中间结果,使得计算机能够有效的处理数据。
如:计算(mod n),不要直接进行7次乘法和一个大数的模运算:
(a×a×a×a×a×a×a×a)mod n
相反,应该进行三次比较小的乘法和三次比较小的模化简:
这样就可以避免巨大的中间结果出现。
8.逆
定义:
若m≥1,gcd(a,m)=1,则存在c使得:
ca≡1(mod m)
9.中国剩余定理
中国剩余定理(Chinese remainder theorem,CRT),又称孙子定理,最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》中,为一次同余方程组的起源。
代码实现:
10.逆元与同余式定理
1模运算重要公式:
2威尔逊定理:(wilson’s theorem)
若p为素数,则:(p-1)!≡-1(mod p) ⟹推导:(p-2)!≡1(mod p);
其逆定理同样成立。即:若(p-1)!≡-1(mod p),则p为素数
3二次探测定理:
定义:
若p是素数且 0<< span="">x<< span="">p,则 ≡1(mod p)仅有的两个解为:x=1或x=p-1
证明:由于≡1(mod p),所以:-1≡0(mod p),即(x+1)(x-1)≡0(mod p)
4费马小定理(Fermat):
5欧拉定理(Euler):
若a与m互质,则:
后记:
数论基础的知识点比较杂乱繁多,这篇文章写的时候尽可能的去精简了,其中的定理及公式是必须要牢记于心的,后面的RSA加密算法的讲述中我会介绍定理及公式在RSA中的应用。
学习完数论基础后,后面我们将开始学习RSA的常见攻击算法及加密原理,以及各种工具的使用和python第三方库的函数调用。
相关实验--https://www.yijinglab.com/pages/CTFLaboratory.jsp
https://www.yijinglab.com/pages/CTFLaboratory.jsp
这可能是最适合萌新入门Web安全的路线规划
最近在后台经常收到粉丝问,Web安全有没有什么路线。确实,Web安全的范围实在太大,哪些先学,哪些后学,如果没有系统的路线会降低大家效率,对于刚入门的同学们来说简直就是“噩梦”。所以,这篇类似学习路线的文章,希望可以帮助刚入门的萌新们少走弯路。(文末附学习资料及工具领取)
首先我们来看看企业对Web安全工程师的岗位招聘需求是什么?
1 职位描述
对公司各类系统进行安全加固;
对公司网站、业务系统进行安全评估测试(黑盒、白盒测试)
对公司安全事件进行响应、清理后门、根据日志分析攻击途径
安全技术研究,包括安全防范技术、黑客技术等;
跟踪最新漏洞信息,进行业务产品的安全检查。
2 岗位要求
熟悉Web渗透测试方法和攻防技术,包括SQL注入、XSS跨站、CSRF伪造请求、命令执行等OWSP TOP10 安全漏洞与防御;
熟悉Linux、Windows不同平台的渗透测试,对网络安全、系统安全、应用安全有深入理解和自己的认识;
熟悉国内外安全工具,包括Kali、Linux、Metasploit、Nessus、Namp、AWVS、Burp等;
对Web安全整体有深刻理解,有一定漏洞分析和挖掘能力;
根据岗位技能需求,再来制定我们的学习路径,如下:
01 Web安全学习路径
01 HTTP基础
只有搞明白Web是什么,我们才能对Web安全进行深入研究,所以你必须了解HTTP,了解了HTTP,你就会明白安全术语的“输入输出”。黑客通过输入提交“特殊数据”,特殊数据在数据流的每个层处理,如果某个层没处理好,在输出的时候,就会出现相应层的安全问题。关于HTTP,你必须要弄明白以下知识:
HTTP/HTTPS特点、工作流程
HTTP协议(请求篇、响应篇)
了解HTML、Javascript
Get/Post区别
Cookie/Session是什么?
02 了解如下专业术语的意思
Webshell
菜刀
0day
SQL注入
上传漏洞
XSS
CSRF
一句话木马
......
03 专业黑客工具使用
熟悉如何渗透测试安全工具,掌握这些工具能大大提高你在工作的中的效率。
Vmware安装
Windows/kali虚拟机安装
Phpstudy、LAMP环境搭建漏洞靶场
Java、Python环境安装
子域名工具 Sublist3r
Sqlmap
Burpsuite
Nmap
W3af
Nessus
Appscan
AWVS
04 XSS
要研究 XSS 首先了解同源策略 ,Javascript 也要好好学习一下 ,以及HTML实体 HTML实体的10 或16进制还有Javascript 的8进制和16进制编码,最终掌握以下几种类型的XSS:
反射型 XSS:可用于钓鱼、引流、配合其他漏洞,如 CSRF 等。
存储型 XSS:攻击范围广,流量传播大,可配合其他漏洞。
DOM 型 XSS:配合,长度大小不受限制 。
05 SQL注入
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。你需要了解以下知识:
SQL 注入漏洞原理
SQL 注入漏洞对于数据安全的影响
SQL 注入漏洞的方法
常见数据库的 SQL 查询语法
MSSQL,MYSQL,ORACLE 数据库的注入方法
SQL 注入漏洞的类型:数字型注入 、字符型注入、搜索注入 、盲注(sleep注入) 、Sqlmap使用、宽字节注入
SQL 注入漏洞修复和防范方法
一些 SQL 注入漏洞检测工具的使用方法
06 文件上传漏洞
了解下开源编辑器上传都有哪些漏洞,如何绕过系统检测上传一句话木马、WAF如何查杀Webshell,你必须要掌握的一些技能点:
1.客户端检测绕过(JS 检测)
2.服务器检测绕过(目录路径检测)
3.黑名单检测
4.危险解析绕过攻击
5..htaccess 文件
6.解析调用/漏洞绕过
7.白名单检测
8.解析调用/漏洞绕过
9.服务端检测绕过-文件内容检测
10.Apache 解析漏洞
11.IIS 解析漏洞
12.Nginx 解析漏洞
07 文件包含漏洞
去学习下 include() include_once() require() require_once() fopen() readfile() 这些php函数是如何产生文件包含漏洞, 本地包含与远程包含的区别,以及利用文件包含时的一些技巧如:截断 /伪url/超长字符截断等 。
08 命令执行漏洞
PHP代码中常见的代码执行函数有:
eval(), assert(), preg_replace(), call_user_func(), call_user_func_array(),create_function(), array_map()等。
了解这些函数的作用然后些搞清楚如何造成的代码执行漏洞。
09 CSRF 跨站点请求
为什么会造成CSRF,GET型与POST型CSRF 的区别, 如何防御使用 Token防止CSRF?
010 逻辑漏洞
了解以下几类逻辑漏洞原理、危害及学会利用这几类漏洞:
信息轰炸、支付逻辑漏洞、任意密码修改、越权访问、条件竞争、任意注册、任意登录、顺序执行缺陷、URL跳转漏洞.
011 XEE(XML外部实体注入)
当允许XML引入外部实体时,通过构造恶意内容,可以导致文件读取、命令执行、内网探测等危害。
012 SSRF
了解SSRF的原理,以及SSRF的危害。
SSRF能做什么?当我们在进行Web渗透的时候是无法访问目标的内部网络的,那么这个时候就用到了SSRF漏洞,利用外网存在SSRF的Web站点可以获取如下信息。
1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
2.攻击运行在内网或本地的应用程序(比如溢出);
3.对内网Web应用进行指纹识别,通过访问默认文件实现;
4.攻击内外网的Web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
5.利用file协议读取本地文件等。
如果上述漏洞原理掌握的都差不多那么你就算入门Web安全了。
网络安全日报 2020年10月27日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、美国制裁开发Triton的俄罗斯研究所
https://www.securityweek.com/us-treasury-sanctions-russian-institute-linked-triton-malware
2、即时通讯应用中链接预览存在隐私风险
https://thehackernews.com/2020/10/mobile-messaging-apps.html
3、英国餐馆Nando客户受到凭证填充攻击
https://www.infosecurity-magazine.com/news/nandos-customers-hit-credential/
4、印度报业托拉斯遭到勒索软件攻击
https://www.thehindubusinessline.com/info-tech/pti-services-disrupted-after-massive-ransomware-attack-on-servers/article32940254.ece
5、芬兰心理治疗中心Vastaamo遭入侵导致数据泄露
https://www.securityweek.com/private-psychotherapy-notes-leaked-major-finnish-hack
6、Nitro PDF遭受严重数据泄露影响包括Apple,花旗银行,谷歌等公司
https://securityaffairs.co/wordpress/110025/data-breach/nitro-pdf-data-breach.html
7、安全专家发现了一个新的僵尸网络KashmirBlack
https://securityaffairs.co/wordpress/110014/cyber-crime/kashmirblack-botnet.html
8、TikiWiki身份验证绕过漏洞使攻击者可以完全控制网站
https://portswigger.net/daily-swig/tikiwiki-authentication-bypass-flaw-gives-attackers-full-control-of-websites-intranets
9、研究人员警告AI安全系统存在漏洞
https://www.zdnet.com/article/australian-and-korean-researchers-warn-of-loopholes-in-ai-security-systems/
10、HPE修复了SSMC控制台中的严重身份验证绕过漏洞
https://securityaffairs.co/wordpress/109962/security/ssmc-critical-auth-bypass-issue.html
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页 第208页 第209页 第210页 第211页 第212页 第213页 第214页 第215页 第216页 第217页 第218页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

