一、第29题login1(SKCTF)
打开题目,发现是一个管理登入界面。且题目提示我们这是到sql约束攻击的题目。
那么我们先简单介绍下什么是sql约束攻击
(1)、约束SQL注入的原理就是利用的约束条件,比如最长只能有10个字符的话,如果你输入的是aaaaaaaaaabb(12位),那么保存在数据库里的就是aaaaaaaaaa(10位),那么别人用aaaaaaaaaabb注册一个用户名,就可以登陆。
(2)、还有一个可以利用的地方就是SQL在执行字符串处理的时候是会自动修剪掉尾部的空白符的,也就是说”abc”==”abc “,同样我们可以通过注册用户名为”abc “的账号来登陆”abc”的账号。
我们先注册下,账号为admin,密码随意,发现用户已经存在,那么我们使用账号为admin+一个空格,密码任意,注册,然后登入发现,成功得到flag.
二、第30题(你从哪里来)
打开题目发现,题目有一行字,你来着Google吗。
那么我们应该想到http头部的referer参数
referer参数的作用简单说就是告诉服务器我是从哪个页面链接过来的
我们抓包添加referer参数即可得到flag。
三、第31题(md5 collision)
打开题目,题目要求我们传输参数a,我们传入参数a的值为1,发现输错false.
那么我们考虑题目所提到的MD5碰撞,首先我们先介绍下什么是MD5碰撞
PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
攻击者可以利用这一漏洞,通过输入一个经过哈希后以”0E”开头的字符串,即会被PHP解释为0,如果数据库中存在这种哈希值以”0E”开头的密码的话,他就可以以这个用户的身份登录进去,尽管并没有真正的密码。
下面是常见的
0e开头的md5和原值:
0e开头的md5和原值:
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s155964671a
0e342768416822451524974117254469
s1184209335a
0e072485820392773389523109082030
s1665632922a
0e731198061491163073197128363787
s1502113478a
0e861580163291561247404381396064
s1836677006a
0e481036490867661113260034900752
s1091221200a
0e940624217856561557816327384675
s155964671a
0e342768416822451524974117254469
s1502113478a
0e861580163291561247404381396064
s155964671a
0e342768416822451524974117254469
s1665632922a
0e731198061491163073197128363787
s155964671a
0e342768416822451524974117254469
s1091221200a
0e940624217856561557816327384675
s1836677006a
0e481036490867661113260034900752
s1885207154a
0e509367213418206700842008763514
s532378020a
0e220463095855511507588041205815
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s214587387a
0e848240448830537924465865611904
s1502113478a
0e861580163291561247404381396064
s1091221200a
0e940624217856561557816327384675
s1665632922a
0e731198061491163073197128363787
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s1665632922a
0e731198061491163073197128363787
s878926199a
更多的大家可以自己去百度
上面的那些0E开头的字符串都可以作为参数的值传入,如
http://123.206.87.240:9009/md5.php?a=s878926199a
四、第32题(程序员本地网站)
打开题目发现,题目里写着请从本地访问。
那么我们应该想到http头部的X-Forwarded-For参数
我们先介绍下X-Forwarded-For参数
X-Forwarded-For: 简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。
我们抓包进行添加X-Forwarded-For参数,即可得出flag
五、第33题(各种绕过哟)
进入这道题我们通过阅读php代码,我们发现只要使uname的sha1和值与passwd的sha1的值相等即可,但是同时他们两个的值又不能相等,我们尝试构造数组。
成功得出flag
六、第34题(web8)
根据题目提示的txt.并且分析源码
我们可以得出以下几点有用信息
1、f的值从fn文件中取出
2、ac的值和类型与f的值和类型完全相等时,即可得出flag
寻找flag,
http://123.206.87.240:8002/web8/flag.txt
可以看出flag.txt的文件的内容为flags
那么我们让fn指向flag.txt文件,ac为该文件的内容;
构造payload
http://123.206.87.240:8002/web8/?ac=flags&fn=flag.txt
七、第35题(细心)
首先打开题目发现是一个404 not found 查看源码并没有什么发现。
想到题目的提示 想办法变成admin,那么我们使用御剑工具扫描下后台,发现robots.txt文件
robots.txt文件简单说就是网络爬虫规则
访问robots.txt文件,发现resusl.php文件
访问resusl.php文件发现,题目提示我们不是管理员,需要传入参数x
那么我们传入参数x=admin
八、第36题(求getshell)
把请求头里面的Content-Type字母改成大写进行绕过
- .jpg后面加上.php5其他的都被过滤了好像
- content-Type的值改为image/jpg(题目要求我们传入image)
如果是walf严格匹配,通过修改Content-type后字母的大小写可以绕过检测,使得需要上传的文件可以到达服务器端,而服务器的容错率较高,一般我们上传的文件可以解析。然后就需要确定我们如何上传文件,在分别将后缀名修改为php2, php3, php4, php5, phps, pht, phtm, phtml(php的别名),发现只有php5没有被过滤,成功上传,得到flag