web2 http://120.24.86.145:8002/web2/
F12查看源代码就可以找到了。
文件上传测试 http://103.238.227.13:10085/
打开以后,看到要求有两点,如下:
有两点要求:
- 1.要求是PHP文件
- 2.文件大小不超过1M
猜测,是检测图片头的,从png里面把最前面的内容粘贴到PHP文件中,后面附上php的代码。
文件大小两个k , 两个要求都满足了,上传。
失败,抓包测试。
修改Content-Type: 为:image/png提交
计算题 http://120.24.86.145:8002/yanzhengma/
打开界面看到这个,计算出结果以后,发现,输入框只让填写一个数字,心想是js前端验证,burp抓包修改数值就行了吧。
发现根本没有发送数据包,那flag肯定在js里面
Web基础$_GET http://120.24.86.145:8002/get/
看到关键代码,直接get提交一个’flag’即可
web基础$_POST http://120.24.86.145:8002/post/
跟上面那个GET的一样,很基础
矛盾 http://120.24.86.145:8002/get/index1.php
这个题两个要求:
- 1.$num 不是integer类型的数据
- 2.$num 要等于1
考到的点是PHP的弱数据类型,payload : 1e0
PHP在做数据转换的时候会自动向高精度转化,然后就变成了1e0 这个是科学计数法,其值刚好等于1.(但是:1e0是integer类型的)
Web3 http://120.24.86.145:8002/web3/
web3的提示:
估计是flag 放在了html里面,然后打开:
弹了好多框,弹框貌似点不完,直接在URL前面加上view-source:即可,当然禁用JS之后查看源代码也行
html实体编码,直接创建一个html文件,把这段字符放进去用浏览器打开就行了。
sql注入 http://103.238.227.13:10083/
提示注入,但是打开页面以后,在id后面添加任何东西都没有反应,之前见过id=100之前的页面都错误,id=101时给出其他提示的题目,测试后也没发现有其他提示,但是发现了:
id = 0 或者 1 的时候页面显示正常,id是其他值的时候,页面均是错误的。
后来百度了一下,是宽字节注入,可能自己对宽字节注入知识掌握的不够。
宽字节注入产生的原理:在开启转义时,单引号会被转义成\’ ,当数据库字符集是gbk的时候,可以用%df等宽字节来将单引号前的\来抹去,从而闭合单引号。
构造正确页面:
http://103.238.227.13:10083/index.php?id=1%df'--+
这里要注意,在注入的时候,sql的注释符 尽量用–+ 或者 %23 ,因为有时候–会被数据库认为是减号。–后加任意一个非空格字符则表示为注释符号。
然后直接扔到sqlmap即可。
http://103.238.227.13:10083/index.php?id=1%df'*--+
注入语句加在*位置
SQL注入1 http://103.238.227.13:10087/
页面中附上了一段代码
1 | //过滤sql |
其中过滤了很多sql注入的关键词,但是在xss过滤时候使用了strip_tags函数,这个函数的作用是把<>替换为空,那么sele<>ct就可以绕过关键字过滤。
payload:
http://103.238.227.13:10087/?id=1 uni<>on sel<>ect 1,hash fr<>om sql3.key %23
其中 key 要改成 数据库名.key 否则返回错误,可能当前页面和key不在同一数据库吧。