记事本

Blinded by the light

http://www.wechall.net/challenge/blind_light/index.php 这道题是盲注,32位的HEX,正好用了128次query 下面是python代码 #!/usr/bin/env python2import urllibimport urllib2def makePayload(statement): return "' or substr...

Tryouts

http://www.wechall.net/challenge/warchall/tryouts/index.php 用IDA反汇编,基本上了解了题意。最初的想法比较直接:从随机数下手。但根据后来在网上搜到的情况,/dev/urandom虽然不是那么随机,但熵基本上还是足够的 仔细阅读反汇编得到的C代码,发现了以下不自然的地方: snprintf((char *)&v16, 0...

Time to Reset

http://www.wechall.net/challenge/time_to_reset/index.php 最初的想法还是和注入有关,试了几次发现邮件地址不能包含特殊字符…… 再从头开始看代码,发现了不自然的地方: 提交email的表格里有CSRF的token,感觉似乎在见过的题目里并不常见;其实这也还说得过去,但是token的生成方式太可疑了,用的是和reset token同样的函...

Live LFI&RFI

http://www.wechall.net/challenge/warchall/live_rfi/index.php http://www.wechall.net/challenge/warchall/live_lfi/index.php 这两题类似,都是文件包含,参数lang可以传文件名 LFI那里,直接访问solution.php,有两行:teh falg si naer, the...

Table Names II

http://www.wechall.net/challenge/nurfed/more_table_names/index.php 这道题里有黑名单过滤,在网上搜到了解答…… information_schema.processlist里有db,还有info是当前的query

Screwed Signup

http://www.wechall.net/challenge/screwed_signup/index.php 这道题比较有意思 经过一番尝试,发现了代码中不一致的地方:SQL table里username最多24个字符,但是preg_match检查时可以最多到64个。于是这里可能造成截断…… 另一个不协调的地方是signupGetUser。可以看到,在另一个函数里检查了密码,但取用...

MD5.SALT

http://www.wechall.net/challenge/MD5.SALT/index.php 首先注册了一个密码为空的用户。尝试发现似乎是执行两次SQL query,首先是取用户名,再对得到的行检查密码。 因为用了salt,我们先取出。因为注册的密码是空,所以计算得到的hash就是md5(salt): username=' union select password,passwo...

Crappyshare

http://www.wechall.net/challenge/crappyshare/index.php 检查代码,发现如果是通过url,会将文件内容也输出来。为了读取本地文件,我们用file://协议 file://solution.php

Addslashes

http://www.wechall.net/challenge/addslashes/index.php SQL宽字符注入,username=a%bf'%20union%20select%200x41646d696e--%20

Yourself PHP

http://www.wechall.net/challenge/yourself_php/index.php/asdf 因为username被转义了,不能在这注入 但是_$SERVER['PHP_SELF']被直接输出,而且这道题的标题就暗示了要从这里入手 http://www.wechall.net/challenge/yourself_php/index.php/"...