分享一下本人做题记录,不足之处多多指正。
Sql注入1:
看代码一个循环把select,from,where都给过滤了…要查肯定要用这些语句啊,对怎么绕过毫无思路,只好去网上查,才知道底下xss不是白给的,在关键词中间加html的标记<>,xss的时候再还原回去(知道了一个新套路…)
要求查询key表id=1的hash字段,所以提交?id=1 un<br>ion sel<br>ect1,hash fro<br>m key where id=1%23 ,发现啥都没有,可能又是这个key表作祟,这个表名正好是key就容易出问题,和昨天的题一样key用``包裹一下,重新提交:
?id=1 un<br>ion sel<br>ect1,hash fro<br>m `key` where id=1%23
得到了key:
你必须让他停下:
打开链接发现一直在刷新界面,提示让它停下来,看源码有个间隔多少毫秒就刷新界面的语句,也没法停止,直接上burp抓包,抓包发到repeater,go一下没有flag,再go几下就出来了…(也不知道是什么原理)
本地包含:
看代码有个flag.php,既然本地包含那flag肯定在这个php文件里,要查看文件内容百度了一下有个file_get_contents函数,这里接受表单提交的hello值,还有个eval,所以就把hello赋值成查看文件的命令,var_dump()打印。
提交?hello=file_get_contents(%27flag.php%27),发现显示了个string(84),flag呢… 一查原来file_get_contents把文件内容放进了一个字符串,查看一下源代码就找到了flag:
变量1:
提示flag在变量里,看代码是接受表单的args变量,有这样一行代码:
eval("var_dump($$args);");
把args的值解释成变量名打印,猜想应该通过这个打印出flag,也不知道什么变量啊,百度一下php内置变量,发现了这个:
直接提交?args=GLOBALS,就得到了flag:
秋名山老司机:
打开发现让计算一大长串式子值2s内提交,毫无疑问肯定是写脚本解决的不可能手算再提交,写段python脚本(网络安全实验室做过类似题,脚本中用正则提取算术表达式还有点糊涂,照着改了改…)其中那个post提交,把结果赋给value这个变量提交,value这个词我试了好久…
运行结果:(原来你也是老司机…)
Web4:
提示查看源代码,看源代码发现了一串%+数字的编码,看到有个unescape方法,去查了一下是一种编码,在线翻译,得到结果如下:
输入password提交,不可以,输入‘’‘’里一长串字符,就得到了flag:
Web5:
查看源代码发现和上题类似只不过这次的编码很恶心,查了半天也没找到解码的工具,百度看到别的wp上写着直接放到chrome的console…得到了flag:
flag在index里:
提示flag在index.php里,但是源码都没有index.php的影子,看源码有file=show.php,应该是文件包含漏洞,用filter那个,得到base64编码的字符:
解码就得到了flag。
请输入密码:
让输入五位数密码,直接burp爆破,得到flag:
前女友:
打开链接,发现是个找代码漏洞的,要求提交的v1和v2不同但判断md5编码后的相同,查了一下是QNKCDZO和240610708,v3必须经过strcmp判断和flag相同,利用strcmp数组和字符串判断总是相等的漏洞,提交?v1=240610708&v2=QNKCDZO&v3[]=1,得到flag:
Javascript:
看界面是要点击1000000次,看代码里面clicks>=1000000时通过post提交一个表单,内容为clicks=***,所以直接post提交就可以了,利用火狐hackbar,得到flag:
听说备份是个好习惯:
打开解题链接发现就是一长串字符,什么都没有,没有什么思路,这题只好贴到百度查的…wp上写着用王一航大佬的脚本爆得获得源码的地址:
http://120.24.86.145:8002/web16/index.php.bak
去这个地址下载源码,发现是类似上面题的漏洞,利用QNKCDZO和240610708,但是前面把key替换成了空,提交必须提交key1=QNKCDZO&key2=240610708,可以使用kkeyey这种方法,提交?kkeyey1=QNKCDZO&kkeyey2=240610708得到flag:
成绩单:
看到这个题肯定是注入类型的,用’验证果然是,然后开始老步骤,查所有数据库的名字:(测试出select后字段数是4)
payload:' union select 1,1,1,schema_name frominformation_schema.schemata#
发现给了一行information_schema,啥用也没有,应该是只能显示一行内容,困在这里只好去看wp,发现wp用了select 1,1,1,database()#就把需要的数据库名字查了出来,数据库名字是skctf_flag(不懂为啥),然后接着查表:
Payload:union select 1,table_name,1,1 from information_schema.tables wheretable_schema='skctf_flag' #
查到表是fl4g,去查列:
Payload:'unionselect 1,column_name,1,1 from information_schema.columns wheretable_schema='skctf_flag' and table_name='fl4g'#
查到skctf_flag列,然后去直接去查flag:
Payload:'union select1,1,1,skctf_flag from fl4g#
查到flag:
Web6:
提示快点,应该是需要抓包获取信息,抓到包发到repeater发现了一个flag:后面跟一串字符,‘=’结尾考虑base64解码,解码后是:
跑的还不错,给你flag吧: NjkwNjc2
这肯定不是flag… 再用base64解码,是690676,然后这应该不能再解码了,源代码说让把你发现的margin用post提交,用hackbar提交,然而还是提示再快… 抓了好几个包,发现包里flag:后的内容是不一样的,所以还要写脚本来重复上述过程,得到flag:
Cookie欺骗:
点开链接发现自动提交了表单,filename=一个base64编码的文件名字,line应该是第几行的意思,所以要获得index.php的代码才能做题,用脚本一行一行获得index.php的代码:
运行结果:
然后阅读代码发现必须输出keys.php文件内容才能得到key,而就需要一个margin=‘margin’的cookie,所以去抓包改一下(把文件名改成key.php对应的base64编码):
Xss测试:
Xss还没有学… 所以先去看了看xss的基础知识,然后做题,照猫画虎构造一个js脚本,因为要含这个alert(_key_),所以就构造id=<script>alert(_key_);</script>,然后发现没什么卵用,把我这代码没有执行而是当字符串在网页打了出来,看源代码好像被转义了,然后就不会了,只好去百度,wp上写着要用js对尖括号转义方式进行转义,所以照着试了试得到了flag: