iscc 2018 部分题解wp(更新中)
WEB1 比较数字大小
看一下源代码:发现 输入的值只能为3 那么就改大一点吧
得到flag
WEb2
首先先看一下那个代码吧
发现是一个strcmp 函数 只需要传递一个password 过去那么构造为 password[]=abc就可以绕过了
本地诱惑
点进去看了一下
首先还是看一下源代码
发现了flag
你能跨过去吗?
首先进行URL解码 去除不必要的字符,截取一段base64解码获得:alert("key:/%nsfocusXSStest%/")<
将key填入后提交获得flag
一切都是套路
看到提示了。好像有个文件忘记删了
请ping我的ip 看你能Ping通吗?
看了一下是一个命令执行
Please give me username and password!
继续更新
昨天是打红帽杯耽误了,红帽杯线下的AWD 实在是大佬太多了!!!!!!!!
然后没时间去写WP ,就叫老虎发了一份给我。下面的这些是china.H.L.B 的WP 发给大家看看吧
你能绕过吗?
随便点一个,如下图所示;
把id=2,修改成6668952,如下图所示;
发现id后没有过滤,所以尝试文件包含漏洞,读取包含flag的文件,如下图所示;
这个是base64的弄到一个页面
web02
题目链接中文字中有本机链接,所以抓包修改http请求头,如下图所示;
Client-IP:127.0.0.1
点击Intercept is on 放包,如下图所示;
查看网页,如下图所示;
SQL注入的艺术
点击个人信息,如下图所示;
把链接放入sqlmap,尝试注入,如下图所示;
发现是宽字符注入并且提示有WAF,所以更尝试绕过WAF,如下图所示;
sqlmap -u “http://118.190.152.202:8015/index.php?id=1“ —tamper unmagicquotes.py —batch -v 3 —level 3 –dump
试试看
打开链接,如下图所示;
在img=的地方,测试是否有文件包含漏洞,如下所示;
发现有文件包含漏洞,如图形所示;
A. payload,如图下所示;
B. 证明存在的文件包含漏洞,如图下所示;
(4) 构造payload,如图下所示;
(5) 打开网页后是空白,如图下所示;
(6) 打开网页源码,如图下所示;
Collide
打开链接发现是代码审计题目,如下图所示;
(2) 审计源码后,使用HashPump攻击;
(3) 安装HashPump;
A.方法一:
git clone https://github.com/bwall/HashPump.git
apt-get install g++ libssl-dev
cd HashPump
make
make install
B.方法二:
pip install hashpumpy
(4) 运行HashPump并且将x替换成%后用hacbar urldecode,如下图所示;
(5) 运行hackbar,如下图所示;
(6) 用burp截包改md5值,如下图所示;
Only admin can see flag
(1) 打开题目链接,发现只有一个登录对话框。如下图所示;
(2) 查看源码,发现有一个index.txt的提示,如下图所示;
(3) 打开index.txt,审计源码,发现是CBC反转漏洞,如下图所示;
(4) 下面介绍一下CBC字节翻转攻击的原理,如下图所示;
(5) 如上图所示,CBC加密的原理图;
A. Plaintext:待加密的数据。
B. IV:用于随机化加密的比特块,保证即使对相同明文多次加密,也可以得到不同的密文。
C. Ciphertext:加密后的数据。
D. 在这里重要的一点是,CBC工作于一个固定长度的比特组,将其称之为块。在本文中,我们将使用包含16字节的块。
(6) 整个加密的过程简单说来就是;
A.首先将明文分组(常见的以16字节为一组),位数不足的使用特殊字符填充。
B.生成一个随机的初始化向量(IV)和一个密钥。
C.将IV和第一组明文异或。
D.用密钥对C中xor后产生的密文加密。
E.用D中产生的密文对第二组明文进行xor操作。
F.用密钥对E中产生的密文加密。
G.重复E-G,到最后一组明文。
H.将IV和加密后的密文拼接在一起,得到最终的密文。
从第一块开始,首先与一个初始向量iv异或(iv只在第一处作用),然后把异或的结果配合key进行加密,得到第一块的密文,并且把加密的结果与下一块的明文进行异或,一直这样进行下去。因此这种模式最重要的特点就是:
(7) 前一块的密文用来产生后一块的密文,如下图所示;
(8) 这是解密过程,解密的过程其实只要理解了加密,反过来看解密过程就也很简单了,同样的,前一块密文参与下一块密文的还原。
A.从密文中提取出IV,然后将密文分组。
B.使用密钥对第一组的密文解密,然后和IV进行xor得到明文。
C.使用密钥对第二组密文解密,然后和2中的密文xor得到明文。
D.重复B-C,直到最后一组密文。
(9) 这幅图是我们进行翻转攻击的原理图:
这里可以注意到前一块Ciphertext用来产生下一块明文,如果我们改变前一块Ciphertext中的一个字节,然后和下一块解密后的密文xor,就可以得到一个不同的明文,而这个明文是我们可以控制的。利用这一点,我们就欺骗服务端或者绕过过滤器。
(10) 在登录对话框随意输入一个帐号和密码并且使用bp抓包,如下图所示;
(11) 查看返回包,如下图所示;
(12) 使用脚本进行反转,如下图所示;
(13) bp中的cookie中设置iv和翻转后的cipher并且把post值清空后提交,如下图所示;
(14) 返回结果如下图所示;
(15) 服务器提示反序列化失败,但是其实我们这个时候只要对这个进行base64解码就会发现,我们的username已经变成了admin;原因是在我们为了修改mdmin为admin的时候,是通过修改第一块数据来修改的,所以第一个块数据被破坏了。因为程序中要求username要等于admin所以不能利用文章里的说的填充字符。 又因为是第一个块数据被破坏,第一个块数据是和IV有关,所以只要将在CBC字符翻转攻击,得到新的IV就可以修复第一块数据。如下图所示;
(16) 把得到的数值替换iv,cipher不动然后提交。如下图所示;
PHP是世界上最好的语言
这个其实可以扫描的。也可以用0e 绕过
(1) 打开链接发现是代码审计,如下图所示;
(2) 使用扫描器扫描,发现有no_md5.php文件。如下图所示;
(3) 审计题目所给的源码,发现是文件包含。如下图所示;
(4) 所以这样构造语句,如下图所示:
/no_md5.php?a=GLOBALS
Only Admin
(2) 使用扫描器扫描一下,发现了备份文件。如下图所示;
(3) 把备份文件解压缩,如下图所示;
(4) 打开config.php发现了需要审计的代码,如下图所示;
(5) 在登录对话框的email地方输入’ or 1#并且随意输入password,如下图所示;
(6) 点击login,如下图所示;
(7) 运行脚本写入cookie中,如下图所示;
(8) 脚本运行后会在cookie中增加一条如下图所示;
(9) 打开审核元素,如下图所示;
为什么这么简单啊
(1) 打开链接发现是一个闯关,如下图所示;
(2) 看到了这俩个要素,如下图所示;
’
(3) 这点就类似于DDCTF 2018里边的web题目了,使用BurpSuite抓包并且修改HTTP头,如下图所示;
(4) 点击GO,得到的返回结果如下图所示;
(5) 得到第二关地址并且发现需要输入密码才可以获取flag,如下图所示;
(6) 点击鼠标右键选择查看网页源代码,如下图所示;
'
(7) 点击源代码中的./password.js,如下图所示;
(8) 发现一段base64代码,如下图所示;
(9) 进行base64解密,如下图所示;
(10) 输入密码并且点击获取flag,如下图所示;
Sqli
(1) 打开链接发现是一个登陆对话框,如下图所示;
(2) 使用BurpSuite抓包,如下图所示;
(3) 在登录对话框的username输入:-1’ OR (1=1*) or ‘,password输入x,如下图所示;
(4) 把抓包内容保存成TXT,如下图所示;
(5) 使用sqlmap注入,如下图所示;
A. 注入命令语句,如下图所示;
B. 注入结果,如下图所示;
有种你来绕
(1) 打开链接发现是一个登陆对话框,如下图所示;
(2) 使用BurpSuite抓包并且登录尝试,如下图所示;
(3) 通过返回结果得到用户名是admin,如下图所示;
(4) 使用BurpSuite抓包并且进行注入,如下图所示;
(5) 返回结果如下图所示:
(6) 使用脚本跑密码,如下图所示;
(7) 得到password密码为:nishishabi1438
(8) 使用帐号密码登录,如下图所示;
(9) 输入flag获取flag,如下图所示;