1、成绩单
看见成绩查询就想到了sql注入,输入1‘无成绩显示,存在注入点
检测字段数:
字段数为4
然后找到当前使用的数据库:
找表:
第一次直接将skctf_flag放上去,没有回显
将skctf_flag转换为16进制0x736b6374665f666c6167
找列:
最后查询到内容:
2、web6
抓包
flag base64解码后还是base64的字符,再解码得到一串数字:752690,所以要把这个数字post上去,所以写python脚本
3、cookies欺骗??
根据url可以看到网页是一个读取文件,filename经过base64编码,解码后发现是"flag.txt",猜测有文件包含漏洞,尝试更改file的值为“index.php”的base64编码,网页一片空白,更改line的值发现,line指的行,写个程序拿到index.php的源码
获得的index.php源代码
根据代码内容,就是在cookie中加上margin,把keys.php加入文件列表,然后申请读取keys.php的内容
4、xss
查看源代码:
在网上查一下document.getElementById('s').innerHTML = s的意思:设置或获取某一Id的节点里面所包含的HTML代码
需要的是可以从注入点id进入的方法,采用img标签法,构造:
http://103.238.227.13:10089/?id=<img src=1 onload=alter(key_)/>
但是存在回显,说明存在xss filter,传参字符串中存在被屏蔽的词
一般可能的是alter,但是题目要求存在alter,顾考虑第二个可能点<>
尝试使用转义符号:
发现对<>不起作用
所以阻挡点就是<>
因为页面编码是utf-8,id传入代码会在s中运行,考虑将<>进行unicode编码,这样当代码被替换进去运行时,utf-8又会将其变回来
\u003c代表<
\u003e代表>
构造payload:
http://103.238.227.13:10089/?id=\u003cimg%20src=1%20onload=alert(_key_)/\u003e
另一种操作(跟大佬学的):
题目已经提示了插入一段XSS代码,首先查看源代码,发现只有给s和id变量赋值
先给id赋值:
id=<script>alter(123)</script>
发现:
所以将<>进行unicode编码
构造payload:
view-source:http://103.238.227.13:10089/?id=\u003cscript\u003ealert(_key_)\u003c/script\u003e